Binome2017-2 : Différence entre versions
(→Séance du 19 janvier:) |
(→Séance du 25 janvier:) |
||
Ligne 91 : | Ligne 91 : | ||
− | + | #include <Servo.h> | |
Servo myServo; unsigned long previousRotation = 0; unsigned long TimeRotaion = 5000 | Servo myServo; unsigned long previousRotation = 0; unsigned long TimeRotaion = 5000 |
Version du 25 janvier 2018 à 17:39
Copyright Valérianne et Théo
Sommaire
Séance du 15 janvier:
Découverte des objectifs et mise en place du cahier des charges. Nous souhaitons réaliser un robot "prédateur". Nous allons concevoir un robot simple car nous voulons nous concentrer sur la partie électronique et informatique. Nous allons réaliser notre circuit imprimé en nous basant sur celui qui nous est donné en exemple. Enfin, nous allons programmer le robot pour qu'il puisse se déplacer de manière autonome. Cependant, lorsqu'il captera un signal wifi avec son raspberry pi, on pourra le commander depuis notre téléphone.
Matériel nécessaire pour la partie mécanique: - Châssis à partir de plexiglas - Roues motorisées - Roue libre (bille) - Servo-moteurs - Boîtier Piles
✓
✓
✓
✓
✓
✓
✓
Composants électroniques nécessaires:
- Carte électronique - Micro-contrôleur ATMega328p - Adaptateur FTDI (USB-UART) et port USB - Contrôleur-moteur - 3 Capteurs infrarouge - Capteur Ultrasons - Régulateur 5V - Quartz 16 MHz - 2 capacités 10microF - 6 capacités 100nF - 1 capacité 1mF - 1 résistance 1kOhm - 1 résistance 220Ohm - 1 Diode
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
Matériel informatique:
- Carte Raspberry Pi 3 - Caméra - Batterie Raspberry
Séance du 16 janvier:
Nous avons réfléchi sur l'aspect esthétique de notre futur robot. (Image ?) Je trompe mon copain. Nous avons analysé le circuit imprimé fournit par les professeurs sur le logiciel Fritzing pour ne garder que les éléments dont nous avions besoin. Nous avons donc enlevé le détecteur de ligne, un servo moteur. Nous avons passé du temps pour rétablir les connections compromises par la suppression de ces éléments. C'est très interessant de travailler sur le circuit imprimé, et de voir les différentes vues proposées, qui permettent de bien se rendre compte de la forme de chaque fonction, et comment elles sont reliées entre elles.
Séance du 18 janvier:
Nous avons travaillé sur le routage de notre circuit imprimé pour qu'il soit le plus efficace possible. Nous avons modifié le placement de la capacité 4, qui était trop loin de l'alimentation. Elle ne remplissait pas sa fonction, qui est de lisser la tension dans les câbles. Notre circuit est prêt à être imprimé. Nous avons ensuite commencé le code de notre robot. La difficulté est de savoir dans quelle direction tourner en fonction de là où est la proie et de trouver la manière la plus efficace de tourner dans le but de rattraper la proie. Nous avons 3 capteurs infrarouge sur notre robot. La meilleure solution pour nous est de réduire le champs de balayage des capteurs pour avoir une plus grande information de l'emplacement de la proie. Par exemple, si le capteur de droite et du milieu détecte une présence, alors on fera tourner le robot vers la droite, à l'aide du servo-moteur qui va incliner l'axe des roues. S'il y a uniquement le capteur de droite qui détecte une proie, alors on fera tourner le robot en faisant tourner la roue gauche plus vite que l'autre.
Séance du 19 janvier:
Nous avons commencé le squelette du code. Cependant, nous avons beaucoup d'interrogations sur la façon dont va réagir notre robot. La difficulté est que nous ne pouvons pas tester notre code sur le robot pour le moment et que beaucoup de parties vont rester en suspens. Nous avons choisi d'utiliser la fonction milis(). Cette fonction permet d'effectuer plusieurs actions en même temps, ici tourner et repérer une proie, contrairement à la fonction delay().
Séance du 22 janvier:
Nous nous sommes familiarisé avec le logiciel Onshape. Nous ne sommes pas habitué à raisonner de manière mécanique (???). Il a été difficile de construire notre dôme en 3d que nous allons mettre à l'arrière du châssis. Il abritera le circuit imprimé et les piles.
Séance du 25 janvier:
Nous avons conçu la base de notre châssis. Nous avons choisi de faire des encoches pour fixer le dôme sur ce châssis. Il reste maintenant à réfléchir à l'emplacement des trous pour fixer le circuit imprimé et les autres éléments (moteurs, servo moteur, sonar et capteurs infrarouge) au châssis. Nous avons ensuite continué notre code en définissant les différentes fonctions principales de notre robot. Par exemple, avancer tout droit, tourner, détecter une cible...
Notre code:
- include <Servo.h>
Servo myServo; unsigned long previousRotation = 0; unsigned long TimeRotaion = 5000
void setup() {
pinMode(1, OUTPUT); // moteur gauche pinMode(2, OUTPUT); // moteur droit pinMode(3, OUTPUT); // Servo pinMode(4, OUTPUT); // Infra pinMode(5, OUTPUT); // Infra pinMode(6, OUTPUT); // Infra pinMode(7, OUTPUT); // Sonar }
int ToutDroit() {
digitalWrite(1,HIGH); digitalWrite(2,HIGH); //delay
}
int StopRotation() {
digitalWrite(1,LOW); digitalWrite(2,LOW); //delay
}
int 90D()
{
digitalWrite(1,HIGH); digitalWrite(2,LOW); // delay
}
int 90G() {
digitalWrite(1,LOW); digitalWrite(2,HIGH); //delay
}
int 30D() {
AngleDir = analogRead(A4); digitalWrite(3,AngleDir-30); // ou +30 en fonction du servo //delay
}
int 30G() {
AngleDir = analogRead(A4); digitalWrite(3,AngleDir+30); // ou - 30 en focntion du servo //delay
}
int Rotation () {
digitalWrite(1,HIGH); digitalWrite(2,LOW); }
void loop() {
Obstacle = analogRead(A0); Cible1= analogRead(A1); Cible2= analogRead(A2); Cible3= analogRead(A3);
Rotation ()
if (Cible1 || Cible2 || Cible3) // Cible détectée ? { StopRotation Poursuite { if (Cible1) { 90D(); } else if (Cible1 and Cible2) { 30D(); } else if (Cible2) { ToutDroit(); } else if (Cible2 and Cible3) { 30G; } else if (Cible3) { 90G; } else if (Cible1 and Cible2 and Cible3) { ToutDroit(); } } } if (millis() - previousRotation >= TimeRotation) { previousRotation = millis(); StopRotation ; toutdroit() ; // Avance 3 secondes }
}
if (DistanceObstacle < 10) { 90G(); } // put your main code here, to run repeatedly:
}