ESP32 - Botão Alterna Relé

Este tutorial ensina como usar o ESP32 para alternar o estado de um relé entre LIGADO e DESLIGADO quando um botão é pressionado. Mais especificamente:

Os códigos ESP32 incluem código para um botão que alterna um relé sem e com debounce

Podemos estender este tutorial para usar o botão para alternar o estado de um solenoide, ventilador, lâmpada ou atuador... conectando-os ao relé.

Sobre Relé e Botão

Temos tutoriais específicos sobre relé e botão. Cada tutorial contém informações detalhadas e instruções passo a passo sobre pinagem do hardware, princípio de funcionamento, ligação ao ESP32, código ESP32... Saiba mais sobre eles nos links a seguir:

Diagrama de Ligação

Diagrama de ligação ESP32 botão relé

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Código ESP32 - Botão Alterna Relé Sem Debounce

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-button-toggle-relay */ #define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button's pin #define RELAY_PIN 27 // ESP32 pin GPIO27 connected to relay's pin // variables will change: int relay_state = LOW; // the current state of relay int button_state; // the current state of button int last_button_state; // the previous state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set ESP32 pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { last_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if (last_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of relay relay_state = !relay_state; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • Faça a ligação conforme a imagem acima.
  • Conecte a placa ESP32 ao seu PC por meio de um cabo USB Type-C
  • Abra a Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Copie o código acima e cole-o na Arduino IDE.
  • Compile e faça upload do código para a placa ESP32 clicando no botão Upload na Arduino IDE
  • Mantenha o botão pressionado por alguns segundos e depois solte-o.
  • Veja a mudança no estado do relé

Explicação do Código Linha por Linha

O código ESP32 acima contém explicação linha por linha. Por favor, leia os comentários no código!

No código, relay_state = !relay_state é equivalente ao seguinte código:

if(relay_state == LOW) relay_state = HIGH; else relay_state = LOW;

※ Nota:

O código acima não tem o código de debounce para o botão. Sem debounce para o botão, podem ocorrer comportamentos inesperados. Veja Por que é necessário debounce para o botão. Fazer o debounce do botão é complicado para iniciantes. Felizmente, a biblioteca ezButton faz o debounce do botão para nós.

Código ESP32 - Botão Alterna Relé Com Debounce

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-button-toggle-relay */ #include <ezButton.h> #define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button's pin #define RELAY_PIN 27 // ESP32 pin GPIO27 connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; // variables will change: int relay_state = LOW; // the current state of relay void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_PIN, OUTPUT); // set ESP32 pin to output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { Serial.println("The button is pressed"); // toggle state of relay relay_state = !relay_state; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • Instale a biblioteca ezButton. Veja Como Fazer
  • Copie o código acima e cole-o na Arduino IDE.
  • Compile e faça upload do código para a placa ESP32 clicando no botão Upload na Arduino IDE
  • Pressione o botão várias vezes
  • Veja a mudança no estado do relé

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!