dimanche 18 août 2013

Control two servos with Arduino


Voici la premiere étape de la construction de mon robot ( Jhonny 1.0 :p)

Le but est de controler deux servos via l'arduino alimenté sur batterie. Le robot effectue une séquence programmée : Avancer 3sec, tourner à droite, ....
Résultat :


La prochaine étape sera de connecter le raspberry avec l'Arduino et de le commander via une interface WEB :-)

Montage :


Code :
// Control 2 servo on Battery
// The servo go forward for 3 sec and after turn right
#include  

Servo leftservo; 
Servo rightservo;
const int rightservopin = 8;
const int leftservopin = 7;
int speed = 10;

void setup()
{
  pinMode(leftservopin,OUTPUT);
  pinMode(rightservopin,OUTPUT);  
  gostop();
  
  Serial.begin(19200);
  Serial.println("Ready");
  
  Serial.println("Play Beep");
  pinMode(10, OUTPUT);
  beep(50);
  delay(100);
  beep(50);
  delay(100);
  beep(50);
  delay(4000);
  
}
void gostop()
{
  leftservo.detach();
  rightservo.detach();
}
void beep(unsigned char delayms){
  analogWrite(10, 20);      // Almost any value can be used except 0 and 255
                           // experiment to get the best tone
  delay(delayms);          // wait for a delayms ms
  analogWrite(10, 0);       // 0 turns it off
  delay(delayms);          // wait for a delayms ms   
}  
void loop()
{
  beep(200);
  
  // Avancer pendant 3 sec
  leftservo.attach(leftservopin);  
  rightservo.attach(rightservopin);
  rightservo.write(90 - speed);
  leftservo.write(90 + speed );
  delay(3000);
  
  // Tour de 90degre a droite 
  rightservo.write(90 + speed);
  leftservo.write(90 + speed );
  delay(750);

// Avancer pendant 3 sec
  rightservo.write(90 - speed);
  leftservo.write(90 + speed );
  delay(3000);
  
  // Tour de 90degre a droite

  rightservo.write(90 + speed);
  leftservo.write(90 + speed );
  delay(750); 
  
// Avancer pendant 3 sec
  rightservo.write(90 - speed);
  leftservo.write(90 + speed );
  delay(3000);
  
  // Tour de 90degre a droite
  rightservo.write(90 + speed);
  leftservo.write(90 + speed );
  delay(750); 
  
// Avancer pendant 3 sec 
  rightservo.write(90 - speed);
  leftservo.write(90 + speed );
  delay(3000);
  
  // Tour de 90degre a droite
  rightservo.write(90 + speed);
  leftservo.write(90 + speed );
  delay(750); 

  gostop();
}


samedi 17 août 2013

Introduction à l'Arduino

Pour arriver à mener à bien mon projet de robot il m'a fallu mettre la main sur un Arduino.

Mon robot avancera grâce à deux servos moteurs. Ceux-ci sont gerés grâce à des impulsions ( PWM). Le raspberry peut générer ce genre d'impulsions mais de façon software tandis que l'arduino les génère de façon hardware (plus précise).
Pour comprendre la différence voici un vidéo de deux servos contrôlés via le Rasp :

Et deux servos contrôlés via un arduino et commandés par le Raspberry :


L'autre avantage de coupler le montage à un Arduino est de pouvoir profiter des GPIO du raspberry pour contrôler d'autres choses (émetteur-recepteur 433MHZ, webcam, etc, etc)
.

Premiers pas avec le Raspberry

Il y a de ca 6 mois j'ai fait l'acquisition d'un Raspberry. Voici à quoi ça ressemble pour ceux qui ne connaissent pas  :
Raspberry pi Model B


Il y a moyen de faire beaucoup de choses avec cette carte et je m'en étais exclusivement servi comme Media Center (Installation d'XBMC).
Relié à un NAS Synology et commandé via HDMI CEC (Protocole qui autorise l'envoie d'information via le port HDMI) et donc tout est géré via la télécommande de ma TV.
Voici les liens utiles dont je me suis servi pour l'installation et la configuration :
J'ai opté pour la distribution Openelec car elle était la plus stable à l'époque. J'ai cependant entendu beaucoup de bien du Raspbmc et pour moi les deux doivent se valoir à l'heure actuelle.
Lien :
Install d'Openelec :http://squirrelhosting.co.uk/hosting-blog/hosting-blog-info.php?id=9
Configuration et Overclock : http://youresuchageek.blogspot.be/2012/09/howto-raspberry-pi-openelec-on.html
Mapping des boutons de la telecommande : http://wiki.xbmc.org/index.php?title=Keymap

Comme d'habitude si vous souhaitez plus d'info sur la configuration un petit commentaire suffira

Néanmoins les port GPIO (à gauche de l'image) m'intriguaient et j'ai décidé d'en apprendre plus. J'ai suivi de nombreux tutoriaux et je me suis lancé dans l'apprentissage de l’électronique à l'aide du Raspberry.

Mon projet est d'arriver à me servir du raspberry pour contrôler un robot via wifi (que j'aimerais équiper d'une webcam et de différents capteurs).

C'est un gros projet et j’évolue par étape. Je posterais sur ce blog l’évolution de la commande du matériel au premier pas du robot (si tout marche comme prévu :-))