Dans le dernier numéro (n°73 de mai/juin 2022), en kiosque depuis le 18 mai, nous vous proposons une série de tutoriels pour démarrer son premier projet en robotique. Quelques inversions de mise en page ont pu oser quelques désagréments à nos lecteurs. Nous nous en excusons et vous proposons de récupérer ci-dessous l’ensemble de nos listings, ce qui évitera à certains de les ressaisir à la main.
Piloter un moteur avec un Raspberry Pi
Téléchargez les listings complets de notre dossier “Fabrique ton robot” en copiant/collant le code de programmation de robots Arduino et Raspberry vers vos éditeurs de textes.
Dans ce tutoriel, nous vous guidons pour développer un petit programme en Python afin de piloter un moteur depuis une carte Raspberry Pi. Voici le listing qu’il vous faudra importer dans votre programme.
#!/usr/bin/env python3
#– coding: utf-8 —
import RPi.GPIO as GPIO
import time
# Passage de la numérotation en mode BOARD (différent de GPIO)
GPIO.setmode(GPIO.BOARD)
# Désactivation des warnings
GPIO.setwarnings(False)
# Utilisation de la broche 12
broche_moteur = 12
# Fréquence du servomoteur
frequence = 50
# Configuration
GPIO.setup(broche_moteur, GPIO.OUT)
pwm = GPIO.PWM(broche_moteur, frequence)
# Configuration des DutyCycle
position_depart = 5
position_fin = 13
position_courante = position_depart
# Initialisation de la position de départ
pwm.start(position_courante)
time.sleep(1)
# Le servomoteur va tourner par pas de 0.2 jusqu’à la position finale
while position_courante <= position_fin:
pwm.ChangeDutyCycle(float(position_courante))
time.sleep(0.2)
position_courante = position_courante + 0.2
# Fermeture des GPIO
pwm.stop()
GPIO.cleanup()
# Fin du script
Piloter un moteur avec une carte Arduino
Même exercice mais avec une carte Arduino cette fois-ci.
/**
* Exemple de code pour un servomoteur, tutoriel de Planète Robot.
*/
/* Inclut la librairie Servo pour contrôler le servomoteur */
#include <Servo.h>
/* Objet Servo pour manipuler le servomoteur DS3218 */
Servo servo_ds2118;
const int BROCHE_CONTROLE_SERVO = 9;
void setup() {
// Attache le servomoteur à la broche D9
servo_ds2118.attach(BROCHE_CONTROLE_SERVO);
}
void loop() {
int position = 0;
// Fait tourner le bras de 0° à 90°
for (position = 0; position <= 90; position++) {
servo_ds2118.write(position);
delay(10);
}
// Fait tourner le bras de 0° à 180°
for (position = 0; position <= 180; position++) {
servo_ds2118.write(position);
delay(10);
}
// Fait bouger le bras de 180° à 90°
for ( position = 180; position >= 90; position–) {
servo_ds2118.write(position);
delay(10);
}
// Fait bouger le bras de 180° à 0°
for ( position = 180; position >= 0; position–) {
servo_ds2118.write(position);
delay(10);
}
}
// Fin du programme
Communication Bluetooth entre un mobile et un Arduino
Ici, nous avons plusieurs listings. Tout d’abord le code à insérer dans votre carte Arduino :
//
// _______________ __________________________
// |BLUETOOTH RXD | ---- | TXD ou A5 ou 11 ARDUINO |
// | TXD | ---- | RXD ou A4 ou 10 |
// | GND | ---- | GND |
// | 5.0V VCC | ---- | 5V |
// |_______________| |__________________________|
//
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial hc06 (3,2);// RX,TX
Servo monServo;
char commandIn;
String commandFull;
void setup()
{
//Initialize Serial Monitor
Serial.begin(9600);
Serial.println("Serial connected");
while(!Serial){}
//Initialise Motor
monServo.attach(9);
//Initialize Bluetooth Serial Port
hc06.begin(9600);
while(!hc06){}
//define bluetooth name
hc06.write("AT+NAMEBTestPlanetRobot");
}
void loop()
{
if (hc06.available())
{
Serial.write(hc06.read());
commandFull = hc06.readStringUntil('\n');
Serial.print("receive : ");
Serial.println(commandFull);
if (commandFull == "0")
{
monServo.write(0);
hc06.println("Motor On");
Serial.println("Send : Motor On");
}
else if (commandFull == "1")
{
monServo.write(180);
hc06.println("Motor Off");
Serial.println("Send : Motor Off");
}
else
{
hc06.println("Commande inconnue : " + commandFull);
Serial.println("Commande inconnue : " + commandFull);
}
}
}
Quand à la connexion avec votre appareil mobile, nous vous proposons ici un code plus lisible. N’hésitez pas à zoomer sur certaines images ci besoin :
Gyzmo, la tête de robot animée
Pour finir, nous vous proposons un visuel du programme du robot Gyzmo, développé avec le dernier kit robotique de Lego, le Robot Inventor 51515.