Manual

do

Maker

.

com

Como habilitar o GPIO no Nuttx

Como habilitar o GPIO no Nuttx

Algumas coisas me atraíram bastante no Nuttx, como ser um RTOS no padrão POSIX e também por ser modular, onde habilitamos os recursos desejados no sistema. Nesse artigo veremos como habilitar o GPIO para interagir por linha de comando de maneira simples e descomplicada.

Limpar configurações anteriores

Sempre que for compilar uma imagem, devemos primeiramente eliminar a configuração anterior. Tenho usado o padrão ~/nx como diretório base para o Nuttx e os apps (que não utilizamos até o momento). Nesse primeiro passo, devemos entrar no diretório do Nuttx e limpar a configuração pré-existente:

cd ~/nx/nuttx-7.23
make distclean

Iniciar a configuração da board

Nesses primeiros tutoriais sobre o Nuttx estou utilizando a BluePill, uma ARM de baixíssimo custo que nos permite desfrutar dos recursos desse RTOS e ainda ter mais recursos do que os Arduino mais populares. Já falei dela anteriormente, obviamente é uma placa parruda e pode ser adquirida na Autocore Robótica.

Para iniciar uma configuração para essa placa, utilizamos o comando:

cd ~/nx/nuttx-7.23/tools
./configure.sh stm32f103-minimum/nsh
cd ..
make menuconfig

Nesse ponto já poderemos personalizar o sistema. Para habilitar o acesso pela porta USB fazendo uma comunicação serial, leia o artigo anterior.

Para habilitar o GPIO, siga o menu:

Device Driver ->
     IO Expander/GPIO support ->
          [*] GPIO driver

Agora devemos habilitar o exemplo de GPIO. Volte ao menu principal e siga:

Application configuration ->
     Examples ->
          [*] GPIO driver example

Compilar o firmware

Vá saindo dos menus até que seja questionado por salvar as configurações. Salve e então compile:

make

Gravar o firmware na placa

Conecte o gravador à placa (descrito nesse outro artigo) e suba o novo firmware:

st-flash write nuttx.bin 0x8000000

Experimentar o GPIO

Agora já podemos interagir com os pinos de GPIO de forma similar ao Raspberry Pi. Primeiramente, devemos fazer a conexão serial e apertar Enter 3 vezes. O prompt do NuttShell será exibido e a partir de então podemos digitar comandos.

Dispositivos

Ao listar os dispositivos de /dev, note que haverão 3 relacionados ao GPIO:

  • gpin0
  • gpout1
  • gpint2

Para interagir com esses dispositivos, estará disponível o comando gpio.

gpout1

Para enviar o estado LOW ou HIGH, utilizamos o comando:

gpio -o X /dev/gpout1

Onde "X" deve ser 0 ou 1.

gpint2

Para aguardar uma interrupção com o estado 1, usamos o comando:

gpio -w 1 /dev/gpint2

gpin0

Pino de input que você espera ler um valor dele.

Como configurar um pino?

Da mesma forma que no Linux, é necessário exportar o pino que será utilizado no respectivo dispositivo de GPIO. Isso é feito hardcoded e veremos isso em outro artigo.

Os dispositivos que foram criados nesse post tem a seguinte relação:

A1 (relay) - gpout1 A2  (reed switch)gpint2

Referências

Se quiser mais informações sobre o sistema, visite o site do Nuttx.

O Alan Carvalho tem excelentes videos, bastante diretos. Visite o canal Nuttx Channel.

Também tem o blog do Alan (em inglês) aqui.

O video tutorial relacionado é esse. Na descrição do video tem o link para o exemplo lamp, onde o Alan está fazendo o acionamento de uma lâmpada por interrupção no reed switch.

Os artigos relacionados ao Nuttx nessa fase inicial serão baseados nas experiêcias do Alan, que inclusive sugeriu utilizar o material dele para termos referência em português, por isso, qualquer semelhança "não" é mera coincidência.

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.