Ceci est une ancienne révision du document !
Table des matières
Stage LPH: avril 2019
Introduction
Stage LPH d'avril à L'UBO Open Factory
L'objectif de cet atelier est de réaliser un petit robot à base de micro-contrôleur.
Public cible | 12 jeunes |
---|---|
Date | semaine 16: du 15 avril au 19 avril sous réserve de confirmation des différents acteurs |
Lieu | UBO Open Factory |
Modalités
Une inscription est nécessaire pour pouvoir planifier. Une adhésion (de 20 euros) et une participation financière (60 euros) pour le matériel seront demandées.
Planning et contenu
- Communication
- Inscription et vérification de la faisabilité du projet (en compétences, en temps, en matériels si besoin et en coût matériel)
- Validation inscription et devis matériel
- Planification du projet sur la semaine de mai (en fonction du temps…)
Ressources :
- Inspiration : Little Bot : https://www.instructables.com/id/LittleBot-3D-Printed-Arduino-Mobile-Robot/
- Fichiers STL : https://www.thingiverse.com/thing:2417739/files
État du stock et matériel nécessaire pour le stage
Voici une première liste de matériel pour le stage:
Intitulé | Quantité nécessaire | Quantité à commander/produire | Etat |
---|---|---|---|
Node MCU ESP 32 | 1 * 12 | 12 | à commander (ou arduino nano + module bluetooth) |
cartes de support pour les éléments | 1 * 12 | 12 | à commander avec le MCU |
Servo moteur roue 360° | 2 * 12 | 24 | à commander |
Servo moteur pince | 1 * 12 | 12 | à commander |
Module Ultra son | 1 * 12 | à vérifier dans le stock | |
Bloc pile alimentation | 1 * 12 | à vérifier dans le stock | |
pile alimentation | 4 * 12 | 48 | à commander |
fils/nappe de connexion | plein | à vérifier dans le stock | |
filament <couleur> pour imprimante 3D | rouge | ||
filament <couleur> pour imprimante 3D | noir | ||
filament <couleur> pour imprimante 3D | blanc | ||
colle pour le plateau imprimante 3D | |||
matériel pour le plateau imprimante 3D | |||
scotch pour le plateau imprimante 3D |
Matériel hors-kit à préparer pour la tenue de l'atelier:
Intitulé | Quantité | A préparer |
---|---|---|
rallonge | 2 | |
multiprise | 4 | |
PC portable: | 12 | au moins 9 de prêt |
alimentations PC | 12 | |
souris PC | 12 | à vérifier |
fers à souder | 3/4 | en cas de besoin |
tapis pour fer à souder | 3/4 | |
support fer à souder | 3/4 | |
bobine étain | 1 | |
fils | ||
multimètre | 1 | en cas de besoin |
imprimante 3D | 1 | Ultimaker pour imprimer les pièces ? |
Liste des tâches
Tâche | Qui | Opération |
---|---|---|
Faire l'état du stock | Christian et Stéphane | |
Commande matériel | Christian et Stéphane | |
Communication sur les listes de diffusion | Christian et Stéphane | |
Communication “Affiche” | ||
Gestion des inscriptions | ||
Validation des inscriptions | ||
Planification des projets | ||
Développement logiciel | Simon | cahier des charges à prévoir |
Impressions 3D
Objectif 14 robots avec comme seul accessoire la pince.
STL des Pièces : https://cloud.lph.bzh/index.php/s/D0VB0A5Bi5igJXt
- Base Custom LPH (pas encore validée)
- Head
- Wheel (version creusée Wheel2)
- Gripper (pince)
- Support servo
- Doigt 1
- Doigt 2
- Gripper Attachment ( à prendre sur les fichiers originaux https://www.thingiverse.com/download:3877090 )
Impressions A faire
Pièces | Impressions Benjamin | Impressions Yann | Simon |
---|---|---|---|
Têtes | |||
Bases | |||
Pinces | 2 pinces rouge avec attache | 4 pinces | |
Roues | 10 roues |
Impressions Faites
Pièces | Impressions Benjamin | Impressions Yann |
---|---|---|
Têtes | 3 tête rouge + 2 têtes jaunes + 4 têtes bleu | 2 noires + 2 vertes + 2 blanches |
Base | 3 Bleues + 4 bases rouges + 2 bases grises | 2 blanches + 2 vertes + 2 noires |
Roues (unitaires) | 7 roues bleus + 2 roues rouges | 6 noires + 4 blanches + 4 vertes |
Pinces |
Présent pour animer
Animation de l'atelier:
- Stéphane Blanc
- Christian Jacolot
- Benjamin
- Arnaud (mercredi après midi et jeudi)
- Simon (mercredi après midi peut-être et jeudi et vendredi à priori)
- Tanguy (jeudi)
Déroulé du projet
- Présentation du projet
- Validation du matériel et des logiciels installés sur le PC
- Montage
- Programmation
Contacts
Structure | Nom Prénom | Rôle sur le projet / poste |
---|---|---|
Maison du libre | Stéphane Blanc | Logistique et animation |
Maison du libre | Christian Jacolot | Logistique et animation |
Maison du libre | Benjamin | Logistique et animation |
Maison du libre | Arnaud | Développement et animation |
Maison du libre | Simon | Développement ( et animation ) |
Remerciements
Nous remercions Yves et Matthieu pour accueillir le stage dans les locaux de l'UBO Open Factory.
Préparation des PC
Installation de xubuntu 18.04 sur les PC, iso sur clé USB.
Mise à jour et installation des logiciels/paquets nécessaires:
$ sudo apt update $ sudo apt upgrade $ sudo apt install git mercurial build-essential arduino-core arduino-mk gcc-avr avr-libc openjdk-8-jdk $ sudo apt install squeak-vm squeak-plugins-scratch $ sudo apt install nodejs npm $ id $ sudo usermod -a -G dialout $USER $ more /etc/group # télécharger arduino sur arduino.cc / linux 32 bits $ cd Téléchargements/ $ tar xf arduino-1.8.8-linux32.tar.xz $ cd arduino-1.8.8/ $ ./install.sh $ cd # démarrer arduino IDE # menu Outils / Gérer les bibliothèques # installer: circuit playground, unified sensor, DHT sensor library $ sudo npm install -g --unsafe-perm node-red $ node-red # navigateur web sur localhost:1880 # installer via palette: node-red-node-serialport et node-red-dashboard $ sudo apt install logisim openssh-server $ sudo apt install gcc-avr avr-libc flashplugin-installer algobox blender python3-dev python3-setuptools python3-numpy $ sudo apt install python3-opengl ffmpeg libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev libtiff5-dev libx11-6 libx11-dev fluid-soundfont-gm timgm6mb-soundfont xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic fonts-freefont-ttf libfreetype6-dev $ java -version $ javac -version $ sudo update-alternatives --config java # choisir java 8 $ java -version $ sudo add-apt-repository ppa:openscad/releases $ sudo apt update $ sudo apt install openscad $ sudo apt install fritzing fritzing-parts gimp
Présentation
Documents
Fichier de présentation
3D
Exemple d'accessoire pour la tête:
Code OpenSCAD pour ajouter l'accessoire sur la tête:
#rotate([180,0,0]) import("<path>/Documents/Head.stl"); rotate_extrude() { polygon(points=[[0,0],[10,0],[10,10],[25,25],[0,25]]); }
Exemple de texte pour le dozer:
Code OpenSCAD pour ajouter le texte sur le dozer:
#translate([0,0,-23]) rotate([-90,-90,0]) import("<path>/Documents/Dozer.stl"); translate ([-12,15,-3]) linear_extrude(height=5) { text("LPH"); }
Code
Pour récupérer le code du robot adapté:
$ git clone https://git.archieri.fr/simon/SimpleBotArduino.git
Test Servo
# include <Servo.h> Servo servoLeft; Servo servoRight; void setup() { servoLeft.attach(11); servoRight.attach(10); Serial.begin(9600); } void loop() { servoLeft.write(90); // 0 => sens, 180 => autre sens servoRight.write(90); // } void stop() { servoLeft.write(90); // 0 => sens, 180 => autre sens servoRight.write(90); // } void avancer() { servoLeft.write( xx ); // 0 => sens, 180 => autre sens servoRight.write( xx ); // } void reculer() { servoLeft.write( xx ); // 0 => sens, 180 => autre sens servoRight.write( xx ); // } void tourner() { servoLeft.write( xx ); // 0 => sens, 180 => autre sens servoRight.write( xx ); // }
Avec le sonar
#include <NewPing.h> #include <Servo.h> Servo servoLeft; Servo servoRight; NewPing sonar(7, 6, 200); void setup() { servoLeft.attach(11); servoRight.attach(10); Serial.begin(9600); } void loop() { gestionSonar(); } void gestionSonar() { int distance = sonar.ping_cm(); avancer(); if (distance < 10) { reculer(); tournerGauche(); } } void stop() { servoLeft.write(90); // 0 => sens, 180 => autre sens servoRight.write(90); // } void avancer() { servoLeft.write( 0 ); // 0 => sens, 180 => autre sens servoRight.write( 180 ); // } void reculer() { servoLeft.write( 180 ); // 0 => sens, 180 => autre sens servoRight.write( 0 ); // } void tournerGauche() { servoLeft.write(45); // 0 => sens, 180 => autre sens servoRight.write(45); // } void tournerDroite() { servoLeft.write(135); // 0 => sens, 180 => autre sens servoRight.write(135); // }
Avec le bluetooth
#include <NewPing.h> #include <Servo.h> #include <SoftwareSerial.h> Servo servoLeft; Servo servoRight; NewPing sonar(7, 6, 200); SoftwareSerial BTSerial(4, 8); // TX, RX void setup() { servoLeft.attach(11); servoRight.attach(10); //Serial.begin(9600); BTSerial.begin(9600); } void loop() { gestionSonar(); } void gestionSonar() { int distance = sonar.ping_cm(); avancer(); if (distance > 0 && distance < 10) { BTSerial.println("obstacle < 10cm"); reculer(); tournerGauche(); } } void stop() { servoLeft.write(90); // 0 => sens, 180 => autre sens servoRight.write(90); // BTSerial.println("stop"); } void avancer() { servoLeft.write( 0 ); // 0 => sens, 180 => autre sens servoRight.write( 180 ); // BTSerial.println("avance"); } void reculer() { servoLeft.write( 180 ); // 0 => sens, 180 => autre sens servoRight.write( 0 ); // BTSerial.println("recule"); } void tournerGauche() { servoLeft.write(45); // 0 => sens, 180 => autre sens servoRight.write(45); // BTSerial.println("gauche"); } void tournerDroite() { servoLeft.write(135); // 0 => sens, 180 => autre sens servoRight.write(135); // BTSerial.println("droite"); }