ESP8266 - Botão Controla Trava Eletromagnética

O tutorial ensina como usar um ESP8266 e um botão para controlar uma trava eletromagnética. Quando o botão é pressionado, o ESP8266 destrava a porta por um período de tempo (por exemplo, 10 segundos). Depois disso, a porta será travada novamente.

Vamos do fácil ao difícil em dois passos:

Sobre o Botão e a Trava Eletromagnética

Se você não está familiarizado com travas eletromagnéticas e botões (incluindo pinagem, funcionamento e programação), os tutoriais a seguir podem ajudar:

Diagrama de Ligação

diagrama de ligação do botão e da trava eletromagnética com ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

Código ESP8266 - Botão Controla Trava Eletromagnética Sem Debouncing

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-button-control-electromagnetic-lock */ #define BUTTON_PIN D1 // The ESP8266 pin connected to button's pin #define RELAY_PIN D8 // The ESP8266 pin connected to relay's pin int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode pinMode(RELAY_PIN, OUTPUT); // Configure the ESP8266 pin to the output mode digitalWrite(RELAY_PIN, HIGH); // lock the door button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if (prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Passos Rápidos

Para começar com o ESP8266 na Arduino IDE, siga estes passos:

  • Confira o tutorial como configurar o ambiente para ESP8266 na Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Ligue os componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Conecte um ESP8266 a um computador usando um cabo USB.
  • Abra a Arduino IDE e selecione a placa e a porta apropriadas.
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload da Arduino IDE para compilar e fazer upload do código para o ESP8266.
  • Aproxime a placa de armadura do eletroímã.
  • Pressione o botão uma vez.
  • Verifique a atração entre a placa de armadura e o eletroímã por 10 segundos.

Explicação do Código

Confira a explicação linha por linha contida nos comentários do código-fonte!

※ Nota:

Na prática, o código mencionado acima nem sempre funciona corretamente. Para garantir que ele funcione bem, precisamos fazer o debounce do botão. O debouncing do botão pode ser complicado para quem está começando. Felizmente, a biblioteca ezButton torna isso muito mais simples.

Código ESP8266 - Botão Controla Trava Eletromagnética Com Debouncing

Qual é o objetivo do debouncing?. ⇒ Veja o tutorial ESP8266 - Debounce de Botão para entender por que o debouncing é necessário.

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-button-control-electromagnetic-lock */ #include <ezButton.h> #define BUTTON_PIN D1 // The ESP8266 pin connected to button's pin #define RELAY_PIN D8 // The ESP8266 pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object for pin D8 void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(RELAY_PIN, OUTPUT); // Configure the ESP8266 pin to the output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds digitalWrite(RELAY_PIN, HIGH); // lock the door } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, HIGH); // lock the door again } }

Passos Rápidos

  • Ligue os componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Instale a biblioteca ezButton. Consulte o Como Fazer para ver as instruções.
  • Abra o código na Arduino IDE e clique no botão Upload para fazer upload dele para o ESP8266.
  • Aproxime a placa de armadura do eletroímã e pressione o botão uma vez.
  • Verifique a atração entre a placa de armadura e o eletroímã por 10 segundos.

※ Nota:

No código acima, utilizamos a função delay. Por isso, não há necessidade de fazer o debouncing do botão. Mesmo assim, ainda fornecemos o código com debouncing, caso você queira executar mais tarefas sem usar a função delay. Confira Como usar millis() em vez de delay() para mais informações.

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!