mardi 10 mars 2015

Programation

Bonjour à tous,
Aujourd'hui c'est l'étape finale, la programmation !
Bon voici le code simple :

/*
Capteur de distance à ultrasons HC-SR04 avec Arduino Uno
 TipTopBoards.com  06 01 2014  Rolland
 Cabler +5V et GND du détecteur sur l'arduino
 Trig -> pin 13
 Echo -> pin 12
 moteurDroit + 470R  -> pin 10
 Le robot tourne selon la distance trop près / trop loin
 */

#define trigPin 13 //Trig Ultrasons (sortie)
#define echoPin 12 //Echo Ultrasons (entrée)
#define moteurDroit 6 // moteurDroit
#define moteurGauche 5 // moteurGauche

void setup()
{
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);  //Trig est une sortie
  pinMode(echoPin, INPUT);   //Echo est le retour, en entrée
  pinMode(moteurDroit, OUTPUT);
}

void loop()
{
  long duration, distance;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); //Trig déclenché 10ms sur HIGH
  digitalWrite(trigPin, LOW);

  // Calcul de l'écho
  duration = pulseIn(echoPin, HIGH);
  // Distance proportionnelle à la durée de sortie
  distance = duration*340/(2*10000);  //Vitesse du son théorique

  if (distance < 35)
  {// Distance trop près
    digitalWrite(moteurDroit,LOW); //moteur gauche activé seulement
   
    digitalWrite(moteurGauche,HIGH); // moteur Gauche tourne
  }
  else
  {//Trop loin
    digitalWrite(moteurDroit,HIGH);
    delay(100);
    digitalWrite(moteurGauche,HIGH);
  }
  delay(100);  //0.1 sec entre deux mesures
}





Et voici un code un peut plus poussé :


/* Utilisation du capteur Ultrason HC-SR04 */

// définition des broches utilisées
int trig = 13;
int echo = 12;
long lecture_echo;
long cm;
int val;
int vitesse_u;
int vitesse_lente_u;

#define vitesse  200
#define dure_virage 800
#define vitesse_lente  80

int etat;
unsigned long temps;

int EN1 = 6;
int EN2 = 5;  //Roboduino Motor shield uses Pin 9
int IN1 = 7;
int IN2 = 4; //Latest version use pin 4 instead of pin 8
 
void MotorD(int pwm, boolean reverse)
        {
          analogWrite(EN1,pwm); //set pwm control, 0 for stop, and 255 for maximum speed
         if(!reverse)
         {
          digitalWrite(IN1,HIGH);  
         }
        else
        {
          digitalWrite(IN1,LOW);  
         }
        }
       
void MotorG(int pwm, boolean reverse)
        {
          analogWrite(EN2,pwm);
         if(!reverse)
         {
          digitalWrite(IN2,HIGH);  
         }
        else
        {
          digitalWrite(IN2,LOW);  
         }
        }

void setup()
{
  pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);
  Serial.begin(9600);
  etat = 0;
  temps = millis();
  vitesse_lente_u = vitesse_lente;
  vitesse_u = vitesse;
  delay(8000);  //delai avant mise en route des moteurs
}

void loop()
{
  // mesure de distance
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  lecture_echo = pulseIn(echo, HIGH);
  cm = lecture_echo / 58;
  Serial.print("Distancem : ");
  Serial.println(cm);
 
  if (etat ==0)  //virage gauche
  {
    MotorD(vitesse_u,true);
    MotorG(vitesse_lente_u,true);
    if ((temps + dure_virage) < millis())
    {
      etat = 1;
      temps = millis();
    }
  }
  else if(etat ==1)  //virage droite
  {
    MotorD(vitesse_lente_u,true);
    MotorG(vitesse_u,true);
    if ((temps + dure_virage) < millis())
    {
      etat = 0;
      temps = millis();
    }
  }
 
  if (cm < 30)  //detection murale
  {
    if(etat ==1)//si mur pendant virage droite on tourne a gauche
    {
      MotorD(vitesse_u,true);
      MotorG(vitesse_u,false);
      delay(3000);
    }
    else if(etat ==0) //si mur pendant virage gauche on tourne a droite
    {
      MotorD(vitesse_u,false);
      MotorG(vitesse_u,true);
      delay(3000);
    }
  }
 val = Serial.read();  //reception de commande
if(val!=-1)
   {
      switch(val)
       {
         case 's'://arret
             vitesse_lente_u = 0;
             vitesse_u = 0;
           break;
         case 'r'://redemarre        
             vitesse_lente_u = vitesse_lente;
             vitesse_u = vitesse;
           break;
       }
   }
}

mercredi 4 mars 2015

Une petite démonstration du robot :

Montage


Bonjour à tous,
Aujourd'hui on commence l'étape cruciale de notre Robot, le montage !
Pour commencer Nous allons monter les moteurs :










Je l'ai fixé avec une "patte" en zinc, mais le coller sera amplement suffisant si vous n'utilisez pas de charges trop lourdes.
Soudez les fils aux moteurs.
Emboîtez le Shield Moteur à la carte Arduino Uno, 2 Pins du Shield Moteur dépassent sur les côtés, ce n'est pas grave. Pliez les vers l’intérieur du dessous du Shield.

Ensuite le capteur à Ultrasons :
Voici les Pins (ou broches) :
Vcc : Se connecte au Pin 5 V du Shield Moteur.
Trig : Se connecte au Pin 13 du Shield Moteur
Echo : Se connecte au Pin 12 du Shield Moteur
GND : Se connecte au Pin GND du Shield Moteur










Connectez les fils à la plaque de test puis le capteur à Ultrasons :
















Maintenant, branchez les fils sur le Shield Moteur emboîté sur la carte Arduino Uno.
















J'ai mis mas carte Arduino Uno et mon Shield Moteur dans une boîte.
connectez les fils des moteurs au Shield Moteur, si les roues ne tournes pas dans le bon sens pendant que le robot fonctionne, alors essayez de changer la position des fils car les moteur n'ont pas marqués leurs polarités.






























Voilà, votre robot est terminé ! Enfin presque...
Il ne manque plus que l'alimentation,
Trouvez un boitier à piles de 1.5 V ou de 1.2 V pouvant en contenir au moins 6.
Pour être tranquille j'ai mis 8 piles de 1.2 V.
Connectez le boitier à piles sur la carte Arduino, et non sur le Shield Moteur !
Maintenant, il ne manque que le programme.
Bonne journée

Donkey1793

mardi 3 mars 2015

Première partie Le Matériel


Bonjour à tous,
Voici la première partie du tuto pour le robot aspirateur Arduino.
Pour le matériel, nous aurons besoin de :
-Câbles pour prototypage :                                9.90€
Pack de câbles de connexion
-D'une plaque de montage rapide :                  2.95€
Plaque de montage rapide rouge
-D'une carte Arduino Uno :                            23.90€
Carte Arduino UNO
-D'un Shield contrôleur pour moteur :          13.96€
Shield Motor SRI0001
-D'un capteur à Ultrasons :                           3.90€
Module de détection US HC-SR04
-De deux moteurs à courant continu :          16.90€  
Kit 2 roues + moteurs
-D'un support (ex en contreplaqué)


-D'outil :
   -Scie
   -Tournevis
   -Colle
   - etc...

Total :  71.51 €
Total sans Arduino et sans cables : 37.91


Pour le montage et la programation on se retrouve demain !
Bonne journée,



PS: Voici les liens :
http://www.gotronic.fr/art-pack-de-cables-de-connexion-12411.htm
http://www.gotronic.fr/art-carte-arduino-uno-12420.htm
http://www.gotronic.fr/art-shield-motor-2-x-1-a-dri0001-19343.htm
http://www.gotronic.fr/art-plaque-de-montage-rapide-19620.htm
http://www.gotronic.fr/art-kit-2-roues-moteurs-ktam-s-19349.htm
http://www.gotronic.fr/art-module-de-detection-us-hc-sr04-20912.htm


Donkey1793

Robot aspirateur/Roomba avec Arduino !




Bonjour à tous,
Aujourd'hui nous nous retrouvons pour le premier tuto !!!
Nous allons fabriquer un robot aspirateur (ou robot Roomba) avec la carte arduino.
Pour commencer je vais vous dire le matériel nécéssaire à la réalisation de ce projet.
Bien sur nous ne dépasserons pas le seuil des 100 €.
Bonne chances à tous !


Donkey1793

Bienvenue !


Bonjour,
Bienvenue sur ce blog dédié aux tutoriels Arduino !
Bonne journée !!!

Donkey1793