Papifab 2017 : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(9 novembre)
 
(6 révisions intermédiaires par un autre utilisateur non affichées)
Ligne 188 : Ligne 188 :
  
 
'''1. Pièces'''
 
'''1. Pièces'''
 +
  
 
Pièces
 
Pièces
Ligne 216 : Ligne 217 :
  
 
Coût : [https://fr.aliexpress.com/item/Smart-Electronics-Ultrasonic-Module-HC-SR04-HC-SR04-Distance-Measuring-Transducer-Sensor-for-arduino-Samples-DIY/32319770810.html?spm=a2g0s.9042311.0.0.rOVRfe 0,79 euros]
 
Coût : [https://fr.aliexpress.com/item/Smart-Electronics-Ultrasonic-Module-HC-SR04-HC-SR04-Distance-Measuring-Transducer-Sensor-for-arduino-Samples-DIY/32319770810.html?spm=a2g0s.9042311.0.0.rOVRfe 0,79 euros]
 
  
 
Le support de fixation  
 
Le support de fixation  
Ligne 252 : Ligne 252 :
  
 
'''2. Soudures'''  
 
'''2. Soudures'''  
 +
  
 
Les bidouilles a faire pour un montage propre :
 
Les bidouilles a faire pour un montage propre :
Ligne 286 : Ligne 287 :
  
 
[[Fichier:Photo_1.JPG|400px]]
 
[[Fichier:Photo_1.JPG|400px]]
 +
  
 
'''3. Assemblage'''
 
'''3. Assemblage'''
 +
  
 
Je n’ai pas utilisé la roulette avant d’origine et le boîtier de piles. Ces deux pièces bas de gamme comportaient des défauts. En outre l’alimentation avec 4 piles LR06 n’est pas suffisante pour alimenter l’arduino et les deux moteurs bas de gamme. C’est pourquoi j’ai commandé un adaptateur  9 volts. Pas de panique pour alimenter l’arduino une tension de 7 à 12V est recommandée. Les limites acceptées, à vos risques et périls, sont entre 6 et 20V.  
 
Je n’ai pas utilisé la roulette avant d’origine et le boîtier de piles. Ces deux pièces bas de gamme comportaient des défauts. En outre l’alimentation avec 4 piles LR06 n’est pas suffisante pour alimenter l’arduino et les deux moteurs bas de gamme. C’est pourquoi j’ai commandé un adaptateur  9 volts. Pas de panique pour alimenter l’arduino une tension de 7 à 12V est recommandée. Les limites acceptées, à vos risques et périls, sont entre 6 et 20V.  
Ligne 300 : Ligne 303 :
  
 
Détail du branchement des moteurs sur les bornes M1 et M2 du shield.
 
Détail du branchement des moteurs sur les bornes M1 et M2 du shield.
 +
  
 
'''4. Programmation '''
 
'''4. Programmation '''
 +
  
 
J’ai essayé de repiquer du code à droite à gauche mais rien ne marchait. Mais je ne comprenait pas ce que je lisais. J’ai donc écrit un programme ultra simple.  
 
J’ai essayé de repiquer du code à droite à gauche mais rien ne marchait. Mais je ne comprenait pas ce que je lisais. J’ai donc écrit un programme ultra simple.  
Ligne 337 : Ligne 342 :
 
      
 
      
 
     // Création des deux moteurs  
 
     // Création des deux moteurs  
 
+
   
 
     #include <AFMotor.h>
 
     #include <AFMotor.h>
 
     AF_DCMotor motora(1, MOTOR12_64KHZ);  
 
     AF_DCMotor motora(1, MOTOR12_64KHZ);  
     AF_DCMotor motorb(2, MOTOR12_64KHZ);
+
     AF_DCMotor motorb(2, MOTOR12_64KHZ);  
+
   
     // Utilisation des analogiques en digitaux
+
     // Utilisation des analogiques en digitaux  
 
+
   
 
     #define trigPin A0  //Trig Ultrasons (sortie)
 
     #define trigPin A0  //Trig Ultrasons (sortie)
     #define echoPin A2  //Echo Ultrasons (entrée)
+
     #define echoPin A2  //Echo Ultrasons (entrée)  
+
   
     void setup() {
+
     void setup()
        Serial.begin (9600); // option ecran pour vérifier le bon fonctionnement du capteur
+
    {
        motora.setSpeed(100);     // réglage de la vitesse de 200 à 255, 100 c’est bien  
+
    Serial.begin (9600);       // option ecran pour vérifier le bon fonctionnement du capteur
        motorb.setSpeed(120);     // réglage de la vitesse de 200/255, 120 c’est mieux ou pas
+
    motora.setSpeed(100);     // réglage de la vitesse de 200 à 255, 100 c’est bien  
        pinMode(trigPin, OUTPUT);  //Trig est une sortie
+
    motorb.setSpeed(120);     // réglage de la vitesse de 200/255, 120 c’est mieux ou pas
        pinMode(echoPin, INPUT);  //Echo est le retour, en entrée
+
    pinMode(trigPin, OUTPUT);  //Trig est une sortie
     }
+
    pinMode(echoPin, INPUT);  //Echo est le retour, en entrée
 
+
     }  
     void loop() {
+
   
 +
     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
 +
    Serial.print(distance);            // option affichage
 +
    Serial.print(" cm ");              // option affichage
 +
    Serial.print(duration);            // option affichage
 +
    Serial.println(" ms");              // option affichage
 +
   
 +
    if (distance < 50)                  // Distance trop près
 +
      {
 +
      Serial.println("distance trop près < 50"); // option affichage
 +
      Serial.println("STOP");                    // option affichage
 +
      motora.run(RELEASE);                      // stop
 +
      motorb.run(RELEASE);                      // stop
 +
      delay(1000);                              // durée
 +
      Serial.println("A DROITE");                // option affichage
 +
      motora.run(FORWARD);                      // a droite
 +
      motorb.run(BACKWARD);                      // a droite
 +
      delay(500);                                // durée
 +
      Serial.println("STOP");                    // option affichage
 +
      motora.run(RELEASE);                      // stop
 +
      motorb.run(RELEASE);                      // stop
 +
      }
 +
   
 +
    else {                    //Trop loin
 +
      motora.run(BACKWARD);    // avance correction erreur de branchement
 +
      motorb.run(BACKWARD);    // avance correction erreur de branchement
 +
      }
 
      
 
      
      long duration, distance;
+
    delay(100);               //0.1 sec entre deux mesures
      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
 
      Serial.print(distance); // option affichage
 
      Serial.print(" cm "); // option affichage
 
      Serial.print(duration); // option affichage
 
      Serial.println(" ms"); // option affichage
 
      if (distance < 50) {  // Distance trop près
 
        Serial.println("distance trop près < 50"); // option affichage
 
        Serial.println("STOP"); // option affichage
 
        motora.run(RELEASE);      // stop
 
        motorb.run(RELEASE);      // stop
 
        delay(1000); // durée
 
        Serial.println("A DROITE"); // option affichage
 
        motora.run(FORWARD);    // a droite
 
        motorb.run(BACKWARD);    // a droite
 
        delay(500); // durée
 
        Serial.println("STOP"); // option affichage
 
        motora.run(RELEASE);      // stop
 
        motorb.run(RELEASE);      // stop
 
        }
 
      else {  //Trop loin
 
        motora.run(BACKWARD);      // avance correction erreur de branchement
 
        motorb.run(BACKWARD);    // avance correction erreur de branchement
 
        }
 
      delay(100);  //0.1 sec entre deux mesures
 
 
     }
 
     }
  
Ligne 397 : Ligne 411 :
  
  
Programmer le robot en utilisant ScracthX
+
Programmer le robot en utilisant Scratch
  
 
Monter le senseur sur un servo moteur et le faire analyser son environnement à droite au milieu et à gauche pour mieux gérer l’évitement d’obstacle (imprimer le support et programmer)  
 
Monter le senseur sur un servo moteur et le faire analyser son environnement à droite au milieu et à gauche pour mieux gérer l’évitement d’obstacle (imprimer le support et programmer)  
Ligne 414 : Ligne 428 :
  
 
Plutôt que de souder directement les fils sur le shield, souder une broche de pins
 
Plutôt que de souder directement les fils sur le shield, souder une broche de pins
 +
 +
[[Catégorie:papifab]]

Version actuelle datée du 10 mars 2018 à 14:34


Oragnisation générale

PAPIFAB se poursuit en 2017.

Papifab171012.jpg

Cette année nous déplaçons les RDV les jeudi de 9h30 à 11h30 avec échanges informels jusque 12h30. A la rentrée 2017, les échanges informels se transforment :Cela devient un jeu collectifs d’échange et de partage d’expérience d’animation :

  • Quelqu’un témoigne d’une animation et tous en ensemble on réalise la documentation de l’animation.
  • Cette personne amène (ou dépose sur ce wiki) des réalisations techniques, le code, des photos (si possible) de ses animations et on publiera un article pour documenter l'animation.

Date des RDV :

  • 2 février 2017
  • 2 mars 2017
  • 6 avril 2017
  • 4 mai 2017
  • 1er juin 2017
  • 6 juillet 2017
  • 12 Octobre 2017
  • 9 novembre 2017
  • Décallé au 21 décembre 2017
  • 11 janvier 2018
  • 1er février 2018
  • 15 mars 2018
  • 5 avril 2018
  • 17 mai 2018
  • 7 juin 2018

PAPIFAB est un projet de la ville Brest.

Logo Brest metropole ville P blanc.jpg

Les ateliers

21 décembre

Fête de l'hivers à Kerourien !

Prochain RDV Décalé au 21 décembre, au centre social de Kerourien avec un menu spécial :

  • 9h30-11h : remise des kits station météo (peut-être une surprise ?).
  • 11h-12h : partage d’expérience : Solène.
  • 12h-14h repas de crèpes à la main sur le billig !
  • 14h-15h présentation publique de montage électronico-pédagogiques, peut-être sur le thème de Noël ?

Sous réserve de confirmation par Régine Roué pour le lieu et les billig.

9 novembre

Retrouvez les fichiers de la station météo Anna-MANI sur github : https://github.com/antonydbzh/Station-anna-MANI

Pour suivre la météo du local des petits débrouillards à Brest en temps réel : https://thingspeak.com/channels/320430

Petit test d'encapsulation HTML :

Calendrier 2017-2018 des RDV PAPIFAB :

  • 9 novembre 2017
  • Attention décalé au 21 décembre 2017
  • 11 janvier 2018
  • 1er février 2018
  • 15 mars 2018
  • 5 avril 2018
  • 17 mai 2018
  • 7 juin 2018

Liens vers le projet FabRecup pour celles et ceux que ça branche. Liste des composants à récupérer dans les objets : http://wiki.lesfabriquesduponant.net/index.php?title=FabRecup_:_qu%27y-a-t-il_dans_cet_objet_%3F

Exercice pour la prochaine foi : compléter la page avec des liens vers site qui montre comment récupérer et quoi faire avec la récup’

FabcityBrest : http://fabcitybrest.bientot.eu/ Lien vers les docs de la station Météo Anna-Mani : https://github.com/antonydbzh/Station-anna-MANI

Prochain rendez-vous à noter dans vos agenda :

  • Jeudi 9 novembre 2017
  • de 9h30 à 11h30 pour la formation
  • et de 11h30 à 12h30 pour un jeu collectifs d’échange et de partage d’expérience d’animation :
  • Quelqu’un témoigne d’une animation et tous en ensemble on réalise la documentation de l’animation.
  • C’est Solène qui se lance.
  • Elle amène des réalisation technique, des photos (si possible) de ses animations et on publiera sur le wiki des fabriques.
  • Lieu : Une structure de quartier dans Brest ou sinon aux petits débrouillards - 2 , rue Paul Dukas à Brest.

confirmation à venir.

6juillet

On finalise nos petits bots ! Code et documentation détaillée disponible sur le Github du projet : https://github.com/antonydbzh/petitbot

1er juin

On poursuit la réalisation des petits bots.

4 mai

On poursuit la réalisation des petits bots.

6 avril

On poursuit la réalisation des petits bots.

2 mars

pour la séance de jeudi, nous nous voyons comme chaque 1er jeudi du mois de 9h30 à 11h30 pour le volet formation et en informel pour la suite jusque 12h30.

vous devez venir avec les parties du petit bot imprimée en 3D (si vous ne pouvez pas, on en imprimera pour vous - dites nous vos besoins) : Les fichiers à imprimer sont ceux-ci (sur la page wikidébrouillard, c’est le deuxième groupe de fichier 3D) :

Si vous voulez étudier le petit bot avant la formation, tout est sur Wikidébrouillard et en licence CC-By-SA

  • Amenez également une bille pour la roue à bille si vous en trouvez facilement .
  • Amenez aussi 4 piles AA - 1,5V rechargeables si vous en avez, si vous n’en avez pas nous fournirons des piles ordinaires.

Sinon, pour information, voici ou en sont les commandes de matériel :

  • les wemos (carte de type arduino wifi) sont arrivés.
  • les interrupteurs sont arrivés à l’aéroport de Roissy le 22 février
  • les servo moteurs sont encore en Chine
  • les résistances sont arrivées à l’aéroport de Roissy le 22 février.

Pour info voici les liens vers les composant que j’ai acheté :

Les commandes ont été passée le 2 février( Servomoteurs, wemos et interrupteurs) et le 4 février (résistances). Comme vous pouvez le constater, les livraisons prennent un certain temps, assez peu prévisible.

Je ne serais pas parmi vous ce jeudi, c’est Coline Rannou-Colliot qui encadrera la formation. quelque soit le matériel reçu, nous aurons largement de quoi faire.

  • boitier à piles et cablage électrique
  • soudure des broches du wemos
  • préparation du châssis du petits bot
  • programmation du wemos.

2 février

présentation du petit bot.


9 novembre

présentation de la station météo Anna MANI

présentation d' Elliot rev. 1527


Elliot.JPG


1. Pièces

2. Soudures

3. Assemblage

4. Programmation

5. Perspectives


1. Pièces


Pièces

Chassis 1.PNG

Coût : 7,63 euros

Le châssis du robot

Chassis 2.PNG

Le connecteur 9 volts

Connecteur 9 volts.PNG

Coût : 0,21 euros

Le shield Moteur

Shield moteur.PNG

Coût : 1,74 euros

Le détecteur ultrasons

Ultrasons.PNG

Coût : 0,79 euros

Le support de fixation

Support senseur.PNG

Coût : 0,51 euros (1,01 pour deux)

Un arduino uno

Arduino CH340G.PNG

Coût : 3,89 euros

Le lien exact d’achat n’est plus disponible chez ce fournisseur. Alternative dans la même boutique : https://fr.aliexpress.com/store/product/Intelligent-lectronique-UNO-R3-Mega328P-CH340G-D-veloppement-Conseil-pour-arduino-Starter-Kit-Diy/1757110_32677198120.html?spm=a2g0w.12010615.0.0.6090aa35L0V1MV La puce CH340G a remplacé la Atmega16U2 (USB Puce), « plus rapide et moins cher » nous dit le vendeur. Peut-être un problème de driver à résoudre mais c’est encore moins cher : 2,67 euros

Cout global de la bidouille avec un support senseur en plus pour un deuxième robot :)

Arduino uno 3,89

Support 1,01

Détecteur 0,79

Connecteur 0,21

Shield 1,74

Chassis 7,63


Total 15,27 euros


2. Soudures


Les bidouilles a faire pour un montage propre :

Quatre petites soudures

Shield motor grand.png

Echo/Trig

Les deux premières soudures en A0 et A2

Le shield moteur s’encastre sur l’arduino. Les ports digitaux deviennent inaccessibles. Or nous avons besoin de deux de ses ports pour faire fonctionner le détecteur ultrasons HC-SR04.

Fort heureusement il est possible d utiliser les ports analogiques de l’arduino comme des ports digitaux. Et comme par hasard le shied moteur comprend des petits emplacements à souder. Nous allons donc souder le coté mâle de deux cavaliers mâle- femelle sur le shield moteur. Le jaune sera soudé sur la connexion A0 pour assurer la liaison vers le Trig du détecteur. Le bleu sera soudé sur la connexion A2 pour assurer la liaison vers l’ Echo du détecteur. Pourquoi le A2 et pas le A1 ? Parce que je débute en soudure et que ça fait plus de place entre les deux pins donc moins de risques de mettre de l’étain partout.

5Volts / Ground

Les deux dernières soudures en 5V et Gnd.

Tant que nous y sommes soudons le coté mâle d’un cavalier mâle- femelle de couleur rouge sur le connecteur 5 Volts du shield moteur. Et soudons le coté mâle d’un cavalier mâle- femelle de couleur noire sur le connecteur Ground du shield moteur.

Voilà ce que ça donne coté pile :

Photo 2.png

Et coté face :

Photo 1.JPG


3. Assemblage


Je n’ai pas utilisé la roulette avant d’origine et le boîtier de piles. Ces deux pièces bas de gamme comportaient des défauts. En outre l’alimentation avec 4 piles LR06 n’est pas suffisante pour alimenter l’arduino et les deux moteurs bas de gamme. C’est pourquoi j’ai commandé un adaptateur 9 volts. Pas de panique pour alimenter l’arduino une tension de 7 à 12V est recommandée. Les limites acceptées, à vos risques et périls, sont entre 6 et 20V.

Robot monté.JPG

Vous remarquerez que j’ai protégé l’arduino avec amour par un petit tapis de mousse alvéolé :) Pour le câblage des moteurs, j’ai laissé le hasard œuvrer. Une éventuelle inversion de la polarité dans les branchements peut-être résolue dans la partie programmation du projet. Il y a deux petites soudures à faire sur chaque moteur, un fil rouge et un fil noir. Je conseille d’étamer l’extrémité de tous les câbles avant de souder ou de visser dans les connecteurs du shield.

Photo branchement moteurs.JPG

Détail du branchement des moteurs sur les bornes M1 et M2 du shield.


4. Programmation 


J’ai essayé de repiquer du code à droite à gauche mais rien ne marchait. Mais je ne comprenait pas ce que je lisais. J’ai donc écrit un programme ultra simple.

Dans une premier temps, le détecteur ultrasons fait un test de distance avec l’obstacle le plus proche. Il envoie un ultrason par le trig et l’écoute en retour sur l’écho. Le programme déduit la distance par calcul.

Si la distance est inférieur à 50 cm. Le robot s’arrête. Il tourne à gauche et poursuit sa route. Si la distance est supérieure à 50 cm le robot poursuit sa route.

La partie du code sur le capteur de distance à ultrasons HC-SR04 avec Arduino Uno provient de TipTopBoards.com1

La vitesse des moteurs est à caler entre 200 et 255.

Je la règle à 100 et 120. Au delà le robot va trop vite à mon goût.

Le décalage de vitesse entre le moteur droit et le moteur gauche est dû à la moindre efficacité d’un des moteurs. Avec 100 et 100 le robot tire à droite au lieu d’aller tout droit.

Il y a trois ordres possibles pour les moteurs STOP, BACKWARD, FORWARD.Je passe par un STOP entre chaque ordre pour les soulager.

L’utilisation du shield nécessite de charger une librairie spécifique sinon vous aller avoir un message d’erreur à la compilation. La documentation est disponible à l adresse suivante : https://www.adafruit.com/product/81. Le détail de la librairie est décrit ici : https://learn.adafruit.com/adafruit-motor-shield/library-install. La librairie est disponible là : https://github.com/adafruit/Adafruit-Motor-Shield-library/zipball/master. Attention à bien télécharger la bonne librairie pour le Shield V1, obsolète, en suivant les liens ci-avant. Une fois téléchargée, installez la via le gestionnaire de librairies disponible dans le menu de l’Arduino IDE Croquis/ Inclure une bibliothèque/Ajouter la bibliothèque .ZIP. Profitez en pour vérifier la mise à jour de vos modules via le Gestionnaire de Bibliothèques.


   //**********************************************************
   //  Elliot
   // Capteur de distance à ultrasons HC-SR04 avec Shield Motor V1 et Arduino Uno
   //  
   // Vcc → 5V
   // Gnd → Gnd 
   // Trig → pin A0
   // Echo → pin A2
   // 
   // Moteurs sur M1 et M2
   //
   //**********************************************************
   
   // Création des deux moteurs 
    
   #include <AFMotor.h>
   AF_DCMotor motora(1, MOTOR12_64KHZ); 
   AF_DCMotor motorb(2, MOTOR12_64KHZ); 
    
   // Utilisation des analogiques en digitaux 
    
   #define trigPin A0  //Trig Ultrasons (sortie)
   #define echoPin A2  //Echo Ultrasons (entrée) 
    
   void setup()
   {
    Serial.begin (9600);       // option ecran pour vérifier le bon fonctionnement du capteur
    motora.setSpeed(100);      // réglage de la vitesse de 200 à 255, 100 c’est bien 
    motorb.setSpeed(120);      // réglage de la vitesse de 200/255, 120 c’est mieux ou pas
    pinMode(trigPin, OUTPUT);  //Trig est une sortie
    pinMode(echoPin, INPUT);   //Echo est le retour, en entrée
   } 
    
   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
    Serial.print(distance);             // option affichage
    Serial.print(" cm ");               // option affichage
    Serial.print(duration);             // option affichage
    Serial.println(" ms");              // option affichage 
    
    if (distance < 50)                  // Distance trop près
     {  
     Serial.println("distance trop près < 50"); // option affichage
     Serial.println("STOP");                    // option affichage
     motora.run(RELEASE);                       // stop 
     motorb.run(RELEASE);                       // stop
     delay(1000);                               // durée
     Serial.println("A DROITE");                // option affichage
     motora.run(FORWARD);                       // a droite
     motorb.run(BACKWARD);                      // a droite 
     delay(500);                                // durée
     Serial.println("STOP");                    // option affichage
     motora.run(RELEASE);                       // stop
     motorb.run(RELEASE);                       // stop
     } 
    
    else {                     //Trop loin
     motora.run(BACKWARD);     // avance correction erreur de branchement 
     motorb.run(BACKWARD);     // avance correction erreur de branchement 
     } 
    
    delay(100);                //0.1 sec entre deux mesures 
    
   }


5. Perspectives


Programmer le robot en utilisant Scratch

Monter le senseur sur un servo moteur et le faire analyser son environnement à droite au milieu et à gauche pour mieux gérer l’évitement d’obstacle (imprimer le support et programmer)

Rajouter un klaxon buzzer

Mettre des phares / led

Décoration Paper Toy

Faire un concours de programmation via la distance parcourue en un temps donné

Essayer le projet avec un public…

Faire varier la vitesse en fonction de la distance à l’obstacle

Plutôt que de souder directement les fils sur le shield, souder une broche de pins