RTOS

Como habilitar o GPIO no Nuttx

Algumas coisas me atrairam 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:

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:

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:

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

Compilar o firmware

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

Gravar o firmware na placa

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

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:

Onde “X” deve ser 0 ou 1.

gpint2

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

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.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR

https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR

https://www.facebook.com/groups/raspberrybr/
Orange Pi BR

https://www.facebook.com/groups/OrangePiBR/
Odroid BR

https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR

https://www.facebook.com/groups/SistemasEmbarcadosBR/

Sistemas Eletrônicos

https://www.facebook.com/groups/544679592355388/

Projetos Arduino | Eletrônica

https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 e ESP32

https://www.facebook.com/groups/ESP8266BR/

ARM Brasil

https://www.facebook.com/groups/508153815944410/

MIPS BR

https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte

https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!