Raspberry Pi - Clavier - Servomoteur

Ce tutoriel vous apprend à utiliser un Raspberry Pi et un clavier pour contrôler un servomoteur. En détail :

Le code pour Raspberry Pi permet également l'utilisation de plusieurs mots de passe.

Préparation du matériel

1×Raspberry Pi 4 Model B
1×Keypad
1×Servo Motor
1×5V Power Adapter
1×DC Power Jack
1×Jumper Wires
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 et du moteur de servomoteur

Si vous n'êtes pas familier avec le clavier et le servomoteur (y compris le brochage, la fonctionnalité, la programmation, etc.), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

Diagramme de câblage du servomoteur du clavier 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

Veuillez noter que le schéma de câblage ci-dessus est uniquement adapté à un servomoteur avec un faible couple. Si le moteur vibre au lieu de tourner, une source d'alimentation externe doit être utilisée pour fournir plus de puissance au servomoteur. Ci-dessous est présenté le schéma de câblage avec une source d'alimentation externe pour le servomoteur.

À AJOUTER UNE IMAGE

Veuillez ne pas oublier de connecter le GND de l'alimentation externe au GND de l'Arduino Raspberry Pi.

Code Raspberry Pi - fait tourner le moteur servo si le mot de passe est correct

Si le mot de passe est correct, le servomoteur sera réglé à 90° pour une durée de 5 secondes. Une fois les 5 secondes écoulées, le servomoteur sera réinitialisé à 0°.

Étapes rapides

  • Assurez-vous d'avoir Raspbian ou tout 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 avez besoin d'installer des bibliothèques.
  • Si c'est la première fois que vous utilisez un 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 script Python keypad_servo.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-servo-motor 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 servo motor ROW_PINS = [17, 27, 22, 24] COL_PINS = [25, 8, 7] SERVO_PIN = 16 # Adjust this to the actual GPIO pin connected to the servo motor # Passwords to unlock PASSWORDS = [ [1, 2, 3, 4], # 1st password 1234 [5, 6, 7, 8], # 2nd password 5678 [9, 0, 1, 2] # 3rd password 9012 ] # 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) # Set up servo pin as an output GPIO.setup(SERVO_PIN, GPIO.OUT) servo = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency # Function to move servo to a specified angle def move_servo(angle): duty_cycle = (angle / 18) + 2.5 servo.ChangeDutyCycle(duty_cycle) time.sleep(1) # Adjust this sleep duration based on servo response time 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 in PASSWORDS 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.") move_servo(90) time.sleep(20) # Wait for 20 seconds move_servo(0) 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 exécutant la commande suivante dans le terminal :
python3 keypad_servo.py

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

  • Appuyez sur 12345#
  • Entrez 5642B#
  • Vérifiez le résultat sur le moniteur série et la position du servomoteur.
PuTTY - Raspberry Pi
The incorrect password! try again The correct password! Rotating Servo Motor to 90° Rotating Servo Motor to 0°

Explication du Code

Les mots de passe valides sont prédéfinis dans le code Raspberry Pi. Une chaîne, appelée input_password, est utilisée pour stocker le mot de passe saisi par les utilisateurs. Sur le clavier, deux touches (* et #) sont utilisées à des fins spéciales : effacer le mot de passe et terminer le mot de passe. Lorsqu'une touche du clavier est pressée :

  • Si la touche appuyée n'est pas l'une des deux touches spéciales, elle sera ajoutée à input_password.
  • Si la touche appuyée est *, le input_password sera effacé. Cela peut être utilisé pour commencer ou recommencer la saisie du mot de passe.
  • Si la touche appuyée est # :
    • Le Raspberry Pi vérifie si le input_password correspond à l'un des mots de passe prédéfinis, le moteur servo tournera à 90°.
    • Indépendamment du fait que le mot de passe soit correct ou non, le input_password sera effacé pour la prochaine saisie.
    • Après un certain temps, l'ESP8266 fait tourner le moteur servo à 0°.

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!