Au début du mois, je vous ai présenté un robot quadrupède très facile à fabriquer qui comportait deux servomoteurs branchés à un Arduino Uno. Je vous présente aujourd'hui le même robot, dans lequel j'ai remplacé l'Arduino par un Raspberry Pi Pico programmé en MicroPython.
Dans un premier temps, voici une courte vidéo qui montre le robot en mouvement.
Fabrication du robot
J'ai fabriqué le robot en utilisant du carton et quelques bâtonnets de bois, assemblés avec de la colle et du ruban gommé.
Pour que le robot puisse avancer, il est important que les deux servomoteurs soient inclinés par rapport à l'horizontale, d'où la forme triangulaire du châssis du robot.
Connexions des servomoteurs au Rasbperry Pi Pico
Chaque servomoteur est alimenté par une tension continue de 5 V (broche Vbus du Raspberry Pi Pico).
Servomoteur avant:
- fil jaune: broche GP15 du Raspberry Pi Pico
- fil rouge: broche Vbus du Raspberry Pi Pico
- fil brun: broche GND du Raspberry Pi Pico
Servomoteur arrière:
- fil jaune: broche GP13 du Raspberry Pi Pico
- fil rouge: broche Vbus du Raspberry Pi Pico
- fil brun: broche GND du Raspberry Pi Pico
''' | |
Robot quadrupède à 2 servomoteurs, version Raspberry Pi Pico | |
Plus d'informations: | |
https://electroniqueamateur.blogspot.com/2021/06/robot-quadrupede-base-de-raspberry-pi.html | |
''' | |
import machine | |
import utime | |
pwm_avant = 4800 # position centrale du servomoteur avant | |
pwm_arriere = 4600 # position centrale du servomoteur arriere | |
pas = 600 # augmenter pour de plus grands pas | |
# les 4 phases de la marche avant | |
marche_avant = [pwm_avant - pas , pwm_arriere + pas, pwm_avant + pas, pwm_arriere + pas, | |
pwm_avant + pas, pwm_arriere - pas, pwm_avant - pas, pwm_arriere - pas ] | |
# les 4 phases de la marche arrière | |
marche_arriere = [pwm_avant - pas , pwm_arriere - pas, pwm_avant + pas, pwm_arriere - pas, | |
pwm_avant + pas, pwm_arriere + pas, pwm_avant - pas, pwm_arriere + pas ] | |
servo_avant = machine.PWM(machine.Pin(15)) | |
servo_avant.freq(50) | |
servo_arriere = machine.PWM(machine.Pin(13)) | |
servo_arriere.freq(50) | |
while True: | |
# marche avant | |
for i in range (10): | |
for n in range(4): | |
servo_avant.duty_u16(marche_avant[2*n]) | |
servo_arriere.duty_u16(marche_avant[(2*n) + 1]) | |
utime.sleep(.3) | |
# marche arrière | |
for i in range (10): | |
for n in range(4): | |
servo_avant.duty_u16(marche_arriere[2*n]) | |
servo_arriere.duty_u16(marche_arriere[(2*n) + 1]) | |
utime.sleep(.3) | |
Yves Pelletier (Facebook)