Binome2017-7 : Différence entre versions

De Wiki de bureau d'études PeiP
(Raspberry PI)
(Séance du 12/03/2018)
Ligne 167 : Ligne 167 :
  
 
[[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]]

Version du 16 mars 2018 à 18:16

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

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'


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.

Soudage.jpg


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 :

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