Retrouvez Planète Robots en
version numérique sur :

Téléchargez les listings de notre dossier “Fabrique ton robot”

Téléchargez les listings de notre dossier “Fabrique ton robot”

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.

Publicité

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.

Partagez cet article

Lexing Editions