Arduino - Capteur de porte

Le capteur de porte est largement utilisé dans le domaine de la sécurité, il sert à détecter/surveiller les entrées (comme les portes, les fenêtres...). Le capteur de porte est également connu sous les noms de "capteurs d'entrée", "capteurs de contact" ou "capteurs de fenêtre".

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×Door Sensor
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur de porte

Brochage

Le capteur de porte comprend deux composants :

  • Un interrupteur à lame souple avec deux broches
  • Un aimant
Schéma de brochage du capteur de porte

Tout comme un interrupteur/bouton normal, nous n'avons pas besoin de distinguer les deux broches de l'interrupteur à lames.

Comment ça fonctionne

L'aimant est fixé à la porte/fenêtre (partie mobile) et l'interrupteur à lame souple est fixé au cadre de la porte (partie fixe). Les deux composants sont en contact lorsque la porte est fermée.

  • Lorsque l'aimant est proche de l'interrupteur à lame, le circuit de l'interrupteur à lame est fermé.
  • Lorsque l'aimant est éloigné de l'interrupteur à lame, le circuit de l'interrupteur à lame est ouvert.
Capteur de porte fonctionnement et brochage

※ NOTE THAT:

Le commutateur à lames lui-même ne produit PAS de sortie BASSE ou HAUTE sur ses broches. C'est juste un état fermé ou ouvert. Selon la manière dont nous connectons ses broches à l'Arduino, la valeur sur la broche peut être BASSE, HAUTE ou une valeur flottante (valeur imprévisible). Pour éviter la valeur flottante, nous DEVONS utiliser une résistance de tirage vers le haut ou vers le bas sur la broche de l'Arduino.

Si nous connectons une broche de l'interrupteur à lames à GND, l'autre broche de l'interrupteur à lames à la broche d'entrée de l'Arduino avec une résistance de tirage (interne ou externe) :

  • Lorsque l'aimant est proche de l'interrupteur à lames, la valeur sur la broche d'entrée de l'Arduino est BASSE.
  • Lorsque l'aimant est éloigné de l'interrupteur à lames, la valeur sur la broche d'entrée de l'Arduino est HAUTE.

Alors :

  • Pour vérifier l'état de la porte, nous vérifions simplement l'état de la broche d'entrée de l'Arduino :
    • Si l'état est LOW, la porte est fermée
    • Si l'état est HIGH, la porte est ouverte
  • Pour détecter les événements d'ouverture/fermeture de la porte, nous pouvons détecter le changement d'état sur la broche d'entrée de l'Arduino :
    • Si l'état passe de LOW à HIGH, l'événement d'ouverture de porte est détecté
    • Si l'état passe de HIGH à LOW, l'événement de fermeture de porte est détecté

Diagramme de câblage

Schéma de câblage du capteur de porte Arduino

This image is created using Fritzing. Click to enlarge image

Comment programmer un capteur de porte

  • Initialise la broche Arduino en mode entrée numérique en utilisant la fonction pinMode(). Par exemple, la broche 13.
pinMode(13, INPUT_PULLUP);
  • Lit l'état de la broche Arduino en utilisant la fonction digitalRead().
int doorState = digitalRead(13);

Code Arduino - Vérifier l'état d'ouverture et de fermeture de la porte

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-door-sensor */ const int DOOR_SENSOR_PIN = 13; // Arduino pin connected to door sensor's pin int doorState; void setup() { Serial.begin(9600); // initialize serial pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set arduino 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"); } }

Étapes rapides

  • Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
  • Cliquez sur le bouton Upload dans Arduino IDE pour charger le code sur Arduino
  • Approchez l'aimant du interrupteur à lame souple puis éloignez-le.
  • Regardez le résultat sur le moniteur série.
COM6
Send
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
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Arduino - Détecter les événements d'ouverture et de fermeture de porte

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-door-sensor */ const int DOOR_SENSOR_PIN = 13; // Arduino pin 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 arduino 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 ... } }
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino.
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers Arduino.
  • Approchez l'aimant du contact reed puis éloignez-le.
  • Consultez le résultat sur le moniteur série.
COM6
Send
The door-closing event is detected The door-opening event is detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!