ESP32 - Keypad

Deze tutorial legt uit hoe u een ESP32 gebruikt met een keypad. In detail leert u:

Hardware Benodigdheden

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Toetsenbord 3x4 en 4x4 Kit
1×(Alternatief) Keypad 3x4
1×(Alternatief) Keypad 4x4
1×(Optioneel) DC Power Jack
1×Breadboard (experimenteerprint)
1×Jumper draden (man-man)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

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

Keypad

Een keypad bestaat uit een groep knoppen die gerangschikt zijn in een matrix (rijen en kolommen). Elke knop vertegenwoordigt een toets. Er zijn veel soorten keypads beschikbaar. De keypad 3x4 (12 toetsen) en keypad 4x4 (16 toetsen) zijn de twee meest gebruikte types bij doe-het-zelf projecten.

Keypad Pinout

Keypad-pinnen worden verdeeld in twee groepen: rijen en kolommen.

  • De keypad 3x4 heeft 7 pinnen:
    • R1, R2, R3, R4: rijpinnen
    • C1, C2, C3: kolompinnen
  • De keypad 4x4 heeft 8 pinnen:
    • R1, R2, R3, R4: rijpinnen
    • C1, C2, C3, C4: kolompinnen
    Keypad Pinout

    Hoe werkt een Keypad?

    Zie hoe een keypad werkt

Bedradingsschema tussen Keypad en ESP32

ESP32 - Keypad 3x4 bedradingsschema

  • Hoe u ESP32 en keypad 3x4 aansluit met een breadboard
ESP32 Keypad 3x4 Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Hoe ESP32 en keypad 3x4 te verbinden

ESP32 - Keypad 4x4 bedradingsschema

  • Hoe u ESP32 en keypad 4x4 aansluit met een breadboard
ESP32 Keypad 4x4 Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Hoe ESP32 en keypad 4x4 te verbinden

ESP32 Code

Keypad 3x4

#include <Keypad.h> #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] = {18, 5, 17, 16}; // GPIO18, GPIO5, GPIO17, GPIO16 connect to the row pins byte pin_column[COLUMN_NUM] = {4, 0, 2}; // GPIO4, GPIO0, GPIO2 connect to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

Keypad 4x4

#include <Keypad.h> #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] = {19, 18, 5, 17}; // GPIO19, GPIO18, GPIO5, GPIO17 connect to the row pins byte pin_column[COLUMN_NUM] = {16, 4, 0, 2}; // GPIO16, GPIO4, GPIO0, GPIO2 connect to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

Snelle Stappen

  • Als dit de eerste keer is dat u ESP32 gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Klik op het Libraries icoon in de linkerzijbalk van de Arduino IDE.
  • Typ keypad in het zoekvak en zoek naar de keypad library van Mark Stanley, Alexander Brevig
  • Klik op de Installeren knop om de keypad library te installeren.
ESP32 keypad library
  • Kopieer de bovenstaande code en plak deze in Arduino IDE.
  • Compileer en upload de code naar het ESP32 bord door op de Upload knop in Arduino IDE te klikken.
  • Open de Serial Monitor in Arduino IDE
Hoe de serial monitor openen in Arduino IDE
  • Druk enkele toetsen in op de keypad
  • Bekijk het resultaat in de Serial Monitor
COM6
Send
1 2 3 4 * #
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Keypad en Wachtwoord

Een keypad wordt veel gebruikt om iemand te authenticeren via een wachtwoord. In deze tutorial is een geldig wachtwoord vooraf gedefinieerd in de code. Wanneer een gebruiker een wachtwoord invoert via de keypad, wordt deze vergeleken met het vooraf gedefinieerde wachtwoord:

  • Als het overeenkomt, wordt toegang verleend.
  • Als het niet overeenkomt, wordt toegang geweigerd.

Om een wachtwoord te gebruiken met een keypad, definiëren we twee speciale toetsen:

  • Een toets om te beginnen met het invoeren van het wachtwoord. Bijvoorbeeld toets "*"
  • Een toets om het invoeren van het wachtwoord te beëindigen. Bijvoorbeeld toets "#"

Het wachtwoord dat de gebruiker invoert, wordt opgeslagen in een string, de ingevoerde wachtwoordstring. Wanneer een toets wordt ingedrukt:

  • Als de ingevoerde toets "*", wordt de ingevoerde wachtwoordstring geleegd om een nieuw wachtwoord te starten
  • Als de ingevoerde toets NIET "*" of "#", wordt de toets toegevoegd aan de ingevoerde wachtwoordstring.
  • Als de ingevoerde toets "#", wordt de ingevoerde wachtwoordstring vergeleken met het vooraf gedefinieerde wachtwoord.

Keypad - Wachtwoord Code

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-keypad */ #include <Keypad.h> #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] = {18, 5, 17, 16}; // GPIO18, GPIO5, GPIO17, GPIO16 connect to the row pins byte pin_column[COLUMN_NUM] = {4, 0, 2}; // GPIO4, GPIO0, GPIO2 connect to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password = "7890"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // clear input password } else if (key == '#') { if (password == input_password) { Serial.println("The password is correct, ACCESS GRANTED!"); // DO YOUR WORK HERE } else { Serial.println("The password is incorrect, ACCESS DENIED!"); } input_password = ""; // clear input password } else { input_password += key; // append new character to input password string } } }
  • Voer bovenstaande code uit
  • Open de Serial Monitor in Arduino IDE
Hoe de serial monitor openen in Arduino IDE
  • Druk op de toetsen "123456" en druk daarna op "#"
  • Druk op de toetsen "7890" en druk daarna op "#"
  • Bekijk het resultaat in de Serial Monitor. Het ziet er als volgt uit:
COM6
Send
The password is incorrect, ACCESS DENIED! The password is correct, ACCESS GRANTED!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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!