Raspberry Pi - Clavier numérique

Ce tutoriel vous explique comment utiliser Raspberry Pi avec un clavier 3x4 et 4x4. En détail, nous allons apprendre :

Préparation du matériel

1×Raspberry Pi 4 Model B
1×Keypad 3x4 and 4x4 Kit
1×(Optional) Screw Terminal Block Shield for Raspberry Pi
1×(Optional) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B
1×(Optional) Plastic Case and Cooling Fan for Raspberry Pi 4B
1×(Optional) HDMI Touch Screen Monitor for Raspberry Pi

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du clavier

Clavier

Un clavier est un ensemble de touches organisées en lignes et en colonnes, appelé une matrice. Chaque bouton individuel est connu sous le nom de touche. Il existe différents types de claviers. Deux des plus couramment utilisés pour les projets de bricolage sont les 3x4 (12 touches) et 4x4 (16 touches).

Le Schéma de Brochage du Clavier

Les broches sont séparées en deux catégories : rangées et colonnes.

  • Un clavier 3x4 a sept broches : quatre d'entre elles sont des broches de rangée, étiquetées R1, R2, R3 et R4. Les trois restantes sont des broches de colonne, étiquetées C1, C2 et C3.
  • Un clavier 4x4 a huit broches : quatre d'entre elles sont des broches de rangée, étiquetées R1, R2, R3 et R4. Les quatre autres sont des broches de colonne, étiquetées C1, C2, C3 et C4.
Disposition du clavier numérique

Diagramme de câblage

  • Le schéma de câblage entre le Raspberry Pi et le clavier 3x4
Diagramme de câblage du pavé numérique 3x4 pour Raspberry Pi

This image is created using Fritzing. Click to enlarge image

  • Le schéma de câblage entre le Raspberry Pi et le clavier 4x4
Schéma de câblage du clavier 3x4 pour Raspberry Pi

This image is created using Fritzing. Click to enlarge image

Pour simplifier et organiser votre câblage, nous vous recommandons d'utiliser un Screw Terminal Block Shield pour Raspberry Pi. Ce shield garantit des connexions plus sûres et plus faciles à gérer, comme illustré ci-dessous :

Raspberry Pi Screw Terminal Block Shield

Code Raspberry Pi

Code Raspberry Pi pour clavier 3x4

# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/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()

Code Raspberry Pi pour Clavier 4x4

# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/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()

Étapes rapides

  • Assurez-vous d’avoir Raspbian ou un autre système d’exploitation compatible avec Raspberry Pi installé sur votre Pi.
  • Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
  • Assurez-vous que votre Raspberry Pi est connecté à Internet si vous devez installer des bibliothèques.
  • Si c'est la première fois que vous utilisez Raspberry Pi, consultez Installation du logiciel - Raspberry Pi..
  • Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sur Linux et macOS ou PuTTY sur Windows. Consultez comment connecter votre PC au Raspberry Pi via SSH.
  • Assurez-vous d’avoir la bibliothèque RPi.GPIO installée. Sinon, installez-la en utilisant la commande suivante :
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Créez un fichier de script Python keypad.py et ajoutez-y l'un des codes ci-dessus.
  • Enregistrez le fichier et exécutez le script Python en saisissant la commande suivante dans le terminal :
python3 keypad.py

Le script s'exécute dans une boucle infinie jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.

  • Appuyez sur quelques touches du clavier.
  • Consultez le résultat dans le Moniteur Série.
PuTTY - Raspberry Pi
3 6 9 4 * #

Clavier et Mot de Passe

Une utilisation courante d'un clavier est de saisir un mot de passe. Nous désignons deux touches spécifiques à cet effet :

  • Une touche pour initier ou redémarrer la saisie du mot de passe, telle que la touche "*"
  • Une touche pour terminer la saisie du mot de passe, telle que la touche "#"

Le mot de passe comprendra une chaîne composée de toutes les autres touches, à l'exception de deux touches spéciales spécifiques.

Lorsqu'une touche est enfoncée :

  • Si la touche n'est pas "*" ou "#", ajoutez la touche à la chaîne de mot de passe saisie par l'utilisateur.
  • Si la touche est "#", comparez la chaîne de l'utilisateur avec les mots de passe valides pour déterminer si le mot de passe saisi est correct, puis effacez la chaîne de mot de passe saisie par l'utilisateur.
  • Si la touche est "*", effacez la chaîne de mot de passe saisie par l'utilisateur.

Clavier - Code de Mot de Passe

Étapes rapides

  • Créez un fichier de script Python keypad_password.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/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()
  • Enregistrez le fichier et exécutez le script Python en utilisant la commande suivante dans le terminal :
python3 keypad_password.py

Le script s'exécute dans une boucle infinie en continu jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.

  • Exécutez le code ci-dessus.
  • Ouvrez le moniteur série.
  • Appuyez sur "123456" suivi de la touche "#".
  • Appuyez sur "1234" suivi de la touche "#".
  • Consultez le résultat sur le moniteur série.
PuTTY - Raspberry Pi
Incorrect password. Try again. Password correct! Access granted.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!