BaBa, un robot piloté par Bluetooth (2011)

Transcription

BaBa, un robot piloté par Bluetooth (2011)
BaBa, un robot piloté par Bluetooth (2011)
Extrait du PoBot
http://www.pobot.org
BaBa, un robot piloté par
Bluetooth (2011)
- L'association - Nos robots - Réalisations personnelles -
Date de mise en ligne : dimanche 15 juillet 2012
PoBot
Copyright © PoBot
Page 1/6
BaBa, un robot piloté par Bluetooth (2011)
Ce robot est l'oeuvre de Greg, un adhérent de l'association qui nous a rejoint en 2011.
Sommaire
• Baba 1.1
• Baba 1.0
• Exemple de code
• Mise à jour logicielle
Baba signifie Bot Arduino Bluetooth Android.
Le robot intègre de nombreux kits : Arduino, plate-forme 4WD, échanges Bluetooth, capteurs ultra-son, tourelle
pan-tilt... ce qui en fait une plate-forme d'étude très pratique.
Il a été présenté lors de nos ateliers, puis a servi à une démonstration de mathématiques lors de la présentation
MathC2+ de l'INRIA.
Le code source du projet est mis à jour régulièrement sur la page GitHub de Baba
[https://github.com/greg06/Baba-Robot].
Baba 1.1
Baba évolue et bascule de technologie... Le châssis est conservé mais le Bluetooth et le téléphone Android
disparaissent au profit de :
une Raspberry Pi avec 4 Go,
une webcam pour avoir le son et l'image,
une connexion wifi
côté logiciel, tout est géré par un serveur node.js (langage Javascript)
Il reste à créer une carte pour l'alimentation à connecter sur la Roméo pour la gestion des différentes cartes et
actionneurs.
Les photos de Baba dans l'album de Greg
[https://plus.google.com/photos/101902493832731915290/albums/5622933474627023169?banner=pwa]
Copyright © PoBot
Page 2/6
BaBa, un robot piloté par Bluetooth (2011)
Baba 1.0
kit plate-forme robotique 4WD
[http://www.zartronic.fr/4wd-plateforme-robotique-v2-en-kit-pour-arduino-p-142.html]
tourelle pan-tilt
capteurs à ultrasons SRF08 (I2C)
DFRDuino Romeo [http://www.zartronic.fr/dfrduino-romeo-robotique-328-rev11-compatible-arduino-p-146.html]
module Bluetooth [http://www.zartronic.fr/module-bluetooth-dfrobot-v3-p-246.html]
téléphone Androïd
Il y a donc 6 moteurs : 4 pour le déplacement (utilisés par paire) et 2 pour la tourelle.
Le robot est programmé avec Arduino mais les déplacements complexes sont gérés par un téléphone portable : le
mobile ou smartphone équipé d'Androïd se connecte via Bluetooth à la carte Arduino pour récupérer les valeurs des
capteurs et envoyer les consignes de moteurs par liaison série.
Les capteurs de distance à ultra-son permettent une détection des obstacles (bas du châssis) et une détection de
l'environnement (tourelle pan/tilt) :
Les moteurs du châssis 4 roues motrices permettent d'ajouter des encodeurs pour connaître la position et la vitesse
du robot :
Copyright © PoBot
Page 3/6
BaBa, un robot piloté par Bluetooth (2011)
La tourelle utilise deux servomoteurs :
Cela donne une tourelle sur laquelle on peut fixer une caméra, des capteurs :
Malgré l'utilisation de kits, il est toujours nécessaire de travailler de longues heures pour finir un robot, pour le
câblage, la connectique ou pour des cartes électroniques spécifiques, ici la gestion des batteries avec un régulateur
LM7805.
Copyright © PoBot
Page 4/6
BaBa, un robot piloté par Bluetooth (2011)
Exemple de code
Pour une démonstration à des élèves de lycée (filière ISN), nous avons adapté le code initial pour le simplifier et
montrer une action distante (modifier l'angle de la tourelle) et une lecture distante (récupération de la distance lue par
le capteur ultrason).
On utilise deux protocoles de communication : la liaison série avec un ordinateur distant (PC, mobile) et le bus I2C
avec le capteur.
// bibliothèque I2C sur Arduino #include <Wire.h> // bibliothèque pour servomoteur sur Arduino #include <Servo.h>
/** * Programme de gestion d'un radar * avec 1 capteur US (SRF08) et un servomoteur * Reçoit l'angle * Envoie
la distance mesurée sur la liaison série */ Servo serv; void setup() { // initialisation de la liaison série
Serial.begin(115200); //Serial.println("Tourelle ultra-son"); Wire.begin(); // initialisation du servomoteur sur la
patte numérique 9 serv.attach(10); // position de départ serv.write(80); //Serial.println(lire()); } void loop() {
while (Serial.available() > 0) { int angle = Serial.read(); serv.write(map(angle,15,180,0,165)); int val = lire();
Serial.write( 0xff); Serial.write( (val >> 8) & 0xff); Serial.write( val & 0xff); } } int lire(void) { // on demande la
lecture en centimètres Wire.beginTransmission(0x70); // 0x70 sur 7 bits ou 0xE0 sur 8 bits
Wire.write((uint8_t)0x00); Wire.write(0x51); Wire.endTransmission(); // on attend que la lecture soit finie
(première méthode) delay(100); // on demande la lecture à partir du premier octet
Wire.beginTransmission(0x70); Wire.write(0x02); Wire.endTransmission(); // on lit 2 octets (haut puis bas)
Wire.requestFrom(0x70, 2); while(Wire.available() < 2); return (Wire.read() << 8) + Wire.read(); }
Mise à jour logicielle
La diffusion vidéo (streaming) avec la webcam fonctionne. Toutes les caméras ne sont pas compatibles, mais la plus
basique de grande surface a fonctionné.
démo à la dure : http://youtu.be/415CCOoIe2k
Copyright © PoBot
Page 5/6
BaBa, un robot piloté par Bluetooth (2011)
Le wifi fonctionne pour le dialogue entre un téléphone ou un ordinateur et la Raspberry Pi.
La connexion entre la Raspberry Pi et la carte Arduino utilise le câble USB.
Baba grandit et veut maintenant faire comme les ados... Il dispose donc d'un ampli de 2 watts
[http://store.x-mini.com/product.aspx?id=280922a4-551a-40ed-b04a-ed2da551c8fa] avec caisson et batterie dédié
(sur la partie haute arrière) pour une puissance de 89 décibels ! La qualité sonore est impressionnante.
La lecture de MP3 ainsi que la synthèse vocale fonctionnent avec la Raspberry Pi !
Copyright © PoBot
Page 6/6

Documents pareils