Arduino - Keypad - Elektromagnetisch Slot

In deze handleiding leert u hoe u een keypad, elektromagnetisch slot en Arduino samen kunt gebruiken. Concreet: als een gebruiker het wachtwoord correct invoert op het keypad, schakelt de Arduino het elektromagnetische slot aan.

De handleiding bevat ook code die het elektromagnetische slot gedurende een bepaalde tijd inschakelt en daarna weer uitschakelt zonder gebruik te maken van de delay()-functie. De Arduino-code ondersteunt bovendien meerdere wachtwoorden.

Arduino keypad elektromagnetisch slot

Benodigde Hardware

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×Toetsenbord 3x4
1×Relais
1×Jumper wires (verbindingsdraden)
1×Elektromagnetisch slot
1×12V adapter (voeding)
1×(optioneel) DC power jack
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

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 Keypad en Elektromagnetisch Slot

Als u niet bekend bent met het keypad en elektromagnetisch slot (pinout, werking, programmeren, enz.), leer er dan meer over in de volgende tutorials:

Bedradingsschema

Arduino keypad elektromagnetisch slot bedrading

This image is created using Fritzing. Click to enlarge image

Arduino Code - schakel elektromagnetisch slot aan als het wachtwoord correct is

De onderstaande code schakelt een elektromagnetisch slot aan wanneer het ingevoerde wachtwoord correct is.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-keypad-electromagnetic-lock */ #include <Keypad.h> #define RELAY_PIN A0 // the Arduino pin that controls electromagnetic lock via relay #define ROW_NUM 4 // four rows #define COLUMN_NUM 3 // three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte pin_column[COLUMN_NUM] = {5, 4, 3}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234"; // change your password here const String password_2 = "56789"; // change your password here const String password_3 = "901234"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, HIGH); // lock the electromagnetic lock } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The password is correct => unlock"); digitalWrite(RELAY_PIN, LOW); } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Stapsgewijze handleiding

  • Verbind de Arduino via USB-kabel met de PC
  • Open de Arduino IDE, selecteer het juiste board en de juiste poort
  • Navigeer in de linkerzijbalk van de Arduino IDE naar het Libraries icoon
  • Zoek op “keypad”, en vind de keypad bibliotheek van Mark Stanley en Alexander Brevig
  • Klik op de Installeren knop om de keypad bibliotheek te installeren
Arduino keypad bibliotheek
  • Kopieer de bovenstaande code en open deze in de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te laden
Arduino IDE Code Uploaden
  • Druk op de toetsen 8123 en druk vervolgens op #
  • Druk op de toetsen 1234 en druk vervolgens op #
  • Bekijk het resultaat in de Serial Monitor en de status van het elektromagnetische slot
COM6
Send
The password is incorrect, try again The password is correct => unlock
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code-uitleg

Gerechtigde wachtwoorden zijn vooraf gedefinieerd in de Arduino-code.

Er wordt een string gebruikt om het door de gebruiker ingevoerde wachtwoord op te slaan, genoemd input string. Op het keypad hebben twee toetsen (* en #) speciale functies: het wissen van het wachtwoord en het beëindigen van het wachtwoord. Wanneer een toets op het keypad wordt ingedrukt:

  • Als de ingedrukte toets niet één van de twee speciale toetsen is, wordt deze toegevoegd aan de input string
  • Als de ingedrukte toets * is, wordt de input string gewist. Dit kunt u gebruiken om opnieuw te beginnen met het invoeren van het wachtwoord
  • Als de ingedrukte toets # is:
    • Wordt de input string vergeleken met de vooraf gedefinieerde wachtwoorden. Als er een match is met één van de wachtwoorden, wordt het elektromagnetische slot ingeschakeld.
    • Ongeacht of het wachtwoord correct is of niet, wordt de input string gewist voor de volgende invoer

Arduino Code - schakel elektromagnetisch slot voor een bepaalde tijd in bij correct wachtwoord

De onderstaande code schakelt het elektromagnetische slot 5 seconden in wanneer het wachtwoord correct is. Na 5 seconden wordt het slot weer uitgeschakeld.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-keypad-electromagnetic-lock */ #include <Keypad.h> #include <ezOutput.h> #define UNLOCK_TIME 5000 // in milliseconds #define RELAY_PIN A0 // the Arduino pin that controls electromagnetic lock via relay #define ROW_NUM 4 // four rows #define COLUMN_NUM 3 // three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte pin_column[COLUMN_NUM] = {5, 4, 3}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); ezOutput relay(RELAY_PIN); const String password_1 = "1234"; // change your password here const String password_2 = "56789"; // change your password here const String password_3 = "901234"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed relay.high(); // lock the electromagnetic lock } void loop() { relay.loop(); // MUST call the loop() function first char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The password is correct => unlock"); relay.high(); // set high before making a low pulse relay.pulse(UNLOCK_TIME); // deactivate the electromagnetic lock during UNLOCK_TIME duration } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Let op dat bovenstaande code gebruikmaakt van de ezOutput bibliotheek, die het beheer van tijd mogelijk maakt zonder de code te blokkeren. U kunt meer informatie vinden in de ezOutput Library Installatiehandleiding

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.

Opmerkingen

※ 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!