Arduino - Toegangscontrole met Keypad

In deze tutorial leert u hoe u een toegangscontrolesysteem met wachtwoord maakt met een keypad en een solenoïde slot.

Wanneer de deur met het juiste wachtwoord wordt ontgrendeld, blijft deze 20 seconden open en sluit daarna automatisch weer af. De Arduino-code ondersteunt meerdere wachtwoorden.

Hardware Vereist

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×Toetsenbord 3x4 en 4x4 Kit
1×(Alternatief) Keypad 3x4
1×(Alternatief) Keypad 4x4
1×Relais
1×Solenoïde slot
1×12V Voedingsadapter
1×DC stroomaansluiting
1×Jumper draden
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ïde Slot

Als u niet bekend bent met solenoïde slot en knop (pinout, werking, programmeren ...), leer er meer over in de volgende tutorials:

Bedradingsschema

  • Arduino - Toegangscontrole met keypad en solenoïde slot
Arduino, keypad, solenoïde slot bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino Code - Toegangscontrolesysteem met wachtwoord via keypad en solenoïde slot

/* * 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-door-lock */ #include <Keypad.h> const int RELAY_PIN = A5; // the Arduino pin, which connects to the IN pin of relay const int ROW_NUM = 4; // four rows const int COLUMN_NUM = 4; // four columns char keys[ROW_NUM][COLUMN_NUM] = { {'1','2','3', 'A'}, {'4','5','6', 'B'}, {'7','8','9', 'C'}, {'*','0','#', 'D'} }; 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, 2}; //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 = "1234ABC"; // change your password here const String password_2 = "5642CD"; // change your password here const String password_3 = "4545B"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // lock the door } 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, unlocking the door in 20 seconds"); digitalWrite(RELAY_PIN, HIGH); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, LOW); // lock the door } 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 } } }

※ Notiz:

Het I2C-adres van een LCD kan verschillen per fabrikant. In de code gebruiken we 0x27, gespecificeerd door fabrikant DIYables

Snelle Stappen

  • Verbind de Arduino met uw PC via USB-kabel
  • Open de Arduino IDE, selecteer het juiste board en poort
  • Ga naar het Libraries-icoon in de linkerzijbalk van de Arduino IDE
  • Zoek op “keypad” en vind de keypad library van Mark Stanley, Alexander Brevig
  • Klik op de Installeren-knop om de keypad library te installeren
Arduino keypad library
  • Kopieer de bovenstaande code en open deze in de Arduino IDE
  • Klik op de Uploaden-knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Open de Seriële Monitor
  • Druk de toetsen 12345 en druk op #
  • Druk de toetsen 1234ABC en druk op #
  • Observeer de toestand van de vergrendeling gedurende 20 seconden
  • Bekijk het resultaat in de Seriële Monitor
COM6
Send
The password is incorrect, try again The password is correct, unlocking the door in 20 seconds
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Uitleg

Geldige wachtwoorden zijn vooraf gedefinieerd in de Arduino-code.

Er wordt een string gebruikt om het door gebruikers ingevoerde wachtwoord op te slaan, de zogenaamde input string. Op het keypad worden twee toetsen (* en #) gebruikt voor speciale functies: het wissen van het wachtwoord en het afronden van het wachtwoord. Het systeem werkt als volgt:

  • Behalve de twee speciale toetsen, wordt elke andere toets die wordt ingedrukt toegevoegd aan de input string
  • Als * wordt ingedrukt, wordt de input string gewist. Hiermee kunt u opnieuw beginnen met het invoeren van het wachtwoord
  • Als # wordt ingedrukt:
    • Wordt de input string vergeleken met de vooraf gedefinieerde wachtwoorden. Als er een match is, wordt het relais bestuurd om de deur te ontgrendelen.
    • Ongeacht of het wachtwoord correct is, wordt de input string gewist voor de volgende invoer

    ※ Notiz:

    • In bovenstaande code is voor eenvoud de delay-functie gebruikt. Het verdient de voorkeur om millis() te gebruiken in plaats van delay(). Zie Hoe milli() te gebruiken in plaats van delay()
    • U kunt een piezo buzzer toevoegen om een pieptoon te laten klinken bij elke toetsdruk op het keypad.
    • In deze code wordt de deur na 20 seconden opnieuw vergrendeld. U kunt dit vervangen door een deursensor. De deur wordt dan vergrendeld wanneer de sensor detecteert dat de deur door de gebruiker is gesloten.
    • De wachtwoorden zijn hard-coded in de code. In de praktijk zou u wachtwoorden dynamisch moeten kunnen toevoegen/verwijderen/aanpassen via een speciale modus. Deze wachtwoorden moeten worden opgeslagen in het EEPROM-geheugen. Het aantal wachtwoorden is afhankelijk van de grootte van het EEPROM. Dit maakt de code complexer. Wilt u zo’n systeem bouwen, dan bieden wij een programmeerservice aan. Neem gerust contact op.

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 stap voor stap.

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