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.
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:
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.