Arduino - Keypad - Solenoïdeslot

In deze handleiding gaan we leren hoe u een keypad, solenoïdeslot en Arduino samen kunt gebruiken. Concreet: als een gebruiker het wachtwoord correct invoert op het keypad, schakelt de Arduino het solenoïdeslot aan.

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

Arduino keypad solenoid lock

Benodigde Hardware

1×Arduino Uno R3
1×USB 2.0-kabel type A/B
1×Toetsenbord 3x4
1×Relay (relais)
1×Jumper wires (verbindingsdraden)
1×Solenoïdeslot
1×12V voeding adapter
1×(optioneel) DC stroomaansluiting
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 Solenoïdeslot

Als u nog niet bekend bent met het keypad en solenoïdeslot (pinout, werking, programmering, etc.), bekijk dan de volgende tutorials:

Aansluitschema

Arduino keypad solenoid lock wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Code - schakel solenoïdeslot aan bij correct wachtwoord

De onderstaande code schakelt het solenoïdeslot in 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-solenoid-lock */ #include <Keypad.h> #define RELAY_PIN A0 // the Arduino pin that controls solenoid 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 solenoid 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 } } }

Snel aan de slag

  • Verbind de Arduino met de PC via de USB-kabel.
  • Open de Arduino IDE, selecteer het juiste board en de juiste poort.
  • Klik in de Arduino IDE op het Libraries icoon in de linker zijbalk.
  • Zoek naar “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 library
  • 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 uploaden.
Arduino IDE Upload Code
  • Druk de toetsen 7124 in en druk op #.
  • Druk de toetsen 1234 in en druk op #.
  • Bekijk het resultaat in de Seriële Monitor en de status van het solenoïdeslot.
COM6
Send
The password is incorrect, try again The password is correct => unlock
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Uitleg van de code

Toegestane wachtwoorden zijn vooraf gedefinieerd in de Arduino-code.

Een string wordt gebruikt om het door gebruikers ingevoerde wachtwoord op te slaan, dit wordt de input string genoemd. Op het keypad zijn twee toetsen (* en #) voor speciale functies: het wissen van het wachtwoord en het beëindigen van de invoer. Wanneer er een toets op het keypad wordt ingedrukt:

  • Als de ingedrukte toets niet een van de speciale toetsen is, wordt deze toegevoegd aan de input string.
  • Als de ingedrukte toets * is, wordt de input string gewist. U kunt deze 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 deze overeenkomt met een van de wachtwoorden, wordt het solenoïdeslot ingeschakeld.
    • Ongeacht of het wachtwoord correct is of niet, wordt de input string gewist om een nieuwe invoer te kunnen starten.

Arduino Code - schakel solenoïdeslot voor een bepaalde tijd in bij correct wachtwoord

De onderstaande code schakelt het solenoïdeslot 5 seconden in als 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-solenoid-lock */ #include <Keypad.h> #include <ezOutput.h> #define UNLOCK_TIME 5000 // in milliseconds #define RELAY_PIN A0 // the Arduino pin that controls solenoid 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 solenoid 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, turning ON relay"); relay.high(); // set high before making a low pulse relay.pulse(UNLOCK_TIME); // deactivate the solenoid 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: de bovenstaande code gebruikt de ezOutput bibliotheek, die het gemakkelijk maakt om tijd te beheren zonder het programma te blokkeren. U kunt de ezOutput Library Installatiegids raadplegen voor meer informatie.

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.

Reacties

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