TPE - Voitures autonomes
Le support Pan/Tilt.
​
Le support Pan/Tilt est un support amovible que nous utiliserons pour faire pivoter le capteur ultrason et ainsi savoir où sont les obstacles. Le support se compose en 2 parties :
- en bas : le Pan qui pivote de gauche à droite.
- en haut : le Tilt qui pivote de haut en bas.
Une fois l'installation faite, nous avons cherché des programmes pour contrôler les 2 parties du support. Sur le site "http://espace-raspberry-francais.fr/Composants/Controler-Servo-Moteur-Raspberry-Francais/", nous avons trouvé un programme qui nous a satisfait.
sudo nano pan.py
import RPi.GPIO as GPIO
import time
pin=5
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
GPIO.setwarnings(False)
ajoutAngle = 5
print("\n+----------/ ServoMoteur Controlleur /----------+")
print("| |")
print("| Le Servo doit etre branche au GPIO 5 |")
print("| |")
print("+-------------------------------------------------------------+\n")
print("Comment controler le Servo ?")
choix = input("1. Choisir un angle\n2. Faire tourner de 0 a 180\n")
if choix == 2 :
nbrTour = input ("Entrez le nombre d'aller-retour que fera le Servo :\n")
pwm=GPIO.PWM(pin,100)
pwm.start(5)
angle1 = 0
duty1 = float(angle1)/10 + ajoutAngle
angle2=180
duty2= float(angle2)/10 + ajoutAngle
i = 0
while i <= nbrTour:
pwm.ChangeDutyCycle(duty1)
time.sleep(0.8)
pwm.ChangeDutyCycle(duty2)
time.sleep(0.8)
i = i+1
GPIO.cleanup()
if choix == 1 :
angle = input("Entrez l'angle souhaite :\n")
duree = input("Entrez la duree durant laquelle le Servo devra tenir sa position : ( en secondes )\n")
pwm=GPIO.PWM(pin,100)
pwm.start(5)
angleChoisi = float(angle)/10 + ajoutAngle
pwm.ChangeDutyCycle(angleChoisi)
time.sleep(duree)
angle = 130 # Remise a etat initial : tout droit
angleChoisi = float(angle)/10 + ajoutAngle
pwm.ChangeDutyCycle(angleChoisi)
time.sleep(0.8)
GPIO.cleanup()
sudo nano tilt.py
import RPi.GPIO as GPIO
import time
pin=6
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
GPIO.setwarnings(False)
ajoutAngle = 5
print("\n+----------/ ServoMoteur Controlleur /----------+")
print("| |")
print("| Le Servo doit etre branche au GPIO 6 |")
print("| |")
print("+-------------------------------------------------------------+\n")
print("Comment controler le Servo ?")
choix = input("1. Choisir un angle\n2. Faire tourner de 0 a 180\n")
if choix == 2 :
nbrTour = input ("Entrez le nombre d'aller-retour que fera le Servo :\n")
pwm=GPIO.PWM(pin,100)
pwm.start(5)
angle1 = 0
duty1 = float(angle1)/10 + ajoutAngle
angle2=180
duty2= float(angle2)/10 + ajoutAngle
i = 0
while i <= nbrTour:
pwm.ChangeDutyCycle(duty1)
time.sleep(0.8)
pwm.ChangeDutyCycle(duty2)
time.sleep(0.8)
i = i+1
GPIO.cleanup()
if choix == 1 :
angle = input("Entrez l'angle souhaite :\n")
duree = input("Entrez la duree durant laquelle le Servo devra tenir sa position : ( en secondes )\n")
pwm=GPIO.PWM(pin,100)
pwm.start(5)
angleChoisi = float(angle)/10 + ajoutAngle
pwm.ChangeDutyCycle(angleChoisi)
time.sleep(duree)
angle = 120 # Remise a etat initial : tout droit
angleChoisi = float(angle)/10 + ajoutAngle
pwm.ChangeDutyCycle(angleChoisi)
time.sleep(0.8)
GPIO.cleanup()
​
Les ports GPIO utilisés pour le branchement du kit Pan/Tilt sont décris ci-dessous :
​
GND : masse de la batterie externe pour le Pan et le Tilt (câble marron)
VCC : 5 Volt de la batterie externe pour le Pan et le Tilt (câble rouge)
Signal ou OUT : 5 du GPIO pour le Pan
Signal ou OUT : 6 du GPIO pour le Tilt
​
​
​
​
​
​
​
​
Sur cette vidéo, nous avons réaliser le premier choix du programme pour le Pan et le Tilt. En effet, ces servomoteurs ont bien pivotés à l'angle demandé.
Le support Pan/Tilt permettra au Raspberry de détecter des obstacles dans une zone plus large.