RobotTondeuse : Différence entre versions
(→{{Bleu|Code général}}) |
|||
Ligne 479 : | Ligne 479 : | ||
− | VL53L1X sensor; | + | VL53L1X sensor; // Déclaration des sensors |
VL53L1X sensor2; | VL53L1X sensor2; | ||
VL53L1X sensor3; | VL53L1X sensor3; | ||
Ligne 486 : | Ligne 486 : | ||
int status; | int status; | ||
− | void setupLaser(); | + | void setupLaser(); // Déclaration des variable et des fonctions |
void setupLame(); | void setupLame(); | ||
void runLame(); | void runLame(); | ||
Ligne 503 : | Ligne 503 : | ||
setupLaser(); | setupLaser(); | ||
setupMoteurs(); | setupMoteurs(); | ||
− | + | ||
} | } | ||
Ligne 509 : | Ligne 509 : | ||
void loop(){ | void loop(){ | ||
− | + | runLame(); // fonction qui fait tourner le moteur de coupe | |
+ | // Affiche les différentes valeurs des capteurs | ||
Serial.print(" Distance 1 : "); | Serial.print(" Distance 1 : "); | ||
Serial.print(sensor.read()); | Serial.print(sensor.read()); | ||
Ligne 517 : | Ligne 518 : | ||
Serial.print(" - Distance 3 : "); | Serial.print(" - Distance 3 : "); | ||
Serial.print(sensor3.read()); | Serial.print(sensor3.read()); | ||
− | |||
Serial.print("\tEtat: "); | Serial.print("\tEtat: "); | ||
Serial.print(VL53L1X::rangeStatusToString(sensor.ranging_data.range_status)); | Serial.print(VL53L1X::rangeStatusToString(sensor.ranging_data.range_status)); | ||
Ligne 640 : | Ligne 640 : | ||
void setupLaser(){ | void setupLaser(){ | ||
− | pinMode(2, OUTPUT); | + | pinMode(2, OUTPUT); // On déclare les pins en sortie |
pinMode(3, OUTPUT); | pinMode(3, OUTPUT); | ||
pinMode(4, OUTPUT); | pinMode(4, OUTPUT); | ||
− | digitalWrite(2, LOW); | + | digitalWrite(2, LOW); // On met les sorties à l'état bas pour définir leurs adresses |
digitalWrite(3, LOW); | digitalWrite(3, LOW); | ||
digitalWrite(4, LOW); | digitalWrite(4, LOW); | ||
Ligne 653 : | Ligne 653 : | ||
Wire.beginTransmission(0x29); | Wire.beginTransmission(0x29); | ||
− | digitalWrite(3,HIGH); | + | digitalWrite(3,HIGH); // On met la sortie à l'état haut pour définir l'adresse de la sortie |
delay(150); | delay(150); | ||
− | sensor2.init(); | + | sensor2.init(); // On initialise le capteur |
Serial.println("01"); | Serial.println("01"); | ||
delay(100); | delay(100); | ||
− | sensor2.setAddress(0x33); | + | sensor2.setAddress(0x33); // On définit l'adresse du capteur |
Serial.println("02"); | Serial.println("02"); | ||
− | digitalWrite(4,HIGH); | + | digitalWrite(4,HIGH); // On met la sortie à l'état haut pour définir l'adresse de la sortie |
delay(150); | delay(150); | ||
− | sensor3.init(); | + | sensor3.init(); // On initialise le capteur |
Serial.println("03"); | Serial.println("03"); | ||
delay(100); | delay(100); | ||
− | sensor3.setAddress(0x35); | + | sensor3.setAddress(0x35); // On définit l'adresse du capteur |
Serial.println("04"); | Serial.println("04"); | ||
− | digitalWrite(2, HIGH); | + | digitalWrite(2, HIGH); // On n'a pas besoin de définir l'adresse du premier capteur, il garde son adresse de base |
delay(150); | delay(150); | ||
Serial.println("09"); | Serial.println("09"); |
Version du 15 mars 2021 à 17:10
Sommaire
[masquer]Présentation du projet
Objectif
Le projet consiste à fabriquer un robot tondeuse autonome capable d'éviter les obstacles grâce à des capteurs de distance et faire tourner un moteur brushless désignant la lame de la tondeuse.
Tâches individuelles
- Arel RAKO :
* capteur VL53L1X - programmé et connecté le capteur
* moteur brushless - programmé, connecté, fait les soudures nécessaires pour le connecteur de la batterie
* interrupteur - programmé en PULL UP pour faire tourner le moteur à l'état haut et l'arrêter à l'état bas
* plaque pastillée - toutes les soudures de la plaque, qui seront détaillés un peu plus tard
- Anthony JEAN-BAPTISTE-ADOLPHE :
* gyroscope MPU9250 - programmé et connecté le gyroscope
* capteur VL53L1X - programmation pour faire fonctionner 3 capteurs en même temps avec le gyroscope aussi
* code général - programmation
* différentes soudures
Découpage fonctionnel
Travail à réaliser
Objectif
L'objectif sera bien évidemment de terminer le projet de sorte qu'il réponde au cahier des charges décrit précédemment.
Pour ce faire, il conviendra de :
- rechercher des solutions à partir du schéma fonctionnel fourni ( schéma électronique et composants )
- dimensionner les composants utilisés
- tester les différents blocs fonctionnels
- programmer les composants
- valider le fonctionnement
Choix des composants
- 3 capteurs de distance VL53L1X
- 1 arduino uno
- 1 shield avec drivers
- 1 gyroscope MPU9250
- 1 batterie EMMERICH 12.8V
- 1 abaisseur de tension LM2596
- 1 moteur brushless
- 1 interrupteur
- 2 moteurs MDP (moteurs des roues)
Explications
- les capteurs de distance
* connectés en I2C via les ports SCL et SDA de l'arduino * alimentés en 5V via le pin VIN, ils possèdent un régulateur qui transforme le 5V en 2.8V (sortie VDD) * placés au côté gauche, droit et au milieu du robot pour avoir un plus grand champ de vision * détails de fonctionnement:
- si le capteur à gauche détecte un obstacle à moins de 20cm, le robot tourne à droite - si le capteur à droite détecte un obstacle à moins de 20cm, le robot tourne à gauche - si le capteur du milieu détecte un obstacle à moins de 20cm, le robot s'arrête et fait demi-tour vers la droite
- le gyroscope
* connecté en I2C comme les capteurs de distance * alimenté en 5V comme les capteurs de distance * prend la valeur de 100 angles et fait leur moyenne pour plus de précision
- moteur brushless
* connecté à un pin PWM de l'arduino pour pouvoir le piloter * alimenté directement via la batterie car nécessite 12V * sur le rotor on a mis du scotch pour modéliser la lame
- interrupteur
* connecté en PULL-UP à un pin quelconque de l'arduino * alimenté en 5V * s'il envoie 1, le moteur brushless commence à tourner, s'il envoie 0, le moteur s'arrête Attention! Prévoir 5 secondes pour l'arrêt du moteur
- abaisseur de tension
* transforme le 12V de la batterie en 5V pour alimenter les capteurs
- plaque pastillée
* constituée de 6 parties: - le 12V pour alimenter l'arduino, on y branche aussi le connecteur AMASS du moteur brushless et l'abaisseur de tension - le 5V où sont connectés tous les capteurs, le gyroscope et l'interrupteur - SCL où est connecté le pin SCL des capteurs et du gyroscope au pin SCL de l'arduino - SDA où est connecté le pin SDA des capteurs et du gyroscope au pin SDA de l'arduino - masse du 12V - masse du 5V
- moteurs MDP
Programmation
Code des différents composants
- programmation des capteurs de distance
-Bibliothèque pour le capteur de distance : Bibliothèque
Code distance
- programmation moteur brushless avec l'interrupteur
Code brushless
- programmation gyroscope
- Bibliothèque du MPU9250 : Bibliothèque
Code gyro
- programmation moteurs MDP
Code moteurs MDP
Code général
Code_tondeuse
Vidéos
Vidéo de démonstration du robot qui roule
Vidéo du moteur de coupe