12 de abril de 2021

Do bit Ao Byte

Embarcados, Linux e programação

UART na Raspberry Pi Pico

UART na Raspberry Pi

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!

Como configurar a UART na Raspberry Pi 4

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.

Pinout da UART do RPi Pico

O pinout da Raspberry Pi Pico:

UART0Pino físicoGPIO
GND3
TX1GP0
RX2GP1

Wiring da UART

O wiring deve ser feito da seguinte maneira:

RPi4RPi Pico
GND 14GND 3
GPIO 15 (Pino 10) RXGP0 (pino 1) TX
GPIO 14 (pino 8) TXGP1 (pino 2) RX

Tirado da documentação para poupar tempo:

UART na Raspberry Pi - wiring

Habilitar a UART no RPi4

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.

UART na Raspberry pi Pico

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.

Onde comprar a Raspberry Pi Pico?

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.

Vídeo

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