ESP32 - Contrôle de verrouillage électromagnétique par bouton

Ce tutoriel vous explique comment utiliser l'ESP32 avec un bouton et un verrou électromagnétique. En détail, nous apprendrons à utiliser le bouton pour contrôler le verrou électromagnétique sans anti-rebond et avec anti-rebond. Chaque fois que le bouton est pressé, déverrouillez la porte pendant 10 secondes puis verrouillez la porte.

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×Electromagnetic Lock
1×Relay
1×12V Power Adapter
1×Push Button
1×(Optional) Panel-mount Push Button
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) ESP32 Screw Terminal Adapter

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 bouton et du verrou électromagnétique

Nous disposons de tutoriels spécifiques sur la serrure électromagnétique et le bouton. Chaque tutoriel contient des informations détaillées et des instructions étape par étape sur le brochage du matériel, le principe de fonctionnement, la connexion de câblage à l'ESP32, le code ESP32... Pour en savoir plus, consultez les liens suivants :

Diagramme de câblage

Schéma de câblage du verrou électromagnétique avec bouton ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

Code ESP32 - Contrôle de serrure électromagnétique par bouton sans anti-rebond

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32/esp32-button-controls-electromagnetic-lock */ #define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button's pin #define RELAY_PIN 27 // ESP32 pin GPIO27 connected to relay's pin // variables will change: int lastButtonState; // the previous state of button int currentButtonState; // the current state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set ESP32 pin to output mode digitalWrite(RELAY_PIN, HIGH); // lock the door currentButtonState = digitalRead(BUTTON_PIN); } void loop() { lastButtonState = currentButtonState; // save the last state currentButtonState = digitalRead(BUTTON_PIN); // read new state if (lastButtonState == HIGH && currentButtonState == 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 } }

Étapes rapides

  • Si c'est la première fois que vous utilisez l'ESP32, consultez comment configurer l'environnement pour l'ESP32 sur Arduino IDE.
  • Effectuez le câblage comme sur l'image ci-dessus.
  • Connectez la carte ESP32 à votre PC via un câble micro USB.
  • Ouvrez l'Arduino IDE sur votre PC.
  • Sélectionnez la bonne carte ESP32 (par exemple, Module de développement ESP32) et le port COM.
  • Copiez le code ci-dessus et collez-le dans l'Arduino IDE.
  • Compilez et téléchargez le code sur la carte ESP32 en cliquant sur le bouton Upload de l'Arduino IDE.
  • Rapprochez la plaque d'armature de l'électroaimant.
  • Appuyez sur le bouton une fois.
  • Observez l'attraction entre la plaque d'armature et l'électroaimant pendant 10 secondes.

Explication du code ligne par ligne

Le code ESP32 ci-dessus contient des explications ligne par ligne. Veuillez lire les commentaires dans le code !

Dans la pratique, nous devons supprimer le rebond du bouton. La partie suivante montrera comment supprimer le rebond pour le bouton.

Code ESP32 - Bouton contrôle un verrou électromagnétique avec anti-rebond

Pourquoi doit-on appliquer un anti-rebond sur le bouton ? ⇒ voir ESP32 - Tutoriel sur l'anti-rebond du bouton

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32/esp32-button-controls-electromagnetic-lock */ #include <ezButton.h> #define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button's pin #define RELAY_PIN 27 // ESP32 pin GPIO27 connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_PIN, OUTPUT); // set ESP32 pin to 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 } }

Étapes rapides

  • Si c'est la première fois que vous utilisez ESP32, consultez comment configurer l'environnement pour ESP32 sur Arduino IDE.
  • Installez la bibliothèque ezButton. Voir Comment faire
  • Copiez le code ci-dessus et collez-le dans Arduino IDE.
  • Compilez et téléchargez le code sur la carte ESP32 en cliquant sur le bouton Upload dans Arduino IDE
  • Placez la plaque d'armature près de l'électroaimant.
  • Appuyez sur le bouton une fois.
  • Observez l'attraction entre la plaque d'armature et l'électroaimant pendant 10 secondes.

※ NOTE THAT:

Étant donné que le code ci-dessus utilise la fonction delay(), nous n'avons pas besoin de faire de debouncing pour le bouton. Cependant, nous fournissons toujours le code avec debouncing au cas où vous modifieriez ce code et n'utilisiez pas la fonction delay().

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!