Contrôle par bouton d'un verrou électromagnétique avec Arduino Nano

Le tutoriel vous explique comment utiliser Arduino Nano et un bouton pour contrôler la serrure de porte à l'aide d'un verrou électromagnétique. Lorsque le bouton est pressé, la porte sera déverrouillée pendant un temps spécifique (par exemple, 10 secondes). Après cela, elle sera à nouveau verrouillée.

Nous progresserons en deux étapes, du plus facile au plus difficile :

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×Electromagnetic Lock
1×Relay
1×12V Power Adapter
1×DC Power Jack
1×Push Button
1×(Optional) Panel-mount Push Button
1×Breadboard
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

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 de la serrure électromagnétique

Si vous n'êtes pas familier avec les serrures électromagnétiques et les boutons (y compris les brochages, les fonctionnalités et la programmation), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

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

This image is created using Fritzing. Click to enlarge image

Code Arduino Nano - Bouton Contrôle Serrure Électromagnétique Sans Antirebond

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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-nano/arduino-nano-button-control-electromagnetic-lock */ #define BUTTON_PIN 8 // The Arduino Nano pin connected to button's pin #define RELAY_PIN 2 // The Arduino Nano pin connected to relay's pin int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode digitalWrite(RELAY_PIN, HIGH); // lock the door button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == 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

  • Connectez un Arduino Nano à un PC à l'aide d'un câble USB.
  • Ouvrez l'Arduino IDE, sélectionnez la carte et le port appropriés.
  • Copiez le code ci-dessus et ouvrez-le dans l'Arduino IDE.
  • Cliquez sur le bouton Upload dans l'Arduino IDE pour transférer le code sur l'Arduino Nano.
  • Placez la plaque d'armature près de l'électroaimant.
  • Appuyez une fois sur le bouton.
  • Observez l'attraction entre la plaque d'armature et l'électroaimant pendant 10 secondes.

Explication du code

Découvrez l'explication ligne par ligne contenue dans les commentaires du code source !

※ NOTE THAT:

En pratique, le code mentionné ci-dessus peut ne pas toujours fonctionner correctement. Pour garantir son bon fonctionnement, nous devons debouncer pour le bouton. Le debouncing pour le bouton n'est pas une tâche facile pour les débutants. Cependant, grâce à la bibliothèque ezButton, cela peut être fait facilement.

Code Arduino Nano - Contrôle du verrouillage électromagnétique par bouton avec anti-rebond

Pourquoi le debounce est-il nécessaire ? Consultez le tutoriel Arduino Nano - Debounce de bouton pour plus d'informations.

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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-nano/arduino-nano-button-control-electromagnetic-lock */ #include <ezButton.h> #define BUTTON_PIN 8 // The Arduino Nano pin connected to button's pin #define RELAY_PIN 2 // The Arduino Nano pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(RELAY_PIN, OUTPUT); // set arduino 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

  • Installez la bibliothèque ezButton. Consultez Comment faire pour les instructions.
  • Ouvrez le code dans l'IDE Arduino et cliquez sur le bouton Upload pour le télécharger sur l'Arduino Nano.
  • Rapprochez la platine d'armature de l'électroaimant et appuyez une fois sur le bouton.
  • Observez l'attraction entre la platine d'armature et l'électroaimant pendant 10 secondes.

※ NOTE THAT:

Dans le code ci-dessus, nous avons utilisé la fonction de délai. Par conséquent, nous n'avons pas besoin de mettre en œuvre l'anti-rebond pour le bouton. Néanmoins, nous proposons toujours le code avec anti-rebond au cas où vous souhaiteriez exécuter des tâches supplémentaires sans utiliser la fonction de délai. Pour plus d'informations, consultez Comment utiliser millis() à la place de 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!