ESP32 - Knop Bedient Elektromagnetisch Slot

Deze tutorial legt uit hoe u een ESP32 gebruikt in combinatie met een knop en een elektromagnetisch slot. We leren in detail hoe u de knop gebruikt om het elektromagnetische slot aan te sturen, zowel zonder als met debouncing (ontstoring). Elke keer dat de knop wordt ingedrukt, wordt de deur 10 seconden ontgrendeld en daarna weer vergrendeld.

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB Kabel Type-C
1×Elektromagnetisch Slot
1×Relais
1×12V Voedingsadapter
1×Breadboard-knop met kap
1×Breadboard-knopset
1×Paneel-montage Drukknop
1×Drukknopmodule
1×Breadboard (experimenteerprint)
1×Jumper Draden
1×(Optioneel) DC Power Jack
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de Knop en het Elektromagnetisch Slot

We hebben specifieke tutorials over het elektromagnetische slot en de knop. Elke tutorial bevat gedetailleerde informatie en stapsgewijze instructies over hardware pinout, werkingsprincipe, bedradingsverbinding met ESP32, ESP32-code... Leer meer over deze onderwerpen via de volgende links:

Bedradingsschema

ESP32 Knop Elektromagnetisch Slot Bedradingsschema

This image is created using Fritzing. Click to enlarge image

ESP32 Code - Knop Bedient Elektromagnetisch Slot Zonder Debouncing

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 } }

Snelle Stappen

  • Als u voor het eerst ESP32 gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading zoals op bovenstaande afbeelding.
  • Verbind de ESP32 met uw pc via een micro USB-kabel.
  • Open Arduino IDE op uw pc.
  • Selecteer het juiste ESP32 board (bijv. ESP32 Dev Module) en de juiste COM-poort.
  • Kopieer de bovenstaande code en plak deze in Arduino IDE.
  • Compileer en upload de code naar de ESP32 door te klikken op de Upload-knop in Arduino IDE.
  • Plaats de ankerplaat dicht bij de elektromagneet.
  • Druk eenmaal op de knop.
  • Zie de aantrekkingskracht tussen de ankerplaat en elektromagneet gedurende 10 seconden.

Regel-voor-regel Code Uitleg

De bovenstaande ESP32-code bevat regel-voor-regel uitleg. Lees alstublieft de comments in de code!

In de praktijk moeten we de knop debouncen. Het volgende deel laat zien hoe u debouncing voor de knop toepast.

ESP32 Code - Knop Bedient Elektromagnetisch Slot Met Debouncing

Waarom debouncing nodig is voor de knop? ⇒ zie ESP32 - Knop Debounce tutorial

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 } }

Snelle Stappen

  • Als u voor het eerst ESP32 gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Installeer de ezButton library. Zie Hoe te doen
  • Kopieer de bovenstaande code en plak die in Arduino IDE.
  • Compileer en upload de code naar de ESP32 door te klikken op de Upload-knop in Arduino IDE.
  • Plaats de ankerplaat dicht bij de elektromagneet.
  • Druk eenmaal op de knop.
  • Zie de aantrekkingskracht tussen de ankerplaat en elektromagneet gedurende 10 seconden.

※ Notiz:

Omdat de bovenstaande code de delay() functie gebruikt, is debouncing voor de knop formeel niet noodzakelijk. Toch bieden we code met debouncing aan voor het geval u deze code aanpast en delay() niet meer gebruikt.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u het proces gemakkelijk te volgen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!