Salut à tous !
Je viens perturber la monarchie d'Oracid sur cette catégorie avec la présentation de notre (nous sommes un groupe de 5) projet de terminale SI.
Donc l'objet de ce projet est de créer un robot stabilisateur de caméra pour la prise de vue au sol. On a donc séparer le projet en deux parties, le système de déplacement et celui de stabilisation.
Mon rôle dans ce projet est de choisir l'alimentation, programmer le système de déplacement et étudier les signaux de sortie des capteurs. Mais si vous avez des questions ou autres sur les autres parties du projet n'hésitez pas.
Pour la base mécanique du système de déplacement nous avons choisi d'utiliser des LEGO combiné à un EVShield (un Shield Arduino) pour le contrôle des 4 moteurs et des différents capteurs (de distance et d'inclinaison). La documentation du shield est disponible ici.
Nous avons jusqu'en avril pour finir nos tâches mais voici un aperçu du système de déplacement (qui nécessite encore quelques modifications) :
Après avoir choisi une batterie lipo, je suis passé à la programmation des éléments du robot à commencer par les moteurs :
Test d'un moteur sur la Bank A port M1 :
// Bibliothèques : #include <Wire.h> #include <EVShield.h> EVShield evshield(0x34, 0x36); //Adresses i²c des deux cotés du shield. void setup() { Serial.begin(9600); //Communication Série pour debugging evshield.init( SH_HardwareI2C ); //Initialisation de l'EV Shield evshield.bank_a.motorReset(); evshield.bank_b.motorReset(); Serial.println("Appuyez sur le bouton GO pour commencer"); evshield.waitForButtonPress(BTN_GO); //Attente de commande utilisateur evshield.ledSetRGB(200,100,100); } void loop() { evshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Forward, 100); //Remplacer Forward par Reverse pour modifier le sens de rotation delay(1000); evshield.bank_a.motorStop(SH_Motor_Both, SH_Next_Action_Brake); Serial.println("Appuyez sur le bouton GO pour commencer"); evshield.waitForButtonPress(BTN_GO); //Attente de commande utilisateur }
Test avec 4 moteurs :
// Bibliothèques : #include <Wire.h> #include <EVShield.h> EVShield evshield(0x34, 0x36); //Adresses i²c des deux cotés du shield. void setup() { Serial.begin(9600); //Communication Série pour debugging evshield.init( SH_HardwareI2C ); //Initialisation de l'EV Shield evshield.bank_a.motorReset(); evshield.bank_b.motorReset(); Serial.println("Appuyez sur le bouton GO pour commencer"); evshield.waitForButtonPress(BTN_GO); //Attente de commande utilisateur evshield.ledSetRGB(200,100,100); } void loop() { evshield.bank_a.motorRunUnlimited(SH_Motor_Both, SH_Direction_Reverse, 100); //Démarre les moteurs à 100% evshield.bank_b.motorRunUnlimited(SH_Motor_Both, SH_Direction_Forward, 100); //Démarre les moteurs à 100% delay(1000); evshield.bank_a.motorStop(SH_Motor_Both, SH_Next_Action_Float); evshield.bank_b.motorStop(SH_Motor_Both, SH_Next_Action_Float); Serial.println("Appuyez sur le bouton GO pour commencer"); evshield.waitForButtonPress(BTN_GO); //Attente de commande utilisateur }
L'ensemble des programmes que je posterai sur ce fil seront aussi disponible ici.
Au programme des prochaines séances : mise en place du capteur de distance et d'inclinaison.
Voilà tout pour le moment, j'essayerai de mettre à jour régulièrement ce fil
PS: J'ai hésité à placer ce sujet dans LEGO vu que tout les programmes seront en Arduino, mais je pense que ça peut tout de même donner une idée de ce que l'on peut faire avec l'EVShield