Bonjour! Avant de tout l'explication on aimerait vous présenter et de vous montrer notre drone :
Et voila la bête! 51×51 cm / 1.5kg / 1km de porté
Antonyo Musabini - Sylvestre Rai - Thomas Villa
Notre drone à le but de porter une camera pour filmer des événements comme concert, match etc. Donc le stabilité est l'un des majeurs buts pour nous. On a fabriqué une drone en utilisant des composant de PMCLab et donc pour assembler des différents niveaux, on a crée des shields pour Arduino et pour RasberryPI.
Les pieds de notre drone à été imprimé par l'imprimante 3D du Lab. Ils ont été imprimé en quatre morceaux et puis on les a collé avec du superglue.
Les partie blancs sont les imprimés. On était obligé de les imprimer pour pouvoir placer correctement la protection (visible sur la premier photo). Les pieds qu'on a imprimé sont mesurés spécialement pour nos moteurs (hauteur, places des vises, cage de moteur etc).
On a utilisé une batterie LiPo avec 3 cellules pour notre drone. Ce type de batteries sont très utiles pour donner une courant forte rapidement. Puisque le courant de sortie est extrêmement fort sur cette batterie il faut faire attention pour utiliser des fils qui peuvent porter une courant élevé.
On a fait une cage de batterie en bas de drone avec les métaux de recup du Lab. (visible sur les photos globales)
On a utilisé 4 moteurs de type brushless. C'est à dire moteur sans balai. La protection externe du moteur tourne également avec lui. Du coup pour fixer le moteur on met 4 vis au niveau de ses pieds. Ce type de moteur est plus performant par rapport aux autres moteurs car on ne perde pas d’énergie au niveau de frottement avec le balai. Nos moteurs sont idéales pour une drone de 1.5 kg car ils ne sont pas lourdes et et 4 moteurs de ce type peut monter le drone facilement.
Test de puissance d'une seule moteur : https://www.dropbox.com/s/yjwgceklcoky121/20140303_203333.mp4
Pour contrôler ces moteurs on aura besoin des micro-contrôleurs qui s’appellent des ESC. Enfaîte les ESC ne sont que des MOSFETS moderne. L'ESC est alimenté avec la batterie LiPo (11,11 V) et il reçoit une PWM depuis le contrôleur de vol pour pouvoir contrôler la vitesse des moteurs. Entre temps il aliment le contrôleur de vol avec 5V. On doit faire attention pour choisir une ESC coherent avec les moteurs. Dans notre cas les deux sont 18A donc il n'y a pas de souci par contre si l'esc était plus fort que le moteur, alors le moteur risque de brûler.
Kit Communication Radio APC220
Ce kit de communication utile les RF pour établir la connexion. Il nous apporte 1 km de porté et il a une simple utilisation car il est branché sur les ports séries. Les deux antennes sont émetteurs et récepteurs en même temps et ils ont une buffer intégré. Grace à cette buffer les donnés reçus ne sont pas perdus dans un cas ou l'antenne reçoit plusieurs données.
Notre shield de RaspberryPi + Le Kit RF :
On a préféré de fabriquer notre propre manette. Donc on a acheté une RasberryPi une Arduino UNO. Une manette de Free est branché sur le RasberryPi en USB (n'importe quelle manette de même type marche). Une antenne de la module RF est branché sur la port série de la RasberryPI et une autre antenne est branché sur la port série de l'Arduino pour créer la connexion. La langage informatique Python a le bibliothèque pygame.joystick qui reconnait les manettes et qui crée une interruption à chaque action comme appuyer une bouton, lâcher une bouton, l’état des fléchés et il retourne des valeurs analogiques pour les axis. On a codé en Python une programme qui envoie une et une seul caractère de la table ASCII sur la port série, chaque fois qu'une interruption se généré. Par exemple l'intervalle 33-43 (de la table ASCII) est d'appuyer une dès 10 boutons. 33 est l’appuyer le 0 ieme bouton, 34 est appuyer la première, 35 est appuyer la deuxième, ainsi de suite. L'intervalle 44-54 est relâcher une bouton avec la même idée. Pour les axis on a crée 40 graduation par chaque axis. C'est à dire quand on pousse l'axis 1 on envoie la lettre A (par exemple), si on pousse encore on envoie B, C, D… et pour chaque axis on a 40 valeurs possibles. A la réception l'Arduino reçoit une char et le traduit en int. Puis pas rapport à la valeur reçu il met à jour ses variables globales de l’état des boutons. Par exemple il a reçu '$'. Cette symbole est 36 en int. 36 fait partie de l'intervalle 33-44 donc l'action est forcement l'appuie d'une bouton. 36-33=3 . Donc le 3 ieme bouton est appuié.
Vous pouvez voit la totalité de notre protocole en détail sur la lien suivante : https://www.dropbox.com/sc/dxjq0ligixfk7l5/6iZMNTIFDp
Les tout premières tests de connexion : https://www.dropbox.com/s/gpgmqb0vujlr9ee/20140122_163018.mp4
Notre shield pour placer l'accéléromètre et le gyroscope :
On a commencé à écrire notre propre fonctions pour la stabilité par contre suite aux raisons de temps on a été obligé d'utiliser une contrôleur de vol. On avait l'idée de crée 8 zones imaginaires autour du drone et déterminer la vecteur de correction grâce aux différents zones. On avait des résultats frustrants.
On a monté une Arduino Uno sur des vises longues et on a placé le shield de stabilité sur cette carte :
On a utilisé une Arduino UNO pour recevoir les donnés depuis l'antenne RF et de les traiter. L'accéléromètre et le gyroscope étaient branché sur cette micro-contrôleur pour traiter les données. On a choisit la version UNO car il nous suffit ses pins et il a une seul port série (donc pas besoin de Arduino Mega). En plus les connexion des fils sur les pins est facile (contrairement à Arduino Nano).
Finalement à cause de contrainte de temps on était obligé d'orianté vers le MultiWii au lieu de notre accéléromètre et de gyroscope, donc on a du lui faire une shield également.
Donc finalement l'Arduino UNO reçoit les commandes en RF et il les traduits à notre contrôleur de vol avec des PWMs. Car le controleur de vol a besoin aux 4 PWMs nommés Throttle (la hauteur de drone), Roll (l'inclinaison vers les cotés de drone), Pitch (l'inclinaison vers le devant de drone) et Yaw (divers). Ces 4 PWMs sont récupérables sur la biliotheque servo.h de l'Arduino (pour avoir la même fréquence). Servo.h nous donne une PWMs de 20ms. Le contrôleur de vol interprété les PWM en regardant son rapport cyclique. 5% correspond au valeur minium et 10% le maximum.
Finalement on a commencé à régler le contrôleur de vol. Ce dernière à 3 variables nommés P(Proportionnelle), I(Intégrale) et D(Dérivée) qui gèrent la stabilité du vol. Donc on à monté cette banc d'essai pour changer les valeurs de P,I et D et pour tester le contrôle du drone.
Cette site explique comment régler les PIDs effacement. Par contre pour pouvoir régler comme lui, il faut acheter une kit bluetooth. Nous en n'avais pas une donc on devrait brancher à l'ordinateur avec une câble à chaque fois qu'on voulait changer les valeurs.
Le banc d'essai : https://www.dropbox.com/sc/u55i13wmn0ongvf/lNayX8lSKL
d'autres vidéos à venir.
On devrait peut être commencé dès le début avec une contrôleur de vol (à cause de limitations du temps) L'absence d'une batterie d’échange nous bloquait Les pieds imprimés étaient trop sensibles du coup ils se cassent facilement On devrait prévoir du matériel d’échange (des hélices, des moteurs) On devrait prévoir une kit bluetooth pour régler les PIDs
On remercie à tout l’équipe de PMCLab pour organiser cette compétition.