10/06/2018

La Barrière LEGO - Arduino

Objets connectés, iot, Arduino, par où commencer ?


"La barrière LEGO, un bon projet pour débuter avec Arduino".


" ça serait bien, une barrière pour ma maison LEGO !
- Une barrière pour ta maison de LEGO, ok, qu'est-ce qu'il nous faut ? Un moteur pour actionner la barrière, et un moyen de la déclencher. Pour le moteur, on va utiliser un SG90, fourni avec la plupart des kits Arduino, et pour activer ce moteur ?? J'ai une Funduino Mega2560 qui traîne, on va voir ce qu'on peut faire avec, mais note que n'importe quelle carte Arduino, ou compatible doit faire l'affaire..."



ES-TU PRÊT A RELEVER LE DEFI DE CREER UNE BARRIERE LEGO EN SEULEMENT 20 LIGNES DE CODE ???

- niveau débutant,
- matériel : KIT "Barrière LEGO Arduino" comprenant :

  • une carte arduino
  • une breadboard
  • un capteur ultrason
  • un servomoteur
  • une télécommande infrarouge et son capteur
  • quelques leds de couleur et les resistances qui les protègent
  • des câbles pour effectuer les connexions...
C'est tout ce qu'il faut pour construire les deux versions de la "Barrière LEGO Arduino"
! le kit "Barrière LEGO Arduino" ne comprend pas les pièces LEGO pour fixer le servomoteur (voir au bas de cette page pour plus de précisions)



Pour 20€ chez LEGO, tu as ça , mais tu peux aussi choisir d'aller voir un peu plus loin et d'apprendre à coder avec le kit "Barrière LEGO Arduino"
 --> commander un kit "Barriere LEGO - Arduino"  
ou envoyez un mail à scenaristeur@gmail.com

La barrière LEGO peut être déclinée sous plusieurs versions, et celles-ci peuvent être combinées :
- 1 la barrière LEGO à partir d'un capteur ultrason.
- 2 la barrière LEGO utilisant la télécommande infrarouge
... a vous de voir ensuite comment vous pouvez améliorer votre barrière LEGO... 😉

Le graphe de la barriere LEGO

Nous allons voir dans un premier temps la version avec le capteur ultrason :

- 1 la barrière LEGO à partir d'un capteur ultrason.

Quand un véhicule passe devant le capteur Ultrason, la barrière se lève pendant trois secondes puis reprend sa position initiale : 




 










Matériel nécessaire :  'KIT Arduino Barrière LEGO'
 --> commander un kit "Barriere LEGO - Arduino"  
ou envoyez un mail à scenaristeur@gmail.com

1 breadboard (ou planche à pain en français ), c'est la plaque où l'on va positionner nos composants et qui nous permettra d'établir les connexions entre ceux-ci.

A l'interieur de la breadbord, des connexions sont déjà établies (traits noirs sur la photo ci-dessous), par exemple, vous pour connecter une broche qui serait connectée en 'A1', vous pouvez utilisez tous les trous de 'B1' à 'E1'. Les trous 'F1' à 'J1' sont également connectés entre eux.

une carte Arduino Uno ou
une carte Arduino Nano avec son cable USB,
ou compatible
un capteur ultrasons HC-SR04 pour capter le passage d'un véhicule
Un servomoteur SG90 pour actionner la barrière
Une dizaine de câbles pour relier tout ça 
Une barre LEGO Technic qui servira de barrière
+ Quelques briques LEGO pour fixer le servomoteur


Repérez les deux lignes à l'extérieur de la breadboard: une rouge et une bleue. Ne les utilisez pas pour l'instant, elles serviront à transmettre le courant pour alimenter les composants.




Effectuer les branchements


1. Commencez par positionner et enficher la carte Arduino et le capteur ultrasons HC-SR04 sur la breadboard :
- la carte Arduino au centre de la breadbord et le capteur sur le bord.

2. Pour alimenter le capteur ultrason HC-SR04, nous allons créer un circuit :
- repérez sur la carte Arduino la broche notée '5V' (c'est le + ) et branchez un fil pour la relier jusqu'à la ligne rouge.
- repérez sur le capteur HC-SR04 la broche notée 'VCC' et reliez la également à la ligne rouge



Dans un deuxième temps :
- repérez sur la carte Arduino une des broches notée 'GND' (c'est le -) et branchez un fil pour la relier jusqu'à la ligne bleue.
- repérez sur le capteur la broche notée 'GND' et reliez-la avec la ligne bleue.

Vous devriez maintenant avoir une carte Arduino, un capteur ultrason HC-SR04 et 4 fils comme sur la photo suivante :




Le capteur HC-SR04 est un capteur ultrason et fonctionne suivant le principe du sonar de la chauve-souris : un ultrason est émis, puis l’écho est réceptionné, la délai entre l’émission et la réception permet de calculer la distance de l'obstacle.
Sur le capteur il reste deux broches : 'Trig' et 'Echo' . Avec deux autres fils, reliez 'Trig' à la broche 'D3' de la carte Arduino et 'Echo' à la broche 'D4' . 'Trig' enverra un ultrason et 'Echo' réceptionnera l'écho...






Passons maintenant à la programmation de la carte Arduino :

Une petite video pour l'installation du logiciel,
Pensez bien à vérifier la configuration de la carte dans le menu 'Outils/ type de carte' et 'Outils/port' (choix de la carte et de son port). Pour plus de précisions ces sujets ont étés maintes fois traités comme ici.



Voici le code de test du capteur HCSR-04 présenté dans la vidéo :
#include <HCSR04.h>

UltraSonicDistanceSensor distanceSensor(3,4);  // Initialize sensor that uses digital pins 13 and 12.

void setup () {
    Serial.begin(9600);  // We initialize serial connection so that we could print values from sensor.
}

void loop () {
    // Every 500 miliseconds, do a measurement using the sensor and print the distance in centimeters.
    Serial.println(distanceSensor.measureDistanceCm());
    delay(500);
}

En allant ensuite consulter le traceur série, vous devriez voir une courbe apparaître :




Maintenant que le capteur est opérationnel, on va pouvoir brancher le servomoteur :
sur un servomoteur, nous avons 3 fils :
- le + (rouge)
- le - (noir ou marron)
- la mesure (jaune ou blanc)

Utilisez trois nouveaux fils pour prolonger ceux issus du moteurs


et connectez ceux-ci de la manière suivante :
le + vers la ligne rouge de la breadboard,
le - vers la ligne bleue de la breadboard
le 3ème vers la broche 'D9' de la carte Arduino




Reprenons maintenant notre code et modifions le pour prend en compte le moteur. On peut s'inspiré de l'exemple 'Knob' comme évoqué dans la vidéo d'installation du logiciel Arduino :

Attention les deux vidéos suivantes se superposent  pour montrer à la fois la partie code et la partie exécution du code :

Confection du code :



Voici le code qui permet de faire fonctionner notre barrière LEGO avec déclenchement par capteur Ultrason :


////////////////////////////////////////////////////////////////////////////////////////
// Le code suivant correspond au tutoriel présenté à cette adresse :                  //
// http://smag0.blogspot.com/2017/06/arduino-barriere-lego.html                       //
// L'objectif est de créér une barrière qui se lève lorsqu'un véhicule passe devant   //
// le capteur ultrason                                                                //
// Pensez à bien vérifier le type de carte et le port COM dans le menu 'Outils'       //
////////////////////////////////////////////////////////////////////////////////////////


/* Import de la librairie pour le capteur ultrason HCSR04
  et pour le servomoteur */
#include <HCSR04.h>
#include <Servo.h>

/* On créé un objet capteur ultrason (UltraSonicDistanceSensor)
  que l'on initialise sur les pins D3 pour TRIG et D4 pour ECHO*/
UltraSonicDistanceSensor capteur_distance(3, 4);

/* Creation d'un objet Servo pour contrôler le servomoteur */
Servo mon_servo;


/*  la fonction setup() permet de mettre en place l'environnement */
void setup () {
  /* - On initialise une connection série pour pouvoir afficher les
 valeurs dans le moniteur ou le traceur (menu Outils).
       - On indique que notre servomoteur est relié à la Pin 9
       - On positionne notre servomoteur à l'horizontale (180°)   */
  Serial.begin(9600);
  mon_servo.attach(9);
  mon_servo.write(180);
}


/* la fonction loop() boucle à l'infini,
 lit la valeur du capteur et actionne le moteur */
void loop () {
  /* on lit la distance en cm mesurée par le capteur grâce
 à la fonction measureDistanceCm de l'objet capteur_distance précédemment créé */
  int distance = capteur_distance.measureDistanceCm(); 
   /* on teste si la valeur est comprise entre 1 cm et 15 cm */   
  if ( distance > 1 && distance < 15 ) {  
    /* Si elle est comprise entre 1 cm et 15 cm
 on l'envoi à la connexion série pour l'afficher dans le moniteur ou le traceur */               
    Serial.println(distance);                            
/* On demande envoi un angle de 90° au servo moteur ce qui doit lever la barrière */ 
    mon_servo.write(90);                                 
    /* et on attend 3000 millisecondes = 3 secondes avant de continuer */
    delay(3000);
  } else {
    /* Sinon, la distance n'est pas comprise entre 1cm et 15 cm,
 on baisse la barrière en positionnant le servomoteur à 180° */
    mon_servo.write(180);                                 
  }
  /* On attend 500 millisecondes avant d'effectuer une nouvelle boucle (loop)
 et de lire la valeur suivante */
  delay(500);                                             
}


Exécution du code :





Qu'est-ce qu'il vous reste à faire ?
Trouver le moyen de fixer le servo-moteur à l'aide de briques et de plaques LEGO, ci dessous un exemple de ce que l'on peut faire :










Aucun commentaire:

Enregistrer un commentaire