ESP8266 - Sensor de Porta

O sensor de porta é uma escolha popular para sistemas de segurança, pois pode detectar e monitorar entradas como portas, janelas e mais. Ele também é chamado de sensor de entrada, sensor de contato ou sensor de janela.

Este tutorial ensina você a usar o ESP8266 com o sensor de porta. Em detalhes, vamos aprender:

Hardware Necessário

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Sensor de Porta
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Sobre o Sensor de Porta

Pinagem do Sensor de Porta

Um sensor de porta é composto por duas partes:

  • Um reed switch com dois pinos
  • Um ímã
Pinagem do sensor de porta

Assim como um interruptor/botão comum, não é necessário diferenciar os dois pinos do reed switch.

Como Funciona

O ímã é fixado na porta/janela (a parte móvel), e o reed switch é fixado no batente da porta (a parte fixa). Quando a porta está fechada, os dois componentes ficam em contato:

  • Se o ímã estiver próximo do reed switch, o circuito do reed switch está fechado
  • Se o ímã estiver distante do reed switch, o circuito do reed switch está aberto
Como o sensor de porta funciona

※ Nota:

O reed switch não produz um sinal LOW ou HIGH em seus pinos. Ele está apenas fechado ou aberto. Dependendo de como o conectamos ao ESP8266, o valor do pino pode ser LOW, HIGH ou um valor flutuante imprevisível. Para evitar isso, um resistor de pull-up ou pull-down deve ser usado no pino do ESP8266.

Se ligarmos um pino do reed switch ao GND e o outro pino do reed switch a um pino de entrada do ESP8266 com um resistor de pull-up (interno ou externo):

  • Quando o ímã está próximo do reed switch, o valor no pino de entrada do ESP8266 é LOW
  • Quando o ímã está distante do reed switch, o valor no pino de entrada do ESP8266 é HIGH

Para determinar o estado da porta, basta verificar o estado do pino de entrada do Arduino:

  • Se o estado for LOW, a porta está fechada
  • Se o estado for HIGH, a porta está aberta

Também podemos detectar quando a porta abre ou fecha monitorando as mudanças de estado no pino de entrada do ESP8266:

  • Se o estado mudar de LOW para HIGH, a abertura da porta foi detectada
  • Se o estado mudar de HIGH para LOW, o fechamento da porta foi detectado

Diagrama de Ligação

Diagrama de ligação do ESP8266 NodeMCU com sensor de porta

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.

Como Programar o Sensor de Porta

  • Configura o pino do ESP8266 no modo de entrada digital usando a função pinMode(). Como exemplo, o pino D7 é configurado como entrada.
pinMode(D7, INPUT_PULLUP);
  • Utiliza a função digitalRead() para avaliar o estado do pino do ESP8266.
int door_state = digitalRead(D7);

Código ESP8266 - Verificar o Estado Aberto e Fechado da Porta

/* * 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-door-sensor */ #define DOOR_SENSOR_PIN D7 // The ESP8266 pin D7 connected to door sensor's pin int door_state; void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode } void loop() { door_state = digitalRead(DOOR_SENSOR_PIN); // read state if (door_state == HIGH) { Serial.println("The door is open"); } else { Serial.println("The door is closed"); } }

Passos Rápidos

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

  • Veja o tutorial como configurar o ambiente para o ESP8266 no 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 o Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Copie o código e abra-o com o Arduino IDE.
  • Clique no botão Upload da IDE para enviar o código para o ESP8266.
  • Aproxime o ímã do reed switch e depois afaste-o.
  • Veja o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
The door is open The door is open The door is closed The door is closed The door is closed The door is closed The door is closed The door is open The door is open
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Código ESP8266 - Detectar Eventos de Abertura e Fechamento da Porta

/* * 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-door-sensor */ #define DOOR_SENSOR_PIN D7 // The ESP8266 pin D7 connected to door sensor's pin int door_state; // current state of door sensor int prev_door_state; // previous state of door sensor void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { prev_door_state = door_state; // save the last state door_state = digitalRead(DOOR_SENSOR_PIN); // read new state if (prev_door_state == LOW && door_state == HIGH) { // state change: LOW -> HIGH Serial.println("The door-opening has been detected"); // TODO: turn on alarm, light or send notification ... } else if (prev_door_state == HIGH && door_state == LOW) { // state change: HIGH -> LOW Serial.println("The door-closing has been detected"); // TODO: turn off alarm, light or send notification ... } }
  • Copie o código e abra-o no Arduino IDE.
  • Clique no botão Upload para transferi-lo para o ESP8266.
  • Aproxime o ímã do reed switch e depois afaste-o.
  • Veja o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
The door-closing has been detected The door-opening has been detected
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Vídeo

Referências de Funções

※ 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!