Table des matières

LaBOT / XBee

Description

Configuration des XBee

Installation

Pour accéder aux modules XBee et les configurer, vous devez installer un programme qui vous permet de communiquer avec :

  1. Télécharger Processing : http://processing.org
  2. Télécharger ControlP5 et le placer dans “~/sketchbook/libraries” http://www.sojamo.de/libraries/controlP5
  3. Télécharger XBee Terminal (un programme processing qui permet de configurer avec les XBee) : https://www.faludi.com/projects/xbee-terminal-max/
  4. Placer le XBee sur le module Serial Converter et le brancher sur le port USB de l'ordinateur
  5. Ouvrir XBee Terminal avec Processing, dans le dossier “source”
  6. Décommenter et changer la ligne 78 en “printArray(Serial.list());”. Pour connaître l'identifiant du port série et afficher un tableau (nouvelle fonction de Processing 3).
  7. Lancer le programme et regarder le numéro de port dans le console
  8. Reporter ce numéro à la ligne 21 : “int portID = 32;”, puis lancer de nouveau

Commandes AT

  1. Module #1 : +++ (attendre), ATRE, ATMY 1, ATDL 4, ATWR
  2. Module #2 : +++ (attendre), ATRE, ATMY 1, ATDL 4, ATWR

Voir la page XBee & Arduino pour plus d'informations.

Code Arduino

/*
 * XBee / Labot
 * Réception de la communication série pour contrôler deux servo-moteurs
 * 
 * Attention : usage du "Serial1" au lieu de "Serial" pour la communication XBee avec une carte Leonardo
 * Si vous utilisez une autre carte Arduino, remplacez "Serial1" par "Serial"
 *
 * Usage : couple de données, l'ID (O ou 1) pour les moteurs gauches et droite, et la valeur pwm (0-180)
 */
 
#include <Servo.h>
 
// Variables Servo
Servo servo_d, servo_g;
int id, pwm; // couple de données en réception
 
void setup() {
  Serial1.begin(9600); // On définit la vitesse de transfert des données
  servo_d.attach(10); // Le servo droit est connecté au pin 10
  servo_g.attach(11); // Le servo gauche est connecté au pin 11 (à l'envers)
  delay(100); 
  servo_d.write(90);// positions de repos
  servo_g.write(90);
}
 
void loop() { 
    // Lecture des messages Série
    while (Serial1.available()) {
      id = Serial1.parseInt(); 
      pwm = Serial1.parseInt();
      if (Serial1.read() == '\n') {
         if (id == 0){
           servo_g.write(pwm);
         } else if (id == 1) {
           servo_d.write(pwm);
         }
       }
     }
   delay(10);
}

Code Pure Data