ESP32 - Sensor de Porta

O sensor de porta (também conhecido como sensor de entrada, sensor de contato ou sensor de janela) é muito usado em vários tipos de aplicação, principalmente em segurança. Ele é usado para detectar/monitorar entradas (como porta, janela...). Este tutorial ensina como usar o ESP32 com o sensor de porta.

Sobre o Sensor de Porta

Pinagem do Sensor de Porta

O sensor de porta tem dois componentes:

  • Um ímã
  • Um reed switch, que tem dois fios
Pinagem do sensor de porta

Assim como em uma chave/botão, NÃO precisamos diferenciar os dois fios do reed switch.

Como o Sensor de Porta Funciona

O ímã e o reed switch são instalados na porta/janela da seguinte forma:

  • O ímã é a parte móvel. Ele deve ser fixado na porta/janela
  • O reed switch é a parte fixa. Ele deve ser fixado no batente da porta

Os dois componentes ficam em contato quando a porta está fechada.

  • O circuito do reed switch fica fechado quando ele está perto do ímã
  • O circuito do reed switch fica aberto quando ele está longe do ímã
Como o sensor de porta funciona

※ Nota:

Assim como em um botão, DEVEMOS usar o resistor de pull-up ou pull-down no pino do ESP32 que está ligado ao reed switch

Se ligarmos o reed switch da seguinte forma: um fio no GND e o outro no pino de entrada do ESP32 com um resistor de pull-up:

  • O pino de entrada do ESP32 fica em LOW quando o ímã está perto do reed switch
  • O pino de entrada do ESP32 fica em HIGH quando o ímã está longe do reed switch

Então:

  • Se o pino de entrada do ESP32 estiver em LOW, a porta está fechada
  • Se o pino de entrada do ESP32 estiver em HIGH, a porta está aberta
  • Se o pino de entrada do ESP32 mudar de LOW para HIGH, a porta está abrindo
  • Se o pino de entrada do ESP32 mudar de HIGH para LOW, a porta está fechando

Diagrama de Ligação entre o Sensor de Porta e o ESP32

  • Como conectar o ESP32 e o sensor de porta usando uma protoboard
Diagrama de ligação do sensor de porta com ESP32

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.

Como conectar o ESP32 e o sensor de porta

Como Programar o Sensor de Porta

  • Inicialize o pino do ESP32 no modo de entrada digital usando a função pinMode(). Por exemplo, o pino GPIO19
pinMode(19, INPUT_PULLUP);
  • Leia o estado do pino do ESP32 usando a função digitalRead().
int doorState = digitalRead(19);

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

/* * 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-door-sensor */ #define DOOR_SENSOR_PIN 19 // ESP32 pin GPIO19 connected to door sensor's pin int doorState; void setup() { Serial.begin(9600); // initialize serial pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode } void loop() { doorState = digitalRead(DOOR_SENSOR_PIN); // read state if (doorState == HIGH) { Serial.println("The door is open"); } else { Serial.println("The door is closed"); } }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • Copie o código acima e cole na Arduino IDE.
  • Compile e faça upload do código para a placa ESP32 clicando no botão Upload na Arduino IDE
  • Aproxime o ímã do reed switch e depois afaste-o do reed switch.
  • Veja o resultado no Serial Monitor. Ele fica parecido com o mostrado abaixo:.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev 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
ESP32 Dev Module on COM15
2

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

/* * 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-door-sensor */ #define DOOR_SENSOR_PIN 19 // ESP32 pin GPIO19 connected to door sensor's pin int currentDoorState; // current state of door sensor int lastDoorState; // previous state of door sensor void setup() { Serial.begin(9600); // initialize serial pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode currentDoorState = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { lastDoorState = currentDoorState; // save the last state currentDoorState = digitalRead(DOOR_SENSOR_PIN); // read new state if (lastDoorState == LOW && currentDoorState == HIGH) { // state change: LOW -> HIGH Serial.println("The door-opening event is detected"); // TODO: turn on alarm, light or send notification ... } else if (lastDoorState == HIGH && currentDoorState == LOW) { // state change: HIGH -> LOW Serial.println("The door-closing event is detected"); // TODO: turn off alarm, light or send notification ... } }
  • Copie o código acima e cole na Arduino IDE.
  • Compile e faça upload do código para a placa ESP32 clicando no botão Upload na Arduino IDE
  • Aproxime o ímã do reed switch e depois afaste-o do reed switch.
  • Veja o resultado no Serial Monitor. Ele fica parecido com o mostrado abaixo:.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
The door-closing event is detected The door-opening event is detected
Ln 11, Col 1
ESP32 Dev Module on COM15
2

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!