Programando as GPIO’s do ESP32 com SDK IDF.

Olá, Aqui é Prof° Fernando Simplicio.

Quando vamos aprender a programar um novo microcontrolador, normalmente procuramos pelos programas do tipo “Hello World”. Nada melhor do que iniciar seus estudos explorando as GPIO’s.

Este artigo apresenta os primeiros passos para manipular os pinos (GPIOs) do ESP32 (Espressif).

O ESP32 possui 40 GPIOs, das quais, quase todos os pinos podem ser definidos como entrada, saída ou Dreno Aberto.
Após a inicialização do ESP32, muitos dos pinos permanecem configurados como GPIO digital, enquanto outros são multiplexados com periféricos internos do ESP32. As GPIOS 34 a 39 podem somente ser configuradas como entrada e não suportam pull-up ou pull-down.

Acompanhe o exemplo de programa:

Por meio do programa acima, é simples entender que para configurar qualquer pino do ESP32 como entrada ou como saída, basta fazer a chamada da função “gpio_set_direction(PIN, DIRECTION)”, onde PIN representa o pino digital que se deseja manipular, enquanto “DIRECTION”, informa a direção do pino, que podem ser:

Estas não são as únicas formas de configurar as GPIO’s do ESP32. Podemos habilitar ou desabilitar os pull-Up’s internos para cada um das GPIO’s. Vejamos por meio de outro exemplo:

O programa a seguir somente Pisca um LED enquanto um botão estiver pressionado.

Como podemos ver no programa, foram configurados duas GPIO’s, sendo uma responsável em manipular o LED e configurada como saída, e outra GPIO chamada BUTTON configurada como entrada e pull-up habilitado.

É possível configurar uma GPIO como entrada de formas diferentes, por meio dos comandos a seguir:

Além dessas configurações, também é possível configurar vários pinos de uma única vez, por meio de um descritor de GPIO. Estudamos agora um outro exemplo de programa que tem por objetivo realizar um PiscaLED com a GPIO_16 e GPIO_17 do ESP32.

No programa exemplo a seguir são feitos as configurações de quatro GPIO’s, sendo duas configuradas como entrada e duas outras configuradas como saída. As configurações das GPIO’s são feitas utilizando o descritor de GPIO’s do SDK IDF. Agora, neste novo programa, qualquer botão pressionado fará com que os LED’s pisquem.

Bom, agora chegou o momento de você aprender a como disparar a interrupção externa das GPIOs do ESP32. O procedimento é relativamente simples, porém requer atenção nas configurações.
Primeiramente, no descritor do drive da GPIO devemos habilitar as interrupções escolhendo a forma do disparo das interrupções por meio de uma das opções a seguir:

Esta configuração deverá ser carregada no descritor do drive da GPIO. Segue um exemplo de programa que faz o uso da interrupção das GPIOs (Button_1 e Button_2). Ao pressionar qualquer um dos botões, a interrupção da GPIO será chamada e os LEDs serão invertidos.

Existem outras formas de configurar o descritor da GPIO do ESP32 por meio do SDK IDF. Tal como apresentado abaixo. Passa a ser uma maneira mais “elegante” de fazer a mesma coisa já apresentado neste post.

As configurações das GPIO’s não param por ai, pois existe o recurso chamado “gpio_wakeup_enable” que permite “acordar” o microcontrolador quando em modo sleep via um GPIO e o “gpio_pad_select_gpio(BUTTON_GPIO)” que permite redefinir o estado de um pino para o modo GPIO, visto que inicialmente este pino pode estar sendo usado para sinalização de um outro periférico (exemplo: controle da memória flash SPI). A tabela completa de multiplexação das GPIOs podem ser consultada no manual do ESP32 aqui (página 34 / Tabela 6).

Digite seu Email para Receber este Projeto por Email

Ao registrar seu email você receberá aulas, materiais e informativos sobre o ESP32.

We value your privacy and would never spam you

 

Mas esse é tema para outros posts.

Gostou do post?
Conheça meu curso online: Formação Internet das Coisas com ESP32.

formacao internet das coisas com esp32 (esp8266)

Abração,
prof° Fernando Simplicio
www.microgenios.com.br

Mini-Curso Grátis - Internet das Coisas com ESP32 e FreeRTOS (SDK-IDF)
Inscreva-se e receba 7 aulas em vídeo sobre o ESP32 com SDK-IDF (Programação C/C++ Nativa)
Categories: Internet of Things

Leave a Reply

Your email address will not be published. Required fields are marked *

Bitnami