Raspberry Pi - Capteur de mouvement - Servomoteur

Ce tutoriel vous explique comment utiliser Raspberry Pi et un capteur de mouvement pour contrôler un servomoteur. En détail :

Cela peut être appliqué dans un processus d'automatisation qui déclenche des actions lors de la détection de la présence humaine.

Préparation du matériel

1×Raspberry Pi 4 Model B
1×HC-SR501 Motion Sensor
1×Servo Motor
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 servomoteur et du capteur de mouvement

Si vous n'êtes pas familier avec les moteurs servo et les capteurs de mouvement (y compris les broches, leur fonctionnement et leur programmation), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

Schéma de câblage du capteur de mouvement et du servomoteur 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 illustré ci-dessus ne convient que pour un servomoteur à 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 démontré le schéma de câblage avec une source d'alimentation externe pour le servomoteur.

AJOUTER UNE IMAGE

Veuillez ne pas oublier de connecter la masse (GND) de l'alimentation externe à la masse (GND) de l'Arduino Raspberry Pi.

Paramètres initiaux

Time Delay AdjusterScrew it in anti-clockwise direction fully.
Detection Range AdjusterScrew it in clockwise direction fully.
Repeat Trigger SelectorPut jumper as shown on the image.
réglage initial du capteur de mouvement Arduino

Code Raspberry Pi - Capteur de mouvement contrôlant un moteur servo

É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 devez installer des bibliothèques supplémentaires.
  • 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 que vous avez 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 motion_sensor_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-motion-sensor-servo-motor import RPi.GPIO as GPIO import time # Constants won't change MOTION_SENSOR_PIN = 14 # Raspberry Pi GPIO pin connected to the OUTPUT pin of the motion sensor SERVO_PIN = 12 # Raspberry Pi GPIO pin connected to the servo motor # Variables will change angle = 0 # The current angle of the servo motor prev_motion_state = None # The previous state of the motion sensor motion_state = None # The current state of the motion sensor # Setup GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(MOTION_SENSOR_PIN, GPIO.IN) GPIO.setup(SERVO_PIN, GPIO.OUT) # Create PWM instance for servo servo_pwm = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency # Initialize servo position servo_pwm.start(0) try: while True: prev_motion_state = motion_state # Save the last state motion_state = GPIO.input(MOTION_SENSOR_PIN) # Read new state if motion_state == GPIO.LOW and prev_motion_state == GPIO.HIGH: print("Motion detected!") servo_pwm.ChangeDutyCycle(7.5) # Adjust duty cycle for 90 degrees elif motion_state == GPIO.HIGH and prev_motion_state == GPIO.LOW: print("Motion stopped!") servo_pwm.ChangeDutyCycle(2.5) # Adjust duty cycle for 0 degrees time.sleep(0.1) # Add a small delay to avoid rapid sensor readings except KeyboardInterrupt: servo_pwm.stop() GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en entrant la commande suivante dans le terminal :
python3 motion_sensor_servo.py
  • Agitez votre main devant le capteur.
  • Observez le changement d'angle du servomoteur.

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

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!