GPIO Project 11 - Beveiligingssysteem met Keypad
Beginner
30 Minuten
€ 169,90
In dit project leer je een eenvoudig beveiligingssysteem te bouwen met behulp van een 4x4 keypad, een RGB LED en de GPIO-pinnen van de Raspberry Pi. Dit project gebruikt Python en de Thonny IDE, standaard beschikbaar in Raspberry Pi OS.
Aansluitschema
- RGB LED aansluiten:
- Plaats de RGB LED op het breadboard.
- Verbind de RGB led met GPIO 17 (rood), GPIO 27 (groen) en GPIO 22 (blauw).
- Verbind de gemeenschappelijke kathode (lange pin) met GND (pin 6) van de Raspberry Pi.
- Keypad aansluiten:
- Verbind de 4 rijen van het keypad met GPIO 5, 6, 13 en 19.
- Verbind de 4 kolommen van het keypad met GPIO 12, 16, 20 en 21.
- Buzzer aansluiten (optioneel):
- Verbind de positieve pin van de buzzer met GPIO 18.
- Verbind de negatieve pin met GND.

Pinout Referentie
Component | GPIO Pin | Physical Pin |
| RGB Rood | GPIO 17 | Pin 11 |
| RGB Groen | GPIO 27 | Pin 13 |
| RGB Blauw | GPIO 22 | Pin 15 |
| Keypad Rijen | GPIO 5, 6, 13, 19 | Pin 29, 31, 33, 35 |
| Keypad Kolommen | GPIO 12, 16, 20, 21 | Pin 32, 36, 38, 40 |
| Buzzer (optioneel) | GPIO 18 | Pin 12 |
Python-code in Thonny
- Start Thonny: Klik op het Raspberry Pi-menu > Programmering > Thonny Python IDE.
- Schrijf je code: Maak een nieuw bestand in Thonny en voer de volgende code in:
import RPi.GPIO as GPIO
from time import sleep
# Pin-definities
RED_PIN = 17
GREEN_PIN = 27
BLUE_PIN = 22
BUZZER_PIN = 18
ROWS = [5, 6, 13, 19] # GPIO-pinnen voor rijen
COLS = [12, 16, 20, 21] # GPIO-pinnen voor kolommen
# Keypad lay-out
KEYS = [
['1', '2', '3', 'A'],
['4', '5', '6', 'B'],
['7', '8', '9', 'C'],
['*', '0', '#', 'D']
]
PINCODE = "1234" # Stel de gewenste pincode in
# GPIO setup
GPIO.setmode(GPIO.BCM)
GPIO.setup([RED_PIN, GREEN_PIN, BLUE_PIN, BUZZER_PIN], GPIO.OUT)
for row_pin in ROWS:
GPIO.setup(row_pin, GPIO.OUT)
GPIO.output(row_pin, GPIO.LOW)
for col_pin in COLS:
GPIO.setup(col_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
def set_color(r, g, b):
"""Stelt de kleur van de RGB LED in."""
GPIO.output(RED_PIN, r)
GPIO.output(GREEN_PIN, g)
GPIO.output(BLUE_PIN, b)
def read_key():
"""Leest een toets van het 4x4 Keypad."""
for row_num, row_pin in enumerate(ROWS):
GPIO.output(row_pin, GPIO.HIGH)
for col_num, col_pin in enumerate(COLS):
if GPIO.input(col_pin) == GPIO.HIGH:
GPIO.output(row_pin, GPIO.LOW)
return KEYS[row_num][col_num]
GPIO.output(row_pin, GPIO.LOW)
return None
try:
while True:
print("Voer de pincode in:")
input_code = "" # Variabele wordt hier correct gedefinieerd als lege string
# Lees de pincode van het keypad
while len(input_code) < len(PINCODE):
key = read_key()
if key:
print(f"Toets ingedrukt: {key}")
if key in ['*', '#', 'A', 'B', 'C', 'D']:
print("Speciale toets genegeerd.")
continue
input_code += key # Voeg de toets toe aan de pincode
sleep(0.3) # Voor debounce
# Controleer de ingevoerde code
if input_code == PINCODE:
print("Correcte pincode!")
set_color(0, 1, 0) # Groen
else:
print("Foute pincode!")
set_color(1, 0, 0) # Rood
GPIO.output(BUZZER_PIN, GPIO.HIGH)
sleep(0.5)
GPIO.output(BUZZER_PIN, GPIO.LOW)
sleep(2)
set_color(0, 0, 0) # LED uit
except KeyboardInterrupt:
print("Programma gestopt.")
finally:
GPIO.cleanup()
Sla het bestand op: Klik op Bestand > Opslaan als en noem het bestand keypad_security.py.
Voer het script uit: Klik op de groene Run-knop (▶) bovenin de Thonny-interface.
Hoe werkt het?
- Correcte pincode: De RGB LED licht groen op.
- Foute pincode: De RGB LED licht rood op, en de buzzer (indien aanwezig) piept kort.
Input: Het systeem wacht op een invoer via het keypad en vergelijkt dit met de ingestelde pincode.
Resultaat
Als alles correct is aangesloten en de code draait, werkt het beveiligingssysteem als volgt:
- Bij een correcte invoer licht de RGB LED groen op.
- Bij een foute invoer licht de RGB LED rood op, en de buzzer waarschuwt.
Experimenteren
- Andere kleuren: Gebruik verschillende combinaties van de RGB LED om meer feedback te geven.
- Complexere pincode: Voeg extra logica toe om langere of complexe pincodes te ondersteunen.
- Extra alarm: Koppel een sirene of andere actuator voor een uitgebreider systeem.

