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.
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:
- Raspberry Pi Pico
- Barra de Pinos 1×40 180 Graus
- Protoboard 400 pontos
- Cabo micro USB
- Jumpers Macho-Macho
- Led Vermelho
- Resistor 220 ohms
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:
- Visual Studio Code
- Ferramentas de compilação para Visual Studio
- Python 3.x
- Compilador ARM GCC
- CMake
- Ferramentas pico-sdk
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”.
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”.
Instalação Compilador ARM GCC
No final da instalação, marque todas as opções.
Instalação CMake
Durante a instalação, selecione “Add CMake to the system PATH for all users”.
Instalação Ferramentas de compilação para Visual Studio
Durante a instalação, selecione apenas “Ferramentas de build do C++”.
Instalação pico-sdk
Descompacte o arquivo em um diretório à sua escolha.
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…”.
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 |
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 |
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”.
Em “Extensions” procure procure pela extensão C/C++ e clique em “Install”. Depois procure por CMake Tools e proceda com a instalação.
Agora em CMake Tools, clique em Settings > Extension Settings.
Vá até “Cmake Path” e confira se o nome é cmake.
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.
Em “Generator” digite NMake Makefiles.
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.
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:
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.
Sua Raspberry Pi Pico irá reiniciar e o programa começará a rodar.
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!
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
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
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
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
Uma sugestão é fazer um tutorial semelhante para quem quiser utilizar o VSCode no Raspberry OS.
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
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.
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 😉
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?
Tive o mesmo problema (ultimo que voce relatou). Consegui resolver por esse link: https://www.element14.com/community/community/raspberry-pi/blog/2021/01/24/working-with-the-raspberry-pi-pico-with-windows
Olá Rafael,
Conseguiu resolver o problema com o post que o Ramon deixou abaixo?
Abraço!
Rosana -Equipe MakerHero
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
Olá Paulo,
Depois que editar o “CMake Path”, você deve descer a lista que assim vai encontrar “Configure Environment”.
Abraço!
Rosana – Equipe MakerHero