ESP8266 - Bouton - Relais

Ce tutoriel vous explique comment utiliser l'ESP8266 et un bouton pour contrôler le relais. En connectant le relais à un verrou solénoïde, une ampoule, une bande LED, un moteur ou un actionneur..., nous pouvons utiliser un bouton pour les contrôler. Nous apprendrons deux applications différentes :

Application 1 - L'état du relais est synchronisé avec l'état du bouton. En détail :

Application 2 - L'état du relais est basculé à chaque fois que le bouton est pressé. Plus spécifiquement :

Dans l'Application 2, nous devons éliminer les rebonds du bouton pour assurer son bon fonctionnement. Nous verrons pourquoi c'est important en comparant le comportement du relais lorsque nous utilisons le code ESP8266 avec et sans élimination des rebonds du bouton.

Préparation du matériel

1×ESP8266 NodeMCU
1×Micro USB Cable
1×Push Button
1×(Optional) Panel-mount Push Button
1×Relay
1×Breadboard
1×Jumper Wires
1×(Optional) Solenoid Lock
1×(Optional) 12V Power Adapter
1×(Optional) DC Power Jack
1×(Optional) 5V Power Adapter for ESP8266
1×(Optional) ESP8266 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 relais et du bouton

Si vous n'êtes pas familier avec le relais et le bouton (y compris le brochage, le fonctionnement et la programmation), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

Schéma de câblage du relais à bouton ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.

Application 1 - L'état du relais est synchronisé avec l'état du bouton

Code ESP8266

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-button-relay */ #define BUTTON_PIN D1 // The ESP8266 pin D1 connected to button's pin #define RELAY_PIN D7 // The ESP8266 pin D7 connected to relay's pin void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode pinMode(RELAY_PIN, OUTPUT); // Configure the ESP8266 pin to the output mode } void loop() { int button_state = digitalRead(BUTTON_PIN); // read new state if (button_state == LOW) { Serial.println("The button is being pressed"); digitalWrite(RELAY_PIN, HIGH); // turn on } else if (button_state == HIGH) { Serial.println("The button is unpressed"); digitalWrite(RELAY_PIN, LOW); // turn off } }

Étapes rapides

Pour commencer avec l'ESP8266 sur Arduino IDE, suivez ces étapes :

  • Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est la première fois que vous utilisez ESP8266.
  • Câblez les composants comme indiqué sur le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, par exemple (ex. NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Connectez un ESP8266 à votre ordinateur avec un câble USB.
  • Lancez Arduino IDE, et sélectionnez la bonne carte et le bon port.
  • Copiez le code et ouvrez-le dans Arduino IDE.
  • Cliquez sur le bouton Upload dans Arduino IDE pour compiler et télécharger le code sur l'ESP8266.
Téléversement de code dans l'IDE Arduino
  • Appuyez sur le bouton et maintenez-le enfoncé pendant quelques secondes.
  • Observez le changement d'état du relais.

Vous verrez que l'état du relais est synchronisé avec l'état du bouton.

Explication du code

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

Application 2 - Le bouton bascule le relais

Code ESP8266 - Bouton bascule relais sans anti-rebond

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-button-relay */ #define BUTTON_PIN D1 // The ESP8266 pin D1 connected to button's pin #define RELAY_PIN D7 // The ESP8266 pin D7 connected to relay's pin int relay_state = LOW; // The current state of relay int button_state; // The current state of button int last_button_state; // The previous state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode pinMode(RELAY_PIN, OUTPUT); // Configure the ESP8266 pin to the output mode button_state = digitalRead(BUTTON_PIN); } void loop() { last_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if (last_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of relay relay_state = !relay_state; // control relay according to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Explication du code

Vous pouvez trouver l'explication dans les lignes de commentaire du code ESP8266 ci-dessus.

Dans le code, l'expression relay_state = !relay_state est équivalente au code suivant :

if(relay_state == LOW) relay_state = HIGH; else relay_state = LOW;

Étapes rapides

  • Copiez le code et ouvrez-le dans l'IDE Arduino.
  • Téléversez le code sur le ESP8266.
  • Appuyez plusieurs fois sur le bouton de relâchement.
  • Observez le changement d'état du relais.

Vous pourriez remarquer que le relais s'active ou se désactive chaque fois que vous appuyez sur le bouton, mais cela peut ne pas toujours être le même. Parfois, il peut basculer plusieurs fois rapidement avec une seule pression sur le bouton, ou il se peut qu'il ne bascule pas du tout (basculer deux fois très rapidement, ce qui n'est pas visible à l'œil nu).

⇒ Pour résoudre ce problème, nous devons appliquer un anti-rebond pour le bouton.

Code ESP8266 - Bouton bascule relais avec anti-rebond

Le debounce d'un bouton peut être difficile pour les débutants. Heureusement, la bibliothèque ezButton facilite cette tâche.

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

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-button-relay */ #include <ezButton.h> #define BUTTON_PIN D1 // The ESP8266 pin D1 connected to button's pin #define RELAY_PIN D7 // The ESP8266 pin D7 connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; int relay_state = LOW; // The current state of relay void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(RELAY_PIN, OUTPUT); // Configure the ESP8266 pin to the output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { Serial.println("The button is pressed"); // toggle state of relay relay_state = !relay_state; // control relay according to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Étapes rapides

  • Installez la bibliothèque ezButton. Consultez Comment faire pour les instructions.
  • Copiez le code et ouvrez-le avec l'Arduino IDE.
  • Cliquez sur le bouton Upload de l'Arduino IDE pour charger le code sur l'ESP8266.
  • Appuyez sur le bouton plusieurs fois et relâchez.
  • Vérifiez le changement d'état du relais.

Vous remarquerez que le relais ne s'allumera ou ne s'éteindra qu'une seule fois à chaque fois que vous appuierez sur le bouton.

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!