Como usar o subsistema de LEDs do NuttX

Este mini post faz parte de uma série com objetivo de apresentar os passos/instruções dos vídeos do canal NuttX Brasil para que a atividade proposta seja facilmente reproduzida pelo leitor.

Este mini post faz parte de uma série com objetivo de apresentar os passos/instruções dos vídeos do canal NuttX Brasil para que a atividade proposta seja facilmente reproduzida pelo leitor.

O NuttX Brasil é um canal brasileiro idealizado por dois engenheiros da Espressif, com o objetivo de explicar como utilizar diversos recursos do Sistema Operacional de Tempo Real denominado NuttX. Um RTOS enxuto, POSIX compliant, Open Source e Unix Like que pode ser embarcado em diversos microcontroladores.

A playlist inicia mostrando os primeiros passos para preparar o ambiente e fazer o build e depois aborda diferentes subsistemas.

Cada vídeo terá um mini post no Embarcado com as Instruções as quais você poderá copiar os comandos mostrados no vídeo.

O mini post de hoje faz referência ao texto complementar do vídeo NuttX Brasil #002: Como usar o subsistema de LEDs do NuttX, que pode ser acessado aqui:

Neste vídeo você aprenderá a usar o subsistema UserLEDs do NuttX. Você poderá usar tanto o LED que vem soldado na sua placa ESP32 quanto LEDs externos que você poderá ligar aos pinos da sua placa. Caso você ainda não tenha o ambiente de desenvolvimento do NuttX instalado no seu computador, siga as instruções do artigo: https://www.embarcados.com.br/primeiros-passos-com-o-esp32-e-o-nuttx-parte-1/ .

Aproveite!

O que nós vamos fazer?

  • Testar LEDs com o LED embutido da placa.
  • Remapear o pino do LED e usar LEDs externos. (Isso demonstra, por exemplo, como fazer a customização deste recurso na sua placa).

Material Usado:

  • 1 ESP32 DevKit V1 da DOIT (Pode usar outros DevKits, entretanto, deve verificar se o seu DevKit vem com LED embutido e em qual pino está conectado).
  • 1 Cabo USB-Micro
  • 8 LEDs coloridos
  • 8 Resistores de 330 Ω
  • Jumpers  

Versão do NuttX utilizada: 10.1.0-RC1 

Instruções:

O primeiro passo é limpar a compilação anterior:

Agora vamos usar uma configuração de board config que já tem as opções de configuração para suportar o LED da placa:

Agora você pode navegar pelo menu de configurações para entender quais opções este board config modifica:

 Board Selection  —>

     [ ] Board LED Status support  /* Tem que estar desativado */

 Device Drivers  —>

     LED Support  —>

         [*] LED driver

         [*]   Generic Lower Half LED Driver 

 Application Configuration  —>

     Examples  —>

         [*] LED driver example

         (leds) Program name

         (100) LED task priority

         (2048) LED stack size

         (/dev/userleds) LED device path

         (0x0f) Subset of LEDs to use

 Application Configuration  —>

     NSH Library  —>

         Disable Individual commands  —>

             [ ] Disable printf             /* Tem se ser desativado */

Após sair e salvar as configurações podemos compilar:

O comando acima compila e grava o binário do NuttX na sua placa.

Então podemos entrar no terminal do NuttX usando o picocom como console serial:

Caso você não esteja vendo o terminal “nsh>” do NuttX pressione a tecla ENTER ou tente reiniciar sua placa.

Antes de continuar, vamos verificar se o arquivo especial que controla o LED (“device file”) /dev/userleds foi criado:

Como você pode observar, o arquivo “userleds” foi criado corretamente.

Agora podemos acender/apagar o LED com o comando “printf”:

Se o LED estiver com o catodo ligado no pino da sua placa, então o primeiro comando apagará o LED e o segundo acenderá, se for o anodo que estiver ligado o resultado será o oposto.

A aplicação do exemplo LEDs que selecionamos no menuconfig é um daemon que fará o LED piscar:

Podemos modificar os arquivos da nossa placa para suportar 8 LEDs externos, para isso precisaremos fazer as seguintes modificações:

No arquivo boards/xtensa/esp32/esp32-devkitc/include/board.h mude a definição BOARD_NLEDS de 1 para 8:

No arquivo boards/xtensa/esp32/esp32-devkitc/src/esp32-devkitc.h crie os novos GPIO_LEDx :

Acrescente estas definições dos pinos dos LEDs no array g_ledcfg no boards/xtensa/esp32/esp32-devkitc/src/esp32_userleds.c:

Modifique subset (máscara) para permitir piscar os 8 LEDs:

Application Configuration  —>

     Examples  —>

         [*] LED driver example

         …

         (0xff) Subset of LEDs to use

Após salvar e sair você deverá compilar e gravar novamente com o comando:

Abra o picocom e rode o comando “leds” novamente:

Você também pode usar o printf para controlar o acionamento dos LEDs.

Não deixe de olhar e modificar a aplicação dos leds, ela fica em: apps/examples/leds/leds_main.c

Referências

https://randomnerdtutorials.com/esp32-pinout-reference-gpios/

Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H