Manual
do
Maker
.
com
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.
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
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
Vá saindo dos menus até que seja questionado por salvar as configurações. Salve e então compile:
make
Conecte o gravador à placa (descrito nesse outro artigo) e suba o novo firmware:
st-flash write nuttx.bin 0x8000000
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.
Ao listar os dispositivos de /dev, note que haverão 3 relacionados ao GPIO:
Para interagir com esses dispositivos, estará disponível o comando gpio.
Para enviar o estado LOW ou HIGH, utilizamos o comando:
gpio -o X /dev/gpout1
Onde "X" deve ser 0 ou 1.
Para aguardar uma interrupção com o estado 1, usamos o comando:
gpio -w 1 /dev/gpint2
Pino de input que você espera ler um valor dele.
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
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.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.