Contrôler un moteur servo avec un Raspberry Pi via Bluetooth

Ce tutoriel vous apprend à programmer un Raspberry Pi pour gérer un servomoteur en utilisant soit le Bluetooth (module HC-05) ou le BLE (module HM-10). Des instructions étape par étape pour les deux modules sont fournies.

Nous utiliserons l'application Bluetooth Serial Monitor sur un smartphone pour transmettre la valeur de l'angle au Raspberry Pi. Le Raspberry Pi ajustera le servomoteur en fonction de la valeur reçue.

Raspberry Pi Servo Moteur Bluetooth

Préparation du matériel

1×Raspberry Pi 5
1×Module Bluetooth HC-05
1×Alternativement: HM-10 BLE Module
1×Servo-moteur
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Raspberry Pi
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Raspberry Pi
1×Recommandé: Écran tactile HDMI pour Raspberry Pi

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
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 module Bluetooth

Si vous n'êtes pas familier avec les servomoteurs, les modules Bluetooth, leurs brochages, capacités et programmation, veuillez consulter les tutoriels suivants pour plus d'informations :

Diagramme de câblage

  • Pour gérer un servomoteur avec Bluetooth classique, le module Bluetooth HC-05 doit être utilisé et le schéma de câblage fourni doit être consulté.
Schéma de câblage Bluetooth pour servo-moteur Raspberry Pi

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

  • Pour gérer un moteur Servo avec BLE, le module BLE HM-10 doit être utilisé. Le schéma de câblage est donné ci-dessous à titre de référence.
Schéma de câblage BLE du moteur servo Raspberry Pi

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Pour simplifier et organiser votre montage de câblage, nous recommandons l'utilisation d'un shield à bornier à vis pour Raspberry Pi. Ce shield assure des connexions plus sûres et mieux gérées, comme illustré ci-dessous :

Shield à bornier à vis pour Raspberry Pi

Code Raspberry Pi - contrôle du servo moteur via Bluetooth/BLE

Le code fourni ici peut être utilisé à la fois avec le module Bluetooth HC-10 et le module BLE HM-10.

É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 Raspberry Pi, voyez 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
pip install pyserial
  • Créez un fichier de script Python bluetooth_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-control-servo-motor-via-bluetooth import serial import RPi.GPIO as GPIO from time import sleep # Define pins SERVO_PIN = 16 # GPIO 16 (Servo pin) # Set up GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(SERVO_PIN, GPIO.OUT) # Create serial port for Bluetooth communication bluetooth = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) # Create servo object servo = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency for standard servo # Start PWM with 0% duty cycle (servo at 0 degrees) servo.start(0) def rotate_servo(angle): duty_cycle = 2 + (angle / 18) # Map angle to duty cycle (for a standard servo) servo.ChangeDutyCycle(duty_cycle) sleep(1) # Give servo time to move # Main program try: bluetooth.flushInput() # Clear any existing data in the input buffer while True: bluetooth.write(b"Raspberry Pi here, command me!\n") if bluetooth.inWaiting() > 0: angle = bluetooth.parseInt() if 0 <= angle <= 180: rotate_servo(angle) bluetooth.write(b"Rotated servo to angle: ") bluetooth.write(str(angle).encode('utf-8')) bluetooth.write(b"\n") else: bluetooth.write(b"Invalid angle: ") bluetooth.write(str(angle).encode('utf-8')) bluetooth.write(b"\n") # Add a delay to avoid excessive looping sleep(0.1) except KeyboardInterrupt: pass finally: servo.stop() GPIO.cleanup() bluetooth.close()
  • Enregistrez le fichier et exécutez le script Python en exécutant la commande suivante dans le terminal :
python3 bluetooth_servo.py

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

  • Installez l'application Bluetooth Serial Monitor sur votre smartphone.
  • Ouvrez l'application Bluetooth Serial Monitor sur votre smartphone et choisissez l'option Bluetooth Classique ou BLE, selon le module que vous utilisez.
Application Moniteur Série Bluetooth
  • Connectez l'application au module Bluetooth HC-05 ou au module BLE HM-10.
Appariement du moniteur série Bluetooth
  • Entrez un angle, tel que 45 ou 90, puis appuyez sur le bouton Envoyer.
Application Moniteur Série Bluetooth
  • Observez la modification de l'angle du moteur servo.
  • Examinez les résultats sur l'application Android.
Application de surveillance série Bluetooth

Si vous trouvez l'application Bluetooth Serial Monitor utile, veuillez lui attribuer 5 étoiles sur Play Store. Merci pour votre soutien !

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !