Programando a Raspberry Pi Pico no Visual Studio Code

Programando a Raspberry Pi Pico no Visual Studio Code 13

O mais recente lançamento da Fundação Raspberry Pi deixou toda a comunidade maker entusiasmada. A Raspberry Pi Pico é uma placa de desenvolvimento que conta com o microcontrolador RP2040 – o qual possui dois núcleos ARM Cortex-M0+ com um clock de até 133 MHz – memória RAM de 256 KB e memória Flash de 2 MB. O mais legal é que ela aceita duas linguagens de programação: Python e C/C++! Veja o passo-a-passo de programando a Raspberry Pi Pico.

Programando a Raspberry Pi Pico no Visual Studio Code

O post de hoje vai te ajudar a dar os primeiros passos com C/C++ na Raspberry Pi Pico utilizando o Visual Studio Code.

O que é o Visual Studio Code?

O VS Code é um editor de código multiplataforma criado pela Microsoft, que está disponível tanto para Windows quanto para Mac OS e Linux. Com o Visual Studio Code você pode construir programas utilizando diferentes linguagens de programação (Python, Ruby, C/C++) e diferentes placas de desenvolvimento, incluindo a Raspberry Pi Pico.

Além de ser um software totalmente gratuito, o VS Code também é open-source. Seu código está disponibilizado no GitHub, permitindo assim que a comunidade técnica possa contribuir com seu desenvolvimento, facilitando a criação de extensões e novas funcionalidades.

Materiais Necessários

Iremos montar um circuito para piscar um LED para assim testar um código C++ na nossa Raspberry Pi Pico. Para isso vamos precisar dos seguintes componentes:

Instalando ferramentas para a Raspberry Pi Pico

Antes de criar seu primeiro programa em C/C++ para a Raspberry Pi Pico, é necessário preparar seu computador. O passo a passo abaixo mostra o procedimento em computadores com sistema operacional Windows.

Primeiramente, faça o download de todos os programas listados abaixo:

Durante a instalação dos programas é importante estar atento às opções do instalador. Certifique-se de que os seguintes itens abaixo sejam selecionados.

Instalação Visual Studio Code

Garanta que a opção “Adicione em PATH (disponível após reiniciar) esteja selecionada”.

Programando a Raspberry Pi Pico no Visual Studio Code

Instalação Python 3

Marque a caixa “Install launcher for all users (recommended)”. Também marque a caixa “Add Python 3.9 to PATH”.

Depois clique em “Customize installation” e selecione “Install for all users”. Por fim clique em “Install”.

Programando a Raspberry Pi Pico no Visual Studio Code

Instalação Compilador ARM GCC

No final da instalação, marque todas as opções.

Programando a Raspberry Pi Pico no Visual Studio Code

Instalação CMake

Durante a instalação, selecione “Add CMake to the system PATH for all users”.

Programando a Raspberry Pi Pico no Visual Studio Code

Instalação Ferramentas de compilação para Visual Studio

Durante a instalação, selecione apenas “Ferramentas de build do C++”.

Programando a Raspberry Pi Pico no Visual Studio Code

Instalação pico-sdk

Descompacte o arquivo em um diretório à sua escolha.

Programando a Raspberry Pi Pico no Visual Studio Code

Configurações do computador para a Raspberry Pi Pico

Assim que o processo de instalação for concluído, precisamos verificar se as variáveis ​​de ambiente do Windows estão definidas corretamente. Para isso, clique na tecla WIN e digite “editar as variáveis ​​de ambiente do sistema”. Clique em “Variáveis de Ambiente…”.

Programando a Raspberry Pi Pico no Visual Studio Code

Em variáveis de usuário, verifique as seguintes informações:

Variável Valor
Path C:\Users\Rosana Guse\AppData\Local\Programs\Microsoft VS Code\bin
PICO_SDK_PATH C:\Users\Rosana Guse\Downloads\pico-sdk

Programando a Raspberry Pi Pico no Visual Studio Code

Em variáveis de sistema, verifique as seguintes informações:

Variável Valor
Path C:\Program Files\Python39\Scripts\
Path C:\Program Files\Python39\
Path C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2020-q4-major\bin
Path C:\Users\Rosana Guse\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Visual Studio Code
Path C:\Program Files\CMake\bin

Programando a Raspberry Pi Pico no Visual Studio Code

Configurações do VS Code para a Raspberry Pi Pico

Execute como administrador o “Developer Command Prompt for VS 2019”. Quando o prompt abrir, dê o comando “code”.

Programando a Raspberry Pi Pico no Visual Studio Code

Programando a Raspberry Pi Pico no Visual Studio Code

Em “Extensions” procure procure pela extensão C/C++ e clique em “Install”. Depois procure por CMake Tools e proceda com a instalação.

Programando a Raspberry Pi Pico no Visual Studio Code

Agora em CMake Tools, clique em Settings > Extension Settings.

Programando a Raspberry Pi Pico no Visual Studio Code

Vá até “Cmake Path” e confira se o nome é cmake.

Programando a Raspberry Pi Pico no Visual Studio Code

Depois vá até “Configure Environment”, clique em “Add Item”, em “Item” digite PICO_SDK_PATH e em “Value” digite o caminho da pasta pico-sdk.

Programando a Raspberry Pi Pico no Visual Studio Code

Em “Generator” digite NMake Makefiles.

Programando a Raspberry Pi Pico no Visual Studio Code

Pronto! O VS Code está configurado. Antes de começarmos a construir nosso primeiro programa, feche o Visual Studio e abra novamente.

Construindo o código Blink

Crie uma pasta em seu computador com o nome do projeto. No VS Code vá em File > Open Folder e selecione a pasta recém criada.

Cada projeto para a Raspberry Pi Pico precisa de três arquivos para compilar.

1. O arquivo com o programa

Vamos dar o nome para esse arquivo de blink.c. Preste atenção ao nome, pois você precisará usá-lo em outros arquivos para compilá-lo corretamente. Toda a sua programação está neste arquivo.

#include "pico/stdlib.h"
 
int main() {
const uint LED_PIN = 16;
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
while (true) {
gpio_put(LED_PIN, 1);
sleep_ms(250);
gpio_put(LED_PIN, 0);
sleep_ms(250);
}
}

2. O arquivo com instruções de construção Cmake

Vamos dar o nome para esse arquivo de pico_sdk_import.cmake. Ele é um conjunto de instruções para CMake que contém informações sobre onde o SDK está e como compilar o código para você. Não há necessidade de fazer nenhuma modificação.

# This is a copy of /external/pico_sdk_import.cmake
# This can be dropped into an external project to help locate this SDK
# It should be include()ed prior to project()

# todo document

if (DEFINED ENV{PICO_SDK_PATH} AND (NOT PICO_SDK_PATH))
set(PICO_SDK_PATH $ENV{PICO_SDK_PATH})
message("Using PICO_SDK_PATH from environment ('${PICO_SDK_PATH}')")
endif ()

if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT} AND (NOT PICO_SDK_FETCH_FROM_GIT))
set(PICO_SDK_FETCH_FROM_GIT $ENV{PICO_SDK_FETCH_FROM_GIT})
message("Using PICO_SDK_FETCH_FROM_GIT from environment ('${PICO_SDK_FETCH_FROM_GIT}')")
endif ()

if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_PATH} AND (NOT PICO_SDK_FETCH_FROM_GIT_PATH))
set(PICO_SDK_FETCH_FROM_GIT_PATH $ENV{PICO_SDK_FETCH_FROM_GIT_PATH})
message("Using PICO_SDK_FETCH_FROM_GIT_PATH from environment ('${PICO_SDK_FETCH_FROM_GIT_PATH}')")
endif ()

set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the PICO SDK")
set(PICO_SDK_FETCH_FROM_GIT "${PICO_SDK_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of PICO SDK from git if not otherwise locatable")
set(PICO_SDK_FETCH_FROM_GIT_PATH "${PICO_SDK_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download SDK")

if (NOT PICO_SDK_PATH)
if (PICO_SDK_FETCH_FROM_GIT)
include(FetchContent)
set(FETCHCONTENT_BASE_DIR_SAVE ${FETCHCONTENT_BASE_DIR})
if (PICO_SDK_FETCH_FROM_GIT_PATH)
get_filename_component(FETCHCONTENT_BASE_DIR "${PICO_SDK_FETCH_FROM_GIT_PATH}" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}")
endif ()
FetchContent_Declare(
pico_sdk
GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk
GIT_TAG master
)
if (NOT pico_sdk)
message("Downloading PICO SDK")
FetchContent_Populate(pico_sdk)
set(PICO_SDK_PATH ${pico_sdk_SOURCE_DIR})
endif ()
set(FETCHCONTENT_BASE_DIR ${FETCHCONTENT_BASE_DIR_SAVE})
else ()
message(FATAL_ERROR
"PICO SDK location was not specified. Please set PICO_SDK_PATH or set PICO_SDK_FETCH_FROM_GIT to on to fetch from git."
)
endif ()
endif ()

get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
if (NOT EXISTS ${PICO_SDK_PATH})
message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' not found")
endif ()

set(PICO_SDK_INIT_CMAKE_FILE ${PICO_SDK_PATH}/pico_sdk_init.cmake)
if (NOT EXISTS ${PICO_SDK_INIT_CMAKE_FILE})
message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' does not appear to contain the PICO SDK")
endif ()

set(PICO_SDK_PATH ${PICO_SDK_PATH} CACHE PATH "Path to the PICO SDK" FORCE)
include(${PICO_SDK_INIT_CMAKE_FILE})

3. Lista de arquivos para compilação

Vamos dar o nome para esse arquivo de CMakeList.txt. Você precisa modificar esse arquivo de acordo com seu projeto. O CMake precisa saber quais arquivos compilar e essa lista diz isso, portanto, altere as linhas com o nome do arquivo que contém o programa.

cmake_minimum_required(VERSION 3.12)
include(pico_sdk_import.cmake)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

pico_sdk_init()
project(blink)
add_executable(blink blink.c)

# Pull in our pico_stdlib which pulls in commonly used features
target_link_libraries(blink pico_stdlib)
 
# create map/bin/hex file etc.
pico_add_extra_outputs(blink)

Por fim, vá na parte inferior da janela do VS Code e selecione o compilador GCC para arm-none-eabi.

Programando a Raspberry Pi Pico no Visual Studio Code

Pronto! Agora você só precisa compilar o programa.

Circuito Pisca LED para Raspberry Pi Pico

Como visto no código acima, iremos conectar um LED na GPIO 16 da Raspberry Pi Pico. O circuito que deve ser montado para testar o código é o abaixo:

Programando a Raspberry Pi Pico no Visual Studio Code

Carregando o arquivo UF2 para a Raspberry Pi Pico

Depois de compilado, um arquivo UF2 estará disponível. É esse arquivo que você deverá carregar para sua Raspberry Pi Pico.

Segure o botão BOOTSEL na sua Pico, conecte-a ao seu computador e depois solte o botão BOOTSEL. Uma unidade de armazenamento chamada de RPI-RP2 será criada. Arraste o arquivo UF2 para a unidade de armazenamento recém criada.

Programando a Raspberry Pi Pico no Visual Studio Code

Sua Raspberry Pi Pico irá reiniciar e o programa começará a rodar.

Programando a Raspberry Pi Pico no Visual Studio Code

Conclusão

Como você pode ver acima, preparar o computador e o Visual Studio Code para programar a Raspberry Pi Pico na linguagem C++ não é uma tarefa tão simples. No entanto, uma vez que o processo é concluído, é relativamente simples criar um programa nessa linguagem e carregá-lo para a placa.

E então, gostou de aprender como programar a Raspberry Pi Pico em C++ usando o VSCode? Conte pra gente o que achou!

Faça seu comentário

Acesse sua conta e participe

13 Comentários

  1. Boa tarde, estou com os seguintes problemas após seguir o passo a passo:

    “CMake Error at pico_sdk_import.cmake:53 (message):Directory ‘C:/Users/jpbru/Documents/pico-sdk’ not foundCMake (message)
    CMakeLists.txt(2, 1): In call to ‘include’ here” → No código pico_sdk_import.cmake

    “#inclui erros detectados com base nas informações fornecidas pela configuração configurationProvider. Os rabiscos estão desabilitados para esta unidade de tradução (C:\Users\jpbru\Documents\Programas\tcc\blink.c).C/C++(1696)
    não é possível abrir o arquivo fonte “pico/stdlib.h”C/C++(1696)” → no código blink.c

    tentei seguir o link que enviaram nos comentários anteriores mas também não auxiliou. E erro no programa .cmake não estava desde o começo, mas agora apareceu.

    Aguardo retorno,

    João Pedro Brunoni

    1. Olá João Pedro!

      O arquivo CMakeLists.txt está presente na pasta ‘C:/Users/jpbru/Documents/pico-sdk’?

      Se sim, como está o conteúdo dele?

      Compare com o conteúdo do arquivo no Git. A impressão que o erro dá é que há algo errado com esse arquivo.

      Abraços!
      Vinícius – Equipe MakerHero

  2. Adquiri um dispositivo Pico de vocês, há algum tempo, e na ocasião não consegui operá-lo em c++, deixei de trabalhar com o modelo. Atualmente possuo um computador “atual” e iniciei o processo para desenvolver programas com o Pico e segui passo a passo do seu tutorial, mas, infelizmente sem sucesso, ocorrendo os mesmos erros quando comprei o mesmo.

    Vocês poderiam me auxiliar nesta aprendizado?

    José Cássio

    1. Olá José,

      Conforme conversamos por e-mail vou verificar aqui o que pode estar ocorrendo e te retorno por lá, ok?

      Abraços!
      Vinícius – Equipe MakerHero

  3. Uma sugestão é fazer um tutorial semelhante para quem quiser utilizar o VSCode no Raspberry OS.

  4. Gostei das exposições ,que só é claro para quem não é iniciante porem foi de grande valia
    E sim precisarei do suporte para desenvolver aplicações para a pico .
    sou agradecido pela exposição acima

  5. Olá Rosana,

    * Fiz todo o procedimento, instalei todos as ferramentas seguindo rigorozamente as instruções.
    * Criei as variaveis de sistema necessárias usando os diretorios do meu sistema.
    * Instalei as extenções necessárias do VS Code, configurei o CMake Tools.
    * Criei uma nova pasta para servir de novo projeto e marquei como novo projeto no VS Code.
    * Criei os 3 arquivos necessários, copiando o conteudo (blink.c / pico_sdk_import.cmake / CMakeList.txt) sem alterar nada para testar.

    Mas esta parte: “Por fim, vá na parte inferior da janela do VS Code e selecione o compilador GCC para arm-none-eabi.”

    Não consigo de jeito nenhum, na parte de baixo não tem como selecionar este compilador, ele não aparece em lugar algum. Instalei ele duas vezes para ter certeza que não houve nenhum erro na instalação.

    Tentei resolver sozinho de todo jeito, altuma dica?
    Grato.

    1. Olá Rafael,

      Clique no ícone de configurações do VSCode (canto inferior esquerdo) e selecione “Command Palette…”. Depois na caixa de seleção selecione CMake. Por fim você poderá selecionar o compilador 😉

      1. Fiz o que você sugeriu e num primeiro momento não deu certo, mas me abriu a mente para outra tentativa.

        1. Na barra inferior azul do VS Code eu selecionei o Cmake (variante de build atual)
        2. Ao lado direito de onde eu selecionei o Cmake estava selecionado: “Nenhum Kit ativo”
        Era ai que não cosntava o GCC de jeito nenhum.
        3. Cliquei em “Examinar em busca de kits” e só então ele instalou e apareceu o GCC

        Depois disso tudo, descobri que no arquivo 3 (3. Lista de arquivos para compilação) está faltando um “s” no nome do arquivo que é CMakeLists.txt e não CMakeList.txt

        Por fim, resolvi estes problemas e agora tenho outros: 2 erros no compilador:

        1.) #incluir erros detectados. Atualize o includePath. Os rabiscos estão desabilitados para esta unidade de tradução (C:\Users\rafae\Downloads\TESTE3\blink.c).
        2.) não é possível abrir o arquivo fonte “pico/stdlib.h”

        Sou leigo no assunto, mas parece que ele não está encontrando as bibliotecas na pasta C:\Users\rafae\Documents\pico-sdk-master (baixadas do github), pensei que poderia ter haver com as variaveis de ambiente, mas estão conforme você instruiu (alterando o diretório para meu usuario logicamente)

        Alguma dica?

        1. Olá Rafael,

          Conseguiu resolver o problema com o post que o Ramon deixou abaixo?

          Abraço!
          Rosana -Equipe MakerHero

  6. Rosana, tudo bem? obrigado pelo artigo de configuração.
    Eu parei neste aqui:

    Depois vá até “Configure Environment”, clique em “Add Item”, em “Item” digite PICO_SDK_PATH e em “Value” digite o caminho da pasta pico-sdk.

    não consegui achar Configure Environment

    1. Olá Paulo,

      Depois que editar o “CMake Path”, você deve descer a lista que assim vai encontrar “Configure Environment”.

      Abraço!
      Rosana – Equipe MakerHero