Raspberry Pi - Keypad

Deze tutorial legt uit hoe u de Raspberry Pi gebruikt met keypad 3x4 en 4x4. In detail leren we:

Hardware Benodigdheden

1×Raspberry Pi 5
1×Toetsenbord 3x4 en 4x4 kit
1×(Aanbevolen) Schroefklem Block Shield voor Raspberry Pi
1×(Aanbevolen) Raspberry Pi Prototyping Basisplaat & Breadboard Kit
1×(Aanbevolen) HDMI-Touchscreen-Monitor voor Raspberry Pi

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 is een verzameling toetsen die gerangschikt zijn in rijen en kolommen, ook wel een matrix genoemd. Elke individuele knop wordt een key genoemd. Er zijn verschillende soorten keypads. Twee van de meest gebruikte voor doe-het-zelf projecten zijn de 3x4 (12 toetsen) en 4x4 (16 toetsen).

De Keypad Pinout

De pinnen zijn verdeeld in twee categorieën: rijen en kolommen.

  • Een 3x4 keypad heeft zeven pinnen: vier daarvan zijn rij-pinnen, gelabeld R1, R2, R3 en R4. De overige drie zijn kolom-pinnen, gelabeld C1, C2 en C3.
  • Een 4x4 keypad heeft acht pinnen: vier daarvan zijn rij-pinnen, gelabeld R1, R2, R3 en R4. De andere vier zijn kolom-pinnen, gelabeld C1, C2, C3 en C4.
Keypad pinout

Bedradingsdiagram

  • Het bedradingdiagram tussen Raspberry Pi en keypad 3x4
Raspberry Pi Keypad 3x4 wiring diagram

This image is created using Fritzing. Click to enlarge image

  • Het bedradingdiagram tussen Raspberry Pi en keypad 4x4
Raspberry Pi Keypad 3x4 wiring diagram

This image is created using Fritzing. Click to enlarge image

Om uw bekabelingsopstelling te vereenvoudigen en te organiseren, raden we het gebruik van een Schroevenklemaansluiting-shield voor Raspberry Pi aan. Deze shield zorgt voor veiligere en beter beheerbare verbindingen, zoals hieronder weergegeven:

Raspberry Pi Schroevenklemaansluiting-Shield

Raspberry Pi Code

Raspberry Pi Code voor Keypad 3x4

# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-keypad import RPi.GPIO as GPIO import time # Define keypad layout KEYPAD = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ['*', 0, '#'] ] # Define GPIO pins for rows and columns ROWS = [4, 17, 27, 22] COLS = [5, 6, 13] # Initialize GPIO GPIO.setmode(GPIO.BCM) # Set up row pins as inputs with pull-up resistors for row_pin in ROWS: GPIO.setup(row_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up column pins as outputs for col_pin in COLS: GPIO.setup(col_pin, GPIO.OUT) GPIO.output(col_pin, GPIO.HIGH) def get_key(): key = None # Scan each column for col_num, col_pin in enumerate(COLS): GPIO.output(col_pin, GPIO.LOW) # Check each row for row_num, row_pin in enumerate(ROWS): if GPIO.input(row_pin) == GPIO.LOW: key = KEYPAD[row_num][col_num] # Wait for key release while GPIO.input(row_pin) == GPIO.LOW: time.sleep(0.05) GPIO.output(col_pin, GPIO.HIGH) return key try: while True: pressed_key = get_key() if pressed_key is not None: print(f"Pressed: {pressed_key}") time.sleep(0.1) except KeyboardInterrupt: GPIO.cleanup()

Raspberry Pi Code voor Keypad 4x4

# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-keypad import RPi.GPIO as GPIO import time # Define keypad layout KEYPAD = [ [1, 2, 3, 'A'], [4, 5, 6, 'B'], [7, 8, 9, 'C'], ['*', 0, '#', 'D'] ] # Define GPIO pins for rows and columns ROWS = [4, 17, 27, 22] COLS = [5, 6, 13, 19] # Initialize GPIO GPIO.setmode(GPIO.BCM) # Set up row pins as inputs with pull-up resistors for row_pin in ROWS: GPIO.setup(row_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up column pins as outputs for col_pin in COLS: GPIO.setup(col_pin, GPIO.OUT) GPIO.output(col_pin, GPIO.HIGH) def get_key(): key = None # Scan each column for col_num, col_pin in enumerate(COLS): GPIO.output(col_pin, GPIO.LOW) # Check each row for row_num, row_pin in enumerate(ROWS): if GPIO.input(row_pin) == GPIO.LOW: key = KEYPAD[row_num][col_num] # Wait for key release while GPIO.input(row_pin) == GPIO.LOW: time.sleep(0.05) GPIO.output(col_pin, GPIO.HIGH) return key try: while True: pressed_key = get_key() if pressed_key is not None: print(f"Pressed: {pressed_key}") time.sleep(0.1) except KeyboardInterrupt: GPIO.cleanup()

Snel Starten

  • Zorg ervoor dat u Raspbian of een ander compatibel besturingssysteem voor Raspberry Pi op uw Pi hebt geïnstalleerd.
  • Zorg ervoor dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
  • Zorg ervoor dat uw Raspberry Pi verbonden is met internet als u bibliotheken moet installeren.
  • Als dit de eerste keer is dat u een Raspberry Pi gebruikt, bekijk dan hoe u de Raspberry Pi instelt.
  • Verbind uw pc met de Raspberry Pi via SSH met behulp van de ingebouwde SSH-client op Linux en macOS of PuTTY op Windows. Zie hoe u uw pc via SSH verbindt met Raspberry Pi.
  • Zorg ervoor dat u de RPi.GPIO bibliotheek hebt geïnstalleerd. Zo niet, installeer deze dan met het volgende commando:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Maak een Python scriptbestand aan met de naam keypad.py en voeg een van bovenstaande codes toe.
  • Sla het bestand op en start het Python script door het volgende commando in de terminal uit te voeren:
python3 keypad.py

Het script draait in een oneindige lus totdat u Ctrl + C indrukt in de terminal.

  • Druk op een aantal toetsen op het keypad.
  • Bekijk het resultaat in de Seriële Monitor.
PuTTY - Raspberry Pi
3 6 9 4 * #

Keypad en Wachtwoord

Een gebruikelijke toepassing van een keypad is het invoeren van een wachtwoord. Hiervoor worden twee specifieke toetsen aangewezen:

  • Een toets om de wachtwoordinvoer te starten of opnieuw te beginnen, bijvoorbeeld de "*" toets
  • Een toets om de wachtwoordinvoer te beëindigen, bijvoorbeeld de "#" toets

Het wachtwoord bestaat uit een reeks van alle andere toetsen, behalve de twee speciale toetsen.

Wanneer een toets wordt ingedrukt:

  • Als de toets niet "*" of "#" is, wordt de toets toegevoegd aan de wachtwoordinvoer van de gebruiker.
  • Als de toets "#" is, wordt de invoer van de gebruiker vergeleken met de geldige wachtwoorden om te bepalen of het ingevoerde wachtwoord correct is en wordt daarna de invoerstring gewist.
  • Als de toets "*" is, wordt de invoerstring gewist.

Keypad - Wachtwoord Code

Snel Starten

  • Maak een Python scriptbestand aan met de naam keypad_password.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-keypad import RPi.GPIO as GPIO import time # Define keypad layout KEYPAD = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ['*', 0, '#'] ] # Define GPIO pins for rows, columns, and relay ROW_PINS = [17, 27, 22, 24] COL_PINS = [25, 8, 7] # Password to unlock PASSWORD = [1, 2, 3, 4] # Initialize GPIO GPIO.setmode(GPIO.BCM) # Set up row pins as inputs with pull-up resistors for row_pin in ROW_PINS: GPIO.setup(row_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up column pins as outputs for col_pin in COL_PINS: GPIO.setup(col_pin, GPIO.OUT) GPIO.output(col_pin, GPIO.HIGH) def get_key(): key = None # Scan each column for col_num, col_pin in enumerate(COL_PINS): GPIO.output(col_pin, GPIO.LOW) # Check each row for row_num, row_pin in enumerate(ROW_PINS): if GPIO.input(row_pin) == GPIO.LOW: key = KEYPAD[row_num][col_num] # Wait for key release while GPIO.input(row_pin) == GPIO.LOW: time.sleep(0.05) GPIO.output(col_pin, GPIO.HIGH) return key def check_password(input_password): return input_password == PASSWORD entered_keys = [] try: while True: pressed_key = get_key() if pressed_key is not None: print(f"Pressed: {pressed_key}") if pressed_key == '*': entered_keys = [] # reset the input password elif pressed_key == '#': if check_password(entered_keys): print("Password correct! Access granted.") break else: print("Incorrect password. Try again.") entered_keys = [] # reset the input password else: entered_keys.append(pressed_key) time.sleep(0.1) except KeyboardInterrupt: GPIO.cleanup()
  • Sla het bestand op en start het Python script door het volgende commando in de terminal uit te voeren:
python3 keypad_password.py

Het script draait in een oneindige lus totdat u Ctrl + C indrukt in de terminal.

  • Voer de bovenstaande code uit.
  • Open de Seriële Monitor.
  • Druk "123456" gevolgd door de "#" toets in.
  • Druk "1234" gevolgd door de "#" toets in.
  • Bekijk het resultaat in de Seriële Monitor.
PuTTY - Raspberry Pi
Incorrect password. Try again. Password correct! Access granted.

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!