Binome2017-7
Sommaire
- 1 Imagination et conceptualisation du robot
- 2 Séance du 15/01/2018
- 3 Séance du 16/01/2018
- 4 Travail sur le Shield Arduino
- 5 Séance du 18/01/2018
- 6 Séance du 19/01/2018
- 7 Séance du 22/01/2018
- 8 Raspberry PI
- 9 Séance du 25/01/2018
- 10 Séance du 29/01/2018
- 11 Création Page Web Raspberry PI pour le contrôle de Bob
- 12 Séance du 01/02/2018
- 13 Séance du 09/02/2018
- 14 Séances du 15/02/2018 au 23/02/2018
- 15 Partie Informatique Arduino et programmes
- 16 Séances du 05/03/2018 au 11/03/2018
- 17 Séance du 12/03/2018
Imagination et conceptualisation du robot
Séance du 15/01/2018
Découverte du projet et des objectifs.
Après quelques hésitations j'ai choisi de construire un robot prédateur. Celui-ci sera un robot télécommandé grâce a une application sur téléphone mobile avec une structure extérieure contenant certains éléments imprimés a l'aide d'une imprimante 3D. Pour réaliser cela je vais me focaliser sur la programmation de l'ordinateur miniature Raspberry Pi 3 et de l'impression 3D. je vais donc utiliser une carte Arduino Mega préalablement réalisée et je concevrai le bouclier de cet Arduino pour le rendre le plus adapté a mon projet.
MATÉRIELS:
- Carte Raspberry Pi 3 -Batterie Raspberry- Camera
- Arduino Mega, récepteur infra-rouge, sonar, contrôleur moteurs ,servomoteur
- Moto-réducteurs et 2 roues et quartz, micro-contrôleurs ATMega328p , contrôleur de moteurs TB6612FNG, LED infra-rouge
- 3 plaques de plexiglas Imprimante 3D
Séance du 16/01/2018
Mise au clair de mes idées, forme générale du robot , les différentes taches a effectuer et la visualisation de plusieurs vidéo expliquant la manipulation de divers composants dont j'ignorais le principe de fonctionnement exact.
Pour avoir une idée de la taille de mon robot final, j'ai du élaborer une liste complète des éléments qui seront sur mon robot et leurs dimensions :
J'ai ensuite énuméré les étapes et les choses a réaliser :
- Créer un Shield pour l'arduino
- utilisation de logiciel fritzing pour sa conception
- Comprendre le fonctionnement de la liaison Arduino/Raspberry
- Partie Mécanique :
- découpe laser des plaques de plexiglas en fonctions du câblage etc ...
- impression 3D des parties nécessaires
- Faire ma tour avec ses composants ( utiliser un tube en PVC et y passer les câbles? )
- Partie Informatique :
- Écrire un code sur IDE Arduino pour contrôler les éléments
- Faire en Javascript les relations de commandes entre Raspb et Arduino
- Créer une ' application' sur le téléphone pour contrôler le robot
Travail sur le Shield Arduino
Séance du 18/01/2018
Réalisation du Shield. pendant cette séance j'ai compris le fonctionnement des entrées et sorties de l’Arduino et leurs fonctions, j'ai également appris a manipuler le logiciel fritzing avec lequel j'ai confectionné mon shield d’Arduino. Je me suis basée sur la carte qui nous a été fournie tout en la modifiant pour qu'elle s'adapte a mon projet et aux différents éléments sur mon robot
Séance du 19/01/2018
Finalisation et mise en forme de mon shield pour l'optimiser au maximum ( faciliter le travail de la machine lors de la gravure de ma carte , me faciliter le travail lors de la soudure des différents éléments,...)
Séance du 22/01/2018
Apport des dernières modifications sur le shield puis son export sous format GEBER pour l'envoyer vers la machine Attention!! Il faut ajouter au PCB un 'plan de masse' grâce au commandes Routing -> Ground fill -> Copper fill bottom pour que la machine puisse reconnaître les parties distinctes sur la carte. On obtient alors un PCB prêt a graver.Fichier:Fritzingshield.zip
Je suis ensuite allée,accompagnée du prof, vers la machine de gravure (une machine très impressionnante!!) pour procéder a la gravure des PCB.Pendant ce temps le prof nous a expliqué le fonctionnent globale de la machine , comment l'utiliser , ses différentes fonctionnalités et les étapes requise pour aboutir a une carte fonctionnelle
Raspberry PI
Séance du 25/01/2018
Pendant cette séance je me suis pencher sur la partie informatique et programmation de ma raspberry pi et de mon arduino. En effet cette partie est l'une des plus importantes de ce projet.
Mon but final est de pouvoir contrôler a distance mon robot a l'aide de mon téléphone.pour cela je m'aiderai d'une raspberry pi et d'une camera pi.je dois donc mettre en place une application ou une page web ou je pourrais visualiser simultanément la vidéo envoyée par la camera et les boutons de commandes du robot.
Ayant jamais manipuler ou programmer une rapsberry, cet objectif est donc un véritable challenge. Pour le relever j'ai commencer par essayer de comprendre comment se faisait la connexion en série entre l'arduino et la raspberry, voir si il y avait des applications mobiles déjà faites que je pourrais utiliser... .
Après quelques recherches je m’aperçois qu'il existe plusieurs applications de visualisation de 'streaming' , d'autre de contrôle , mais aucune réunissant les 2 comme je le souhaitais. ceci implique que je serai donc obligée de la créer moi même (chose a la fois réjouissante et effrayante).
j'ai donc passer cette journée a regarder et lire des tutoriels expliquant la liaison série et le B-A-BA de la programmation de l'arduino et de la raspberry.
Séance du 29/01/2018
Travail sur la raspberry en suivant le protocole qui nous a été fourni sur la page de la saison 2017/2018 du bureau d’étude. Adresse IP : 172.26.145.177/24
Création Page Web Raspberry PI pour le contrôle de Bob
Séance du 01/02/2018
Compréhension de la création et du fonctionnement de la page Web . J'ai téléchargé le fichier Webserial.zip en copiant l'adresse URL du fichier sur internet puis avec la commande "wget adresse" sur le terminal de la raspberry puis j'ai " unzip Webserial.zip" dans le répertoire pi
Séance du 09/02/2018
Création de ma page web pour le contrôle de mon robot après avoir appris les bases du codage HTML (insertion d'images, éventements "onclick"sur une image... ) et j'ai élaboré le code suivant:
Fichier:Boutons.zip <img src="right.png" alt="right button" onclick="sendMessage(8);">
pour affecter a une image un événement onclick. cet événement est le déclenchement de la fonction sendMessage(data) qui en utilisant le Websocket va assurer la transmission des commandes entre l'interface internet et l'arduino (voir le code jserial.html)
Séances du 15/02/2018 au 23/02/2018
J'ai mis en place ma RaspiCam en suivant ce tutoriel Raspicam Setup et tester le fonctionnement de la camera en Streaming. Pour cela j'ai donc installer sur ma raspberry la fonction motion
apt-get install -y libjpeg62-turbo libjpeg62-turbo-dev libavformat-dev libavcodec-dev libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 apt-get install motion apt-get update apt-get upgrade
Après quelques réglages de problèmes de droits d'administrateurs j'ai d'abord tester la raspicam en prenant une photo en utilisant "raspistill -o image.jpg" puis une vidéo avec "raspivid -o video.h264 -t 10000" pour une vidéo de 10 secondes et enfin j'ai tester le streaming en direct de la camera en tapant l'adresse 172.26.145.177:8081 sur un navigateur web. il faudra intégrer cette visualisation en direct sur le code de ma page 'control.html' pour avoir l'interface web que j'imagine. Même si ce streaming est fidèle a la réalité (bonne qualité de résolution) il est en revanche très lent. Donc si je ne peut pas régler se problème je serai obligée d’équiper mon robot de capteurs IR pour détecter sa proie.
pour insérer le streaming dans l'interface web on utilise la commande
<img src="172.26.145.192/29" />
ATTENTION : la raspberry peut parfois changer d'adresse IP . Pour la retrouver: utiliser la commande 'ip a'
Partie Informatique Arduino et programmes
Séances du 05/03/2018 au 11/03/2018
Soudage de mon shield . Après une examination de la carte on s'est rendu compte de l’absence de certains trous et de pistes essentiels au fonctionnement des différents composants. Pour remédier ces problèmes on a percer nous même des trous et on les a relié en assurant le contact entre les pistes et les pins.
Séance du 12/03/2018
- Test de la connexion serie entre l'arduino et la raspberry a l'aide du programme :
#define LED1 11 #define Bouton1 2 #define Bouton2 3 void setup(void){ Serial.begin(9600); for(int i=0;i<6;i++) pinMode(LED1+i,OUTPUT); pinMode(Bouton1,INPUT); pinMode(Bouton2,INPUT); digitalWrite(Bouton1,HIGH); digitalWrite(Bouton2,HIGH); for(int i=0;i<6;i++){ digitalWrite(LED1+i,HIGH); delay(200); digitalWrite(LED1+i,LOW); } } void loop(void){ if(Serial.available()>0){ unsigned char actions=Serial.read(); int led=LED1+actions&0x7f; if((actions&0x80)==0) digitalWrite(led,HIGH); else digitalWrite(led,LOW); } unsigned char capteurs=0; if(digitalRead(Bouton1)==LOW) capteurs |= 0x01; if(digitalRead(Bouton2)==LOW) capteurs |= 0x02; Serial.write(capteurs); delay(100); }
- Programme du détecteur ultrason :
- Programme Moteurs:
Le contrôleur de moteur utiliser est un md08 pololu et pour faire la connexion on utilise:
if(Serial.available()>0){ unsigned char actions=Serial.read();