Binome2017-7

De Wiki de bureau d'études PeiP
Révision datée du 3 mai 2018 à 18:04 par Nekhlas- (discussion | contributions) (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 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 : Dim.png

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,...)


PCB12.png


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

PCBfinal.png 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


GravurePCB.png

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)

Web1 0.png

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.

RaspiCam.jpgInterface.png

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.

Soudage.jpg


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 :

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();

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é)

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 / 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é.


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:

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 !!!


Bobfinal.jpg 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 puis 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