ESP32 blink LED

ESP32 DevKitC v1 piscando o LED

ESP32 blink LED é normalmente conhecido como o hello world do mundo do hardware por ser um validador de conhecimento inicial adquirido em algum assunto, seja hardware ou software. Assim sendo, neste artigo, faremos o ingresso nos estudos do framework da empresa Espressif, o ESP-IDF, fazendo-se o uso do kit de desenvolvimento ESP32 DevKitC v1 e o primeiro assunto a ser abordado será GPIO, logo será feita uma análise do código fonte da API (Application Programming Interface) do recurso em questão, o desenvolvimento do blink LED, a gravação do firmware no kit e a demonstração.

O conteúdo deste artigo será dividido da seguinte forma:

Para o melhor aproveitamento deste conteúdo e também para agilizar o acesso, aqui estão alguns artigos relacionados para auxiliar o desenvolvimento:

Artigos relacionados

1. Entendimento básico do framework

Antes de entendermos do que é constituído o framework, o ESP-IDF deve estar devidamente instalado no computador do usuário, como pode ser conferido no artigo acima. Além disso, tenha em mãos o kit ESP32.

O ESP-IDF basicamente contém as APIs (bibliotecas e códigos fontes) de desenvolvimento para aplicações do ESP32 e também os scripts para operar o toolchain, além disso, são necessários outros softwares para a geração dos arquivos objetos e o binário da aplicação:

  • Toolchain para compilação do código para o ESP32;
  • Build tools (CMake e Ninja) para a construção da aplicação para o ESP32.

Uma representação disso pode ser conferida na figura 1.

Representação do ESP-IDF em blocos
Figura 1 - construção de uma aplicação

Na figura acima, o Eclipse é o ambiente de desenvolvimento e edição da aplicação para o ESP32, já que, compõe um sistema o qual possui acesso às APIs do ESP-IDF, ao Toolchain que fará a compilação do projeto e as ferramentas de construção. Obviamente, tudo devidamente configurado neste software.

Além disso, o Eclipse não é o único programa que possa ser esse ambiente de desenvolvimento integrado, o Visual Studio Code também pode executar essa tarefa.

2. Sugestões de programas para edição

As sugestões, a seguir, são editores de códigos fontes que podem ser utilizados para a escrita da aplicação:

Não há nenhuma contra-indicação no uso desses softwares, assim como em outros, já que, tanto a compilação quanto a construção da aplicação é feito pelo ESP-IDF Command Prompt.

3. Código da aplicação e análise

O código do ESP32 blink LED a aplicação pode ser visto a seguir:

Task do blink LED usando o ESP-IDF
Task app main do blink LED usando o ESP-IDF
Figura 1 - código do ESP32 blink LED

O ESP-IDF possui recursos para construção de uma aplicação que pode operar em tempo real, ou seja, em um RTOS (Real Time Operation System). Neste caso, o sistema incorporado é o FreeRTOS e todos os arquivos que o compõe estão contidos no sistema de diretórios do ESP-IDF, disponíveis para o desenvolvimento de qualquer aplicação.

Assim, percebe-se que no código acima, há uma API do FreeRTOS que construirá a task vtask_blink_led(), ou seja, a xTaskCreate(), mas somente a partir do momento em que o core realizar as configurações necessárias, apontar para a app_main() e invocar a xTaskCreate().

Além da API de construção da task, há também as APIs responsáveis pelas configurações do GPIO que aciona o LED da ESP32 DevKitC v1, são elas:

  • gpio_pad_select_gpio(GPIO_NUM_2)
  • gpio_set_direction(GPIO_NUM_2, GPIO_MODE_OUTPUT)

A primeira API tem apenas um argumento e se refere ao pino em que será utilizado, no caso do kit em questão, será o pino 2. A segunda API, diz respeito ao sentido do pino em que será utilizado, ou seja, é um pino de acionamento ou, se preferir, de saída.

Feita a configuração do pino de acionamento do LED, o fluxo do programa entrará no loop para executar o blink conforme o código acima. 

Se tudo ocorrer de maneira correta e satisfatória, ou seja, compilação da aplicação e gravação do firmware no kit, fazendo o uso de um terminal de comunicação como o TeraTerm que funcionará como um console de depuração e imprimindo as strings inseridos como argumentos nas funções do printf(), a aplicação funcionará conforme a figura 2.

Debugging blinkd led com o TeraTerm
Figura 2 - Depurando a ESP32 blink LED com o TeraTerm

Referências

confira mais artigos

compartilhe e comente

Compartilhar no linkedin
Compartilhar no whatsapp
Compartilhar no facebook
Compartilhar no telegram

O uso e reprodução deste conteúdo deve creditar o autor e está licenciado conforme a licença Creative Commons – Atribuição Compartilhada 4.0 Internacional (CC BY-SA 4.0). 

Olá, meu nome é Eder Andrade.