Manual
do
Maker
.
com
Nesse artigo veremos como configurar a RPI4 e RPI Pico para fazer a comunicação UART na Raspberry Pi Pico invés da USB-serial. O processo é simples, mas requer um procedimento prévio que deverá ser feito uma única vez no Raspberry.
Se estiver usando uma Raspberry Pi 4 como host para desenvolvimento, esse procedimento já terá sido feito automaticamente com o procedimento descrito no artigo. Bora começar!
No artigo anterior vimos amplamente como gerar os programas para que a saída da serial seja direcionada para a UART ou para a USB-serial. Se fizer o upload do programa hello_serial.uf2 (ou qualquer outro que use a serial invés da USB), uma configuração deverá ser feita no Raspberry para fazer essa comunicação. Também será necessário fazer o wiring no GPIO, já que não estaremos fazendo a comunicação pela USB-serial.
O pinout da Raspberry Pi Pico:
UART0 | Pino físico | GPIO |
GND | 3 | - |
TX | 1 | GP0 |
RX | 2 | GP1 |
O wiring deve ser feito da seguinte maneira:
RPi4 | RPi Pico |
GND 14 | GND 3 |
GPIO 15 (Pino 10) RX | GP0 (pino 1) TX |
GPIO 14 (pino 8) TX | GP1 (pino 2) RX |
Tirado da documentação para poupar tempo:
Execute o programa raspi-config e vá até Interface Options > Serial e selecione No quando questionado se o login do shell deve estar acessível pela serial. Responda Yes quando perguntado se a porta serial por hardware deve ser ativada. Ao sair do configurador, confirme o reboot. Ao fazer login novamente no Raspberry Pi 4, selecione o programa desejado para fazer a comunicação serial, agora no dispositivo /dev/serial0. A velocidade de comunicação é 115200.
O mínimo que temos dentro de um diretório de projeto da Raspberry Pi Pico é um arquivo CMakeLists.txt e um arquivo.c. O arquivo CMakeLists.txt contém as especificações do projeto. Podemos sempre partir de um projeto dos exemplos para criar o nosso, editando o arquivo CMakeLists.txt e adequando-o à nossa necessidade. O processo é simples e vou descrever brevemente o CMakeLists.txt do exemplo hello_world/serial:
add_executable(hello_serial
hello_serial.c
)
# Pull in our pico_stdlib which aggregates commonly used features
target_link_libraries(hello_serial pico_stdlib)
# create map/bin/hex/uf2 file etc.
pico_add_extra_outputs(hello_serial)
# add url via pico_set_program_url
example_auto_set_url(hello_serial)
Em add_executable temos a forma mais simples da declaração, que é o nome do programa seguido pelo arquivo do código. Depois tem uma ligação da stdlib com esse programa, do qual não precisamos nos preocupar com os detalhes.
Do pico_add_extra_outputs para baixo também são padrões, que têm em comum o único parâmetro que devemos mexer para criar o nosso programa: hello_serial.Veremos detalhes em um artigo específico sobre o assunto.
Se olharmos no exemplo hello_world/usb/CMakeLists.txt encontraremos duas linhas extras:
add_executable(hello_usb
hello_usb.c
)
#Pull in our pico_stdlib which aggregates commonly used features
target_link_libraries(hello_usb pico_stdlib)
#enable usb output, disable uart output
pico_enable_stdio_usb(hello_usb 1)
pico_enable_stdio_uart(hello_usb 0)
#create map/bin/hex/uf2 file etc.
pico_add_extra_outputs(hello_usb)
#add url via pico_set_program_url
example_auto_set_url(hello_usb)
Repare que são as linhas que definem se a saída padrão deve ser a USB, a UART ou ambos. E o primeiro parâmetro, sem novidades: o nome dado lá na primeira linha para o executável.
Sinceramente não sei se no momento da publicação desse artigo a RoboCore ainda a tem, porque estão vendendo por um preço realmente incrível, e esse já deve ser o terceiro artigo que escrevo da série sobre a Pico.
O vídeo demonstrando o processo pode ser visto em nosso canal DobitaobyteBrasil no Youtube. Se não é inscrito ainda, inscreva-se, clique no sininho para receber notificações e deixe seu like!
Revisão: Ricardo Amaral de Andrade
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.