Arduino Nano - Keypad - Relay

Deze tutorial laat u zien hoe u een keypad en Arduino Nano gebruikt om een relais te besturen. Wanneer de gebruiker het juiste wachtwoord invoert op het keypad, zal de Arduino Nano het relais activeren.

De tutorial bevat ook de Arduino Nano code die een relais voor een bepaalde duur activeert en daarna weer deactiveert zonder gebruik te maken van de delay() functie. Daarnaast kan de Arduino Nano code meerdere wachtwoorden verwerken.

Door een relais aan te sluiten op een Electromagnetic Lock, een Solenoid Lock, een Linear Actuator, een Heating Element, een Pump of een Fan ... kunnen we deze apparaten bedienen met een keypad.

Hardware Vereist

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB kabel
1×Toetsenbord
1×Relais
1×Jumper wires (verbindingsdraden)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

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 Relay

Als u niet bekend bent met keypad en relais (inclusief pinout, werking, programmeren, enz.), kunnen de volgende tutorials u helpen:

Bedradingsschema

Arduino Nano keypad relay wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Nano Code - relais aanzetten als het wachtwoord correct is

Als het wachtwoord correct is, zal de volgende code een relais activeren.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-keypad-relay */ #include <Keypad.h> const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 3; //four columns const int RELAY_PIN = 2; // The Arduino Nano pin connected to the IN pin of relay module const byte pin_rows[ROW_NUM] = {10, 9, 8, 7}; // The Arduino Nano pin connected to the row pins of the keypad const byte pin_column[COLUMN_NUM] = {6, 5, 4}; // The Arduino Nano pin connected to the column pins of the keypad char key_layout[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); const String password_1 = "4321"; // change your password here const String password_2 = "09876"; // 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 correct password! Turning ON relay"); digitalWrite(RELAY_PIN, HIGH); } else { Serial.println("The incorrect password! try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Snelle Stappen

  • Verbind een USB-kabel met de Arduino Nano en de pc.
  • Open de Arduino IDE, selecteer de juiste board en poort.
  • Klik op het Libraries-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek naar “keypad” en vind de keypad bibliotheek gemaakt door Mark Stanley en Alexander Brevig.
  • Druk vervolgens op de Install-knop om de keypad bibliotheek te installeren.
Arduino Nano keypad library
  • Zoek naar “ezOutput” en vind de ezOutput bibliotheek van ArduinoGetStarted.
  • Druk op de Install-knop om de ezOutput bibliotheek te installeren.
Arduino Nano output library
  • Kopieer de code en open deze in de Arduino IDE.
  • Druk vervolgens op de Upload-knop in de Arduino IDE om de code te compileren en naar de Arduino Nano te uploaden.
Arduino IDE Upload Code
  • Voer 1234 gevolgd door de #-toets in en daarna 9765 gevolgd door de #-toets.
  • Controleer het resultaat op de Serial Monitor en observeer de status van het relais.
COM6
Send
The incorrect password! try again The correct password! Turning ON relay
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Uitleg

Geautoriseerde wachtwoorden zijn vooraf gedefinieerd in de Arduino Nano code. Een string wordt gebruikt om het door gebruikers ingevoerde wachtwoord op te slaan, dit noemen we de input string. Op het keypad worden twee toetsen (* en #) gebruikt voor 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 deze twee speciale toetsen is, wordt deze toegevoegd aan de input string.
  • Als de ingedrukte toets * is, wordt de input string gewist. Dit kan worden gebruikt om te beginnen of opnieuw te starten met het invoeren van het wachtwoord.
  • Als de ingedrukte toets # is:
    • Controleert de Arduino Nano het ingevoerde wachtwoord door de input string te vergelijken met de vooraf gedefinieerde wachtwoorden. Als het overeenkomt met één van deze wachtwoorden, wordt het relais ingeschakeld.
    • Ongeacht of het wachtwoord correct is of niet, wordt de input string gewist voor de volgende invoer.

Arduino Nano Code - relais gedurende een bepaalde tijd inschakelen als het wachtwoord correct is

Als het wachtwoord correct is, wordt het relais gedurende 5 seconden ingeschakeld. Na die tijd wordt het relais weer uitgeschakeld.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-keypad-relay */ #include <Keypad.h> #include <ezOutput.h> #define RELAY_ON_TIME 5000 // in milliseconds const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 3; //four columns const int RELAY_PIN = 2; // The Arduino Nano pin connected to the IN pin of relay module const byte pin_rows[ROW_NUM] = {10, 9, 8, 7}; // The Arduino Nano pin connected to the row pins of the keypad const byte pin_column[COLUMN_NUM] = {6, 5, 4}; // The Arduino Nano pin connected to the column pins of the keypad char key_layout[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); ezOutput relay(RELAY_PIN); const String password_1 = "4321"; // change your password here const String password_2 = "09876"; // 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 correct password! 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 incorrect password! 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!