Robot Hexbug Spider hacked

2 petites heures de hacking, sympatique.
(MAJ: j'ai rajouté un tuto à la suite)
Je reçois ce matin (à midi quoi) mon colis d'evola (revendeur d'arduino et co),
et je regarde dans les yeux le robot hexbug spider que j'ai acheté compulsivement un soir de solitude.

Ca fait un moment que cela me titillait de regarder ce qu'a dans le ventre ce machin, alors je l'ai éventré et j'y ai trouvé un circuit de commande ST1155A. Petit tout sur google, hop hop, pif paf pouf, datasheet...
ben c'est super simple a utiliser.
Sur hack a day, j'avais vu ce lien, et ca m'avait fait envie.











Ma version Ultrason
Dans mon beau colis d'Evola, comme par hasard j'y trouve:
-Un arduino Uno R3
-une carte de charge de batterie
-une batterie Lipo 2A
-un capteur ultra-son

Le circuit de commande ST1155A est simple a interface avec 2 pins pour chaque moteurs, enable et input, soit  activer (ENA) et inverser les commandes (IN).
Donc dessoudage de la carte hexbug, j’enlève l'µC propriétaire et je viens poser les fils qui m’intéresse sur le circuit de commande.

Je colle et je troue le boitier pour faire passer les fils, un petit programme basé sur le tuto des calculs de distance du capteur ultrason et paf, ca fait un robot marrant qui évite les obstacles!!

Honnêtement, j'ai pris cette batterie parce que j'avais que celle la, parce que 2A, on a plus rapidement marre du bruit que la décharge de la batterie.
Le tout est un peu lourd, il est facilement envisageable de gagner du poids en remplaçant la batterie par une beaucoup beaucoup plus faible (a l'origine je rappelle que l'alimentation n'est que 3 piles boutons, le *C ne consomme rien et le capteur consomme 15mA si j'en réfère aux vendeur).

Une petite video de demo hexRobot.



Après réflexion, je me suis dit que cela pouvait intéresser des gens de poser mon code et les branchements alors je fais un mini-tuto.
ATTENTION: Je ne me porte pas responsable pour tout dégâts causé à votre matériel, un hack sur un produit fini comporte des risques, prenez le temps d'y aller doucement. Je propose de l'information, après vous en faites ce que vous voulez.

Temps estimé du hack: 2 à 3h max

Platine chargeur Lipo (usb, solaire, etc...)...utile...
Matos de dépars de chez evola:
-Un robot Hexbug (Le spider par exemple)
-Arduino UNO
Extension LiPo (marche aussi avec des piles AAA 2 ou 3)
-Une platine chargeur LipPo
-Une batterie LiPo 1A (ou moins)

A mon avis, il y a facilement moyen d'adapter la sauce a quasi tout les hexbug...

Pour le capteur : il est basée sur le tuto d'evola sur le Capteur ultrason


Pour la partie motrice: voici le datasheet du ST1155A (n'ayez pas peur ca mord pas la doc, vous n'etes pas obliger de tout lire... heureusement :) )

Voici les pattes de la petite bête:
Voici le circuit à suivre:

Attention: le capteur peut avoir un autre brochage!!

Hack de la bête:


  1. Ouvrez le machin afin de récupérer le circuit imprimé (ne coupez rien!!)
  2. Situez le circuit intégré nommé ST1155A
  3. Dessoudez l'AUTRE circuit (c'est un microcontroleur, il vous gène), Attention!!! Ne bavez pas, procédez méticuleusement, c'est l'étape la plus critique!! Vérifiez que vous n'avez pas soudé des pistes ensemble par inadvertance!! Si vous avez un multimètre, n'hésitez pas à l'utiliser!
  4. Venez connecter 4 de petits fils sur les pattes du le circuit de commande ST1155A
  5. Venez connecter votre 5V de votre carte arduino à la place de la batterie du robot
  6. Connectez votre capteur
  7. Montez votre 5V de sortie de votre carte LiPo ou mettez 2 batteries (ou 3) AAA pour alimenter le circuit
  8. Fixez le tout et ajoutez le code suivant:


/*This is a program that hack the Hexbug Spider
* I removed the µC from the robot board and I kept the
* ST1155A which is the a DC motor driver.
* (Datasheet can be found here :http://www.siti.com.tw/product/spec/Motor/ST1155A.pdf)
* It use 2 pins for each motors, IN and ENA
*/

const int pingPin = 7;
const int IN1=11;
const int ENA1=10;
const int IN2=8;
const int ENA2=9;

void turnLeft() {
   pinMode(IN1, OUTPUT);
   pinMode(ENA1, OUTPUT);  
   digitalWrite(IN1, LOW);
   digitalWrite(ENA1, HIGH);
   delay(300);
   digitalWrite(IN1, LOW);
   digitalWrite(ENA1, LOW);
}
void turnRight() {
   pinMode(IN1, OUTPUT);
   pinMode(ENA1, OUTPUT);
   digitalWrite(IN1, HIGH);
   digitalWrite(ENA1, HIGH);
   delay(300);
   digitalWrite(IN1, LOW);
   digitalWrite(ENA1, LOW);
}
void moveForward(){
   pinMode(IN2, OUTPUT);
   pinMode(ENA2, OUTPUT);
   digitalWrite(IN2, HIGH);
   digitalWrite(ENA2, HIGH);
}
void stopMoving(){
   pinMode(IN1, OUTPUT);
   pinMode(ENA1, OUTPUT);
   pinMode(IN2, OUTPUT);
   pinMode(ENA2, OUTPUT);
   digitalWrite(IN1, LOW);
   digitalWrite(ENA1, LOW);
   digitalWrite(IN2, LOW);
   digitalWrite(ENA2, LOW);
}

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
  stopMoving();
  delay(10000);
}

void loop()
{
  // establish variables for duration of the ping, 
  // and the distance result in inches and centimeters:
  long duration, inches, cm;

  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);

  // The same pin is used to read the signal from the PING))): a HIGH
  // pulse whose duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  // convert the time into a distance
  cm = microsecondsToCentimeters(duration);
  if(cm>20) {
    moveForward();
     delay(500);
  }
  else {
    stopMoving();
    turnLeft();
  }
  
 
}

long microsecondsToCentimeters(long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
}
Comme vous pourrez voir je me suis pas trop pris le choux ;)

Voilou!!

A plus









Commentaires

Posts les plus consultés de ce blog

L'art de la récup

[Tuto] : ISP d'un atmega 644 avec un UNO

Huxley Techzone: la fin et l'enterrement du projet...