Binome2017-7 : Différence entre versions
(→Raspberry PI) |
|||
(44 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | <include nopre noesc src="/home/pedago/ppeip/include/video-Robot_Binome07_2017-iframe.html" /> | ||
+ | __TOC__ | ||
+ | <br style="clear: both;"> | ||
== Imagination et conceptualisation du robot == | == Imagination et conceptualisation du robot == | ||
Ligne 5 : | Ligne 8 : | ||
Découverte du projet et des objectifs. | 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 | + | Après quelques hésitations j'ai choisi de construire un robot prédateur. Celui-ci sera un robot télécommandé grâce à 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: | MATÉRIELS: | ||
Ligne 50 : | Ligne 53 : | ||
− | Apport des dernières modifications sur le shield puis son export sous format | + | Apport des dernières modifications sur le shield puis son export sous format GERBER 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 | 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. | 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 ]] | On obtient alors un PCB prêt a graver.[[Fichier:Fritzingshield.zip ]] | ||
− | [[Fichier:PCBfinal.png]] | + | [[Fichier:PCBfinal.png]] [[Fichier:schematics.png]] |
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 | 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 | ||
Ligne 66 : | Ligne 70 : | ||
== '''Séance du 25/01/2018''' == | == '''Séance du 25/01/2018''' == | ||
− | Pendant cette séance je me suis | + | Pendant cette séance je me suis penchée 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. | 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. | ||
Ligne 75 : | Ligne 79 : | ||
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. | 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''' == | == '''Séance du 29/01/2018''' == | ||
Ligne 123 : | Ligne 126 : | ||
− | == | + | == Parties Mécanique et Informatique:programmes Arduino == |
== '''Séances du 05/03/2018 au 11/03/2018''' == | == '''Séances du 05/03/2018 au 11/03/2018''' == | ||
Ligne 132 : | Ligne 135 : | ||
− | == ''' | + | == '''Séances du 12/03/2018 au 26/03/2018''' == |
*Test de la connexion serie entre l'arduino et la raspberry a l'aide du programme : | *Test de la connexion serie entre l'arduino et la raspberry a l'aide du programme : | ||
Ligne 167 : | Ligne 170 : | ||
[[Fichier:ProgrammeUltrason.zip]] | [[Fichier:ProgrammeUltrason.zip]] | ||
+ | |||
+ | *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(); | ||
+ | [[Fichier:pololu.jpg]] | ||
+ | |||
+ | |||
+ | [[Fichier:ProgrammeMoteurs.zip]] | ||
+ | |||
+ | Après la combinaison des différents programmes on obtient [[Fichier:progrbob.zip]] | ||
+ | |||
+ | Pour pouvoir 'attraper' les proies on a besoins d’intégrer un électro-aimant . pour cela il faut brancher un transistor au pattes de l’électro-aimant pour pouvoir le contrôler et l'allumer lorsqu’on attrape une proie (le type de transistor dans la photo ci dessous n'est pas adapté) | ||
+ | |||
+ | [[Fichier:Electroaimanttransistor.png]] | ||
+ | |||
+ | == Montage et dernières touches == | ||
+ | == '''Séances du 26/03/2018 au 09/04/2018''' == | ||
+ | |||
+ | Pour que le système de camera soit efficace je dois rajouter une modulation de vitesse a mon robot. il pourra donc fonctionner avec différents modes | ||
+ | *Mode recherche | ||
+ | *Mode poursuite | ||
+ | *Arrêt | ||
+ | en fonction du mode choisi à travers l'interface la vitesse des moteurs changera. | ||
+ | code de la nouvelle interface : faire ctrl+u et le code source s'affichera. | ||
+ | [[Fichier:Boutons1.zip]] | ||
+ | |||
+ | Notes: | ||
+ | *Attention au type de données envoyées et leur traitement par l'arduino (en code ASCII ...) | ||
+ | *Pour commander le robot a partir d'un portable : se connecter sur le wifi de la raspberry (ici bob2_0) puis aller sur 192.168.100.1 | ||
+ | *pour la led infrarouge: utiliser la librairie IRremote.h voir [https://www.pjrc.com/teensy/td_libs_IRremote.html / TutorielIR] | ||
+ | * rajouter des piles pour alimenter les moteurs : En effet mon idée d'alimenter tous le robot ( raspberry;, arduino et moteurs) a l'aide de la batterie de la raspberry (5V) ne fonctionne pas aussi bien que je le croyait et des problèmes de courant perturbe l’avancée de Bob. | ||
+ | |||
+ | Durant ces séance j'ai aussi procédé a la construction de Bob. A travers le BE j'ai remarqué mon intérêt pour les parties conception et programmation du robot; Étant seule et avec des idées beaucoup trop ambitieuses, mes projets d'impression 3D du châssis et conception mécanique de bob on laissé place a la programmation de la Raspberry pi et la télécommande . J'ai donc décidé de prendre un châssis déjà découper et prés a être monté. | ||
+ | |||
+ | |||
+ | [[Fichier:montagebob.jpg]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == '''Séance du 16/04/2018''' == | ||
+ | |||
+ | Finalisations des dernières touches sur le programme arduino et réglages de problèmes dus au différences de courant et autres. | ||
+ | Programme robot sans IR [[Fichier:Progbob1 2.zip]] | ||
+ | |||
+ | A faire: | ||
+ | *faire un sketch freecad pour tenir la camera et le sonar | ||
+ | *dessouder les câbles pour la led IR et en mettre des nouveaux | ||
+ | *faire le code IR | ||
+ | *Voir quoi faire avec l'electro aimant et si je le mets : mettre un bouton attraper | ||
+ | |||
+ | == '''Séance du 19/04/2018''' == | ||
+ | |||
+ | Travail sur le code IR et soudage de la led IR en question . | ||
+ | |||
+ | Dernier jet du programme robot [[Fichier:Progbob1 3.zip ]]. | ||
+ | |||
+ | Travail sur la pièce imprimée en 3D qui viendra tenir mon sonar et ma camera en place. Après la prise de quelques mesures réelles, j'ai utilisé ces mesures ainsi que le logiciel ONSHAPE pour modéliser la pièce. J'obtiens alors après quelques temps de travail: | ||
+ | |||
+ | [[Fichier:Bob3d.png]] | ||
+ | |||
+ | [[Fichier:Bob3D.zip]] | ||
+ | |||
+ | == Conclusions et rendu Final == | ||
+ | |||
+ | Ce BE fut une très belle expérience. Après plusieurs semaines de travail et grâce a l'aide de nos profs, j'ai l'honneur de vous présenter, en cette fin de wiki, le fameux...le plus beau ..... BOB 2.0 !!! | ||
+ | |||
+ | |||
+ | [[Fichier:Bobfinal.jpg]] [[Fichier:Bobfinal1.jpg]] | ||
+ | |||
+ | |||
+ | |||
+ | Ce petit robot est complètement télécommandable a l'aide d'un téléphone portable . En effet grâce a une interface web graphique (accessible sur l'adresse 192.168.100.1 -> control.php) le joueur peut commander Bob sans être dans la même salle que lui. Cette prouesse technique (j'ai bien conscience de l’exagération mais je ne pu m'en empêcher) est possible grâce a une camera pi implantée sur le robot qui permet de voir le monde a travers ses yeux et repérer les proies dans les parages. | ||
+ | |||
+ | |||
+ | Tout les programmes [[Fichier:BOB.zip]] |
Version actuelle datée du 16 juillet 2018 à 15:35
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 Parties Mécanique et Informatique:programmes Arduino
- 16 Séances du 05/03/2018 au 11/03/2018
- 17 Séances du 12/03/2018 au 26/03/2018
- 18 Montage et dernières touches
- 19 Séances du 26/03/2018 au 09/04/2018
- 20 Séance du 16/04/2018
- 21 Séance du 19/04/2018
- 22 Conclusions et rendu Final
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 à 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 GERBER 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 penchée 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'
Parties Mécanique et Informatique:programmes Arduino
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éances du 12/03/2018 au 26/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();
Après la combinaison des différents programmes on obtient Fichier:Progrbob.zip
Pour pouvoir 'attraper' les proies on a besoins d’intégrer un électro-aimant . pour cela il faut brancher un transistor au pattes de l’électro-aimant pour pouvoir le contrôler et l'allumer lorsqu’on attrape une proie (le type de transistor dans la photo ci dessous n'est pas adapté)
Montage et dernières touches
Séances du 26/03/2018 au 09/04/2018
Pour que le système de camera soit efficace je dois rajouter une modulation de vitesse a mon robot. il pourra donc fonctionner avec différents modes
- Mode recherche
- Mode poursuite
- Arrêt
en fonction du mode choisi à travers l'interface la vitesse des moteurs changera. code de la nouvelle interface : faire ctrl+u et le code source s'affichera. Fichier:Boutons1.zip
Notes:
- Attention au type de données envoyées et leur traitement par l'arduino (en code ASCII ...)
- Pour commander le robot a partir d'un portable : se connecter sur le wifi de la raspberry (ici bob2_0) puis aller sur 192.168.100.1
- pour la led infrarouge: utiliser la librairie IRremote.h voir / TutorielIR
- rajouter des piles pour alimenter les moteurs : En effet mon idée d'alimenter tous le robot ( raspberry;, arduino et moteurs) a l'aide de la batterie de la raspberry (5V) ne fonctionne pas aussi bien que je le croyait et des problèmes de courant perturbe l’avancée de Bob.
Durant ces séance j'ai aussi procédé a la construction de Bob. A travers le BE j'ai remarqué mon intérêt pour les parties conception et programmation du robot; Étant seule et avec des idées beaucoup trop ambitieuses, mes projets d'impression 3D du châssis et conception mécanique de bob on laissé place a la programmation de la Raspberry pi et la télécommande . J'ai donc décidé de prendre un châssis déjà découper et prés a être monté.
Séance du 16/04/2018
Finalisations des dernières touches sur le programme arduino et réglages de problèmes dus au différences de courant et autres. Programme robot sans IR Fichier:Progbob1 2.zip
A faire:
- faire un sketch freecad pour tenir la camera et le sonar
- dessouder les câbles pour la led IR et en mettre des nouveaux
- faire le code IR
- Voir quoi faire avec l'electro aimant et si je le mets : mettre un bouton attraper
Séance du 19/04/2018
Travail sur le code IR et soudage de la led IR en question .
Dernier jet du programme robot Fichier:Progbob1 3.zip.
Travail sur la pièce imprimée en 3D qui viendra tenir mon sonar et ma camera en place. Après la prise de quelques mesures réelles, j'ai utilisé ces mesures ainsi que le logiciel ONSHAPE pour modéliser la pièce. J'obtiens alors après quelques temps de travail:
Conclusions et rendu Final
Ce BE fut une très belle expérience. Après plusieurs semaines de travail et grâce a l'aide de nos profs, j'ai l'honneur de vous présenter, en cette fin de wiki, le fameux...le plus beau ..... BOB 2.0 !!!
Ce petit robot est complètement télécommandable a l'aide d'un téléphone portable . En effet grâce a une interface web graphique (accessible sur l'adresse 192.168.100.1 -> control.php) le joueur peut commander Bob sans être dans la même salle que lui. Cette prouesse technique (j'ai bien conscience de l’exagération mais je ne pu m'en empêcher) est possible grâce a une camera pi implantée sur le robot qui permet de voir le monde a travers ses yeux et repérer les proies dans les parages.
Tout les programmes Fichier:BOB.zip