Arduino - Keypad - Relay

In deze handleiding leert u hoe u een keypad, relais en Arduino samen gebruikt. Concreet: als een gebruiker het wachtwoord correct invoert op het keypad, schakelt de Arduino het relais aan.

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

Door het relais te verbinden met een Electromagnetic Lock, Solenoid Lock, , Linear, Heating Element, Pump of Fan ... kunnen we deze apparaten bedienen met het keypad.

Arduino keypad relay

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×Toetsenbord 3x4 en 4x4 set
1×Relais
1×Jumperkabels
1×(Optioneel) Magneetslot (Solenoid Lock)
1×(Optioneel) 12V Voedingadapter
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 Relais

Als u nog niet bekend bent met keypad en relais (pinout, werking, hoe te programmeren ...), leert u hierover in de volgende handleidingen:

Verbindingsschema

Arduino keypad relay wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Code - schakel relais aan als het wachtwoord klopt

De onderstaande code schakelt een relais aan als 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-relay */ #include <Keypad.h> #define RELAY_PIN A0 // the Arduino pin, which connects to the IN pin of relay #define ROW_NUM 4 // four rows #define 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 = "ABC1234"; // change your password here const String password_2 = "5642B"; // change your password here const String password_3 = "9765"; // 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, LOW); } 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, turning ON relay"); digitalWrite(RELAY_PIN, HIGH); } 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 } } }

Snelle stappen

  • Verbind de Arduino via USB-kabel met de PC
  • Open de Arduino IDE, selecteer het juiste board en de juiste poort
  • Navigeer naar het Libraries-icoon in de linkerzijbalk van de Arduino IDE
  • Zoek naar “keypad”, en vind de keypad library van Mark Stanley en Alexander Brevig
  • Klik op de knop Installeren om de keypad library te installeren.
Arduino keypad library
  • Zoek naar “ezOutput”, en vind de ezOutput library van ArduinoGetStarted
  • Klik op de knop Installeren om de ezOutput library te installeren.
Arduino output library
  • Kopieer de bovenstaande code en open die in de Arduino IDE
  • Klik op de knop Uploaden in de Arduino IDE om de code naar de Arduino te uploaden
Arduino IDE Upload Code
  • Druk achtereenvolgens op de toetsen 1234 en daarna op #
  • Druk daarna op de toetsen 9765 en weer op #
  • Bekijk het resultaat in de Serial Monitor en de status van het relais
COM6
Send
The password is incorrect, try again The password is correct, turning ON relay
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Uitleg

Geautoriseerde wachtwoorden zijn van tevoren gedefinieerd in de Arduino-code.

Er wordt een string gebruikt om de door de gebruiker ingevoerde tekens op te slaan, genaamd de input string. Op het keypad hebben twee toetsen (* en #) een speciale functie: verwijderen en afsluiten van het wachtwoord. Wanneer een toets wordt ingedrukt:

  • Als de ingedrukte toets niet een van de twee speciale toetsen is, wordt deze toegevoegd aan de input string
  • Als de ingedrukte toets * is, wordt de input string leeggemaakt. Hiermee kunt u opnieuw 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 relais ingeschakeld
    • Ongeacht of het wachtwoord klopt of niet, wordt de input string leeggemaakt voor de volgende invoer

Arduino Code - schakel relais aan voor een bepaalde tijd als het wachtwoord klopt

De onderstaande code schakelt het relais 5 seconden in als het wachtwoord correct is. Na 5 seconden wordt het relais 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-relay */ #include <Keypad.h> #include <ezOutput.h> #define RELAY_PIN A0 // the Arduino pin, which connects to the IN pin of relay #define ROW_NUM 4 // four rows #define COLUMN_NUM 4 // four columns #define RELAY_ON_TIME 5000 // in milliseconds 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 ); ezOutput relay(RELAY_PIN); const String password_1 = "ABC1234"; // change your password here const String password_2 = "5642B"; // change your password here const String password_3 = "9765"; // 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.low(); } 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.low(); // set low before making a high pulse relay.pulse(RELAY_ON_TIME); // turn on relay in RELAY_ON_TIME duration and then turn off } 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 } } }

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.

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