Arduino UNO R4 - Sensor de Porta

Este tutorial ensina como usar um Arduino UNO R4 e um sensor de porta para monitorar o estado aberto ou fechado da sua porta ou janela. Vamos aprender a instalar o sensor de porta e conectá-lo ao Arduino, e depois a programar o Arduino para ler o estado do sensor de porta.

Sensor de porta no Arduino UNO R4

Sobre o Sensor de Porta

Pinagem

O sensor de porta tem duas partes.

  • Uma chave reed com dois conectores metálicos
  • Um ímã
Pinagem do Sensor de Porta

Como em uma chave ou botão comum, NÃO precisamos distinguir entre os dois pinos da chave reed.

Como Funciona

O ímã é fixado na porta ou na janela, que se move, e a chave reed é fixada no batente, que não se move. Quando a porta está fechada, essas duas partes ficam próximas uma da outra.

  • Quando o ímã está perto da chave reed, o circuito da chave reed fecha.
  • Quando o ímã está longe da chave reed, o circuito da chave reed abre.
Como Funciona o Sensor de Porta

※ Nota:

A chave reed NÃO envia sinais LOW ou HIGH diretamente. Ela só mostra os estados aberto ou fechado. A forma como a conectamos ao Arduino UNO R4 determina se o pino lê LOW, HIGH ou um valor flutuante (que é imprevisível). Para evitar esse valor flutuante, precisamos conectar um resistor pull-up ou pull-down ao pino do Arduino UNO R4.

Se conectarmos um pino da chave reed ao GND e o outro pino a um pino de entrada do Arduino UNO R4 com um resistor pull-up (interno ou adicionado separadamente):

  • Quando o ímã está perto da chave reed, o pino de entrada do Arduino UNO R4 lê LOW.
  • Quando o ímã está longe da chave reed, o pino de entrada do Arduino UNO R4 lê HIGH.

Assim:

  • Para saber se a porta está aberta ou fechada, olhe o pino de entrada do Arduino UNO R4:
    • Se o pino mostra LOW, a porta está fechada.
    • Se o pino mostra HIGH, a porta está aberta.
  • Para saber quando a porta abre ou fecha, observe as mudanças no estado do pino de entrada do Arduino UNO R4:
    • Uma mudança de LOW para HIGH significa que a porta está abrindo.
    • Uma mudança de HIGH para LOW significa que a porta está fechando.

Diagrama de Ligação

Diagrama de ligação do sensor de porta no Arduino UNO R4

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.

Como Programar o Sensor de Porta

  • O pino do Arduino UNO R4 é configurado no modo de entrada digital com a função pinMode(). Por exemplo, o pino 9.
pinMode(9, INPUT_PULLUP);
  • Lê o estado do pino do Arduino UNO R4 usando a função digitalRead().
int door_state = digitalRead(9);

Código Arduino UNO R4 - Verificar o Estado Aberto e Fechado da Porta

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-door-sensor */ #define DOOR_SENSOR_PIN 9 // The Arduino UNO R4 pin connected to door sensor's pin int door_state; void setup() { Serial.begin(9600); // initialize serial pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set arduino pin to 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

Siga estas instruções passo a passo:

  • Se esta é a sua primeira vez usando o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima na Arduino IDE.
  • Ligue os componentes conforme o diagrama fornecido.
  • Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Selecione a placa Arduino Uno R4 correta (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
  • Copie o código acima e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para enviar o código ao Arduino UNO R4.
  • Aproxime o ímã da chave reed e depois afaste-o.
  • Confira os resultados no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' 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
Arduino Uno R4 WiFi on COM15
2

Código Arduino UNO R4 - Detectar Eventos de Abertura e Fechamento da Porta

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-door-sensor */ #define DOOR_SENSOR_PIN 9 // The Arduino UNO R4 pin 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 serial pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set arduino pin to 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 is 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 is detected"); // TODO: turn off alarm, light or send notification ... } }
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para enviar o código ao seu Arduino UNO R4.
  • Aproxime um ímã da chave reed e depois afaste-o.
  • Confira os resultados no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
The door closing is detected The door opening is detected
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2

Vídeo

O vídeo de demonstração abaixo usa o código abaixo:

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-door-sensor */ #define DOOR_SENSOR_PIN 2 #define RED_LED_PIN 5 #define BUZZER_PIN 6 const unsigned long BLINK_INTERVAL = 200; unsigned long previousMillis = 0; bool alarmState = false; void setAlarmState(uint8_t state) { if(state){ tone(BUZZER_PIN, 2000); digitalWrite(RED_LED_PIN, LOW); } else{ noTone(BUZZER_PIN); digitalWrite(RED_LED_PIN, HIGH); } } void setup() { Serial.begin(9600); pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); pinMode(RED_LED_PIN, OUTPUT); pinMode(BUZZER_PIN, OUTPUT); digitalWrite(RED_LED_PIN, HIGH); noTone(BUZZER_PIN); } void loop() { int doorState = digitalRead(DOOR_SENSOR_PIN); if (doorState == HIGH) { Serial.println("The door is open"); } else { Serial.println("The door is closed"); } // Door open if (doorState == HIGH) { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= BLINK_INTERVAL) { previousMillis = currentMillis; alarmState = !alarmState; setAlarmState(alarmState); } } // Door closed else { noTone(BUZZER_PIN); digitalWrite(RED_LED_PIN, HIGH); alarmState = false; } }

Tutoriais Relacionados

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