Drone Arduino avec GPS

Nous avons décidé de construire un drone quadricoptère à vue à la première personne (FPV) contrôlé par Arduino et stabilisé, GPS avec retour à la maison, aller à la coordination et fonctions de maintien GPS. Nous avons naïvement supposé que la combinaison des programmes Arduino et du câblage existants pour un quadcopter sans GPS avec ceux d'un système de transmission GPS serait relativement simple et que nous pourrions rapidement passer à des tâches de programmation plus complexes. Cependant, une quantité surprenante a dû changer afin de mailler ces deux projets, et nous avons donc fini par fabriquer un quadcopter FPV compatible GPS, sans aucune fonctionnalité supplémentaire.

Nous avons inclus des instructions sur la façon de reproduire notre produit si vous êtes satisfait du quadcopter plus limité.

Nous avons également inclus toutes les étapes que nous avons franchies vers un quadcopter plus autonome. Si vous vous sentez à l'aise de creuser profondément dans Arduino ou avez déjà beaucoup d'expérience Arduino et que vous souhaitez prendre notre point d'arrêt comme un point de départ pour votre propre exploration, cet Instructable est également pour vous.

C'est un excellent projet pour apprendre quelque chose sur la construction et le codage pour Arduino, quelle que soit votre expérience. Vous pourrez également, espérons-le, repartir avec un drone.

La configuration est la suivante:

Dans la liste des matériaux, des pièces sans astérisque sont requises pour les deux objectifs.

Les pièces avec un astérisque sont nécessaires uniquement pour le projet inachevé d'un quadcopter plus autonome.

Les pièces avec deux astérisques ne sont nécessaires que pour le quadcopter plus limité.

Les étapes communes aux deux projets n'ont pas de marqueur après le titre

Les étapes uniquement requises pour le quadcopter non autonome plus limité ont "(Uno)" après le titre.

Les étapes requises uniquement pour le quadcopter autonome en cours ont "(Mega)" après le titre.

Pour construire le quad basé sur Uno, suivez les étapes dans l'ordre, en sautant toutes les étapes avec "(Mega)" après le titre.

Pour travailler sur le quad Mega, suivez les étapes dans l'ordre, en sautant toutes les étapes avec "(Uno)" après le titre.

Étape 1: Rassemblez les matériaux

Composants :

1) Un cadre quadcopter (le cadre exact n'a probablement pas d'importance) (15 $)

2) Quatre moteurs brushless 2830, 900 kV (ou similaire) et quatre packs d'accessoires de montage (4x 6 $ + 4x 4 $ = 40 $ au total)

3) Quatre ESC UBEC 20A (4x 10 $ = 40 $ au total)

4) Une carte de distribution d'alimentation (avec connexion XT-60) (20 $)

5) Une batterie LiPo 3s, 3000-5000mAh avec connexion XT-60 (3000mAh correspond à environ 20 min de temps de vol) (25 $)

6) Beaucoup d'hélices (celles-ci cassent beaucoup) (10 $)

7) Un Arduino Mega 2560 * (40 $)

8) Un Arduino Uno R3 (20 $)

9) Un deuxième Arduino Uno R3 ** (20 $)

10) Un bouclier GPS Arduino Ultimate (vous n'avez pas besoin du bouclier, mais l'utilisation d'un GPS différent nécessitera un câblage différent) (45 $)

11) Deux émetteurs-récepteurs sans fil HC-12 (2x 5 $ = 10 $)

12) Un gyroscope / accéléromètre MPU- 6050, 6DOF (degré de liberté) (5 $)

13) Un émetteur / récepteur Turnigy 9x 2, 4 GHz, 9 canaux (70 $)

14) En-têtes Arduino femelles (empilables) (20 $)

15) Chargeur LiPo Battery Balance (et adaptateur 12V DC, non, inclus) (20 $)

17) Cordon adaptateur USB A vers B mâle à mâle (5 $)

17) Ruban adhésif

18) Gaine rétractable

Équipement:

1) Un fer à souder

2) Soudure

3) Époxy plastique

4) Plus léger

5) Pince à dénuder

6) Un jeu de clés Allen

Composants en option pour la transmission vidéo FPV (vue à la première personne) en temps réel:

1) Une petite caméra FPV (cela renvoie à celle que nous avons utilisée, assez bon marché et de mauvaise qualité, vous pouvez en remplacer une meilleure) (20 $)

2) paire émetteur / récepteur vidéo 5, 6 GHz (modèles 832 utilisés) (30 $)

3) Batterie LiPo 500mAh, 3s (11.1V) (7 $) (nous l'avons utilisée avec une fiche banane, mais nous vous recommandons rétrospectivement d'utiliser la batterie liée, car elle a un connecteur compatible avec l'émetteur TS832, et donc ne fonctionne pas '' t nécessitent une soudure).

4) 2 batteries LiPo 1000 mAh 2 s (7, 4 V) ou similaire (5 $). Nombre de mAh non critique tant qu'il est supérieur à 1000 mAh environ. La même déclaration que ci-dessus s'applique au type de prise pour l'une des deux batteries. L'autre sera utilisé pour alimenter le moniteur, vous devrez donc souder quoi qu'il arrive. Il vaut probablement mieux en obtenir un avec une prise XT-60 pour cela (c'est ce que nous avons fait). Un lien pour ce type est ici: LiPo 1000mAh 2s (7.4V) avec prise XT-60

5) Moniteur LCD (en option) (15 $). Vous pouvez également utiliser un adaptateur AV-USB et un logiciel de copie de DVD afin de visualiser directement sur un ordinateur portable. Cela donne également la possibilité d'enregistrer des vidéos et des photos, plutôt que de simplement les visualiser en temps réel.

6) Si vous avez acheté des piles avec des fiches différentes de celles liées, vous aurez peut-être besoin d'adaptateurs appropriés. Quoi qu'il en soit, procurez-vous un adaptateur correspondant à la fiche de la batterie qui alimente le moniteur. Voici où obtenir des adaptateurs XT-60

* = uniquement pour les projets plus avancés

** = uniquement pour un projet plus basique

Frais:

Si on part de zéro (mais avec un fer à souder, etc ...), pas de système FPV: ~ 370 $

Si vous avez déjà un émetteur / récepteur RC, un chargeur de batterie LiPo et une batterie LiPo: ~ 260 $

Coût du système FPV: 80 $

Étape 2: assembler le cadre

Cette étape est assez simple, surtout si vous utilisez le même cadre préfabriqué que nous avons utilisé. Utilisez simplement les vis incluses et assemblez le cadre comme indiqué, en utilisant une clé Allen ou un tournevis approprié pour votre cadre. Assurez-vous que les bras de la même couleur sont adjacents les uns aux autres (comme sur cette photo), de sorte que le drone ait un avant et un arrière clairs. De plus, assurez-vous que la partie longue de la plaque inférieure dépasse entre les bras de couleur opposée. Cela devient important plus tard.

Étape 3: Montez les moteurs et connectez les Escs

Maintenant que le cadre est assemblé, retirez les quatre moteurs et les quatre accessoires de montage. Vous pouvez utiliser soit les vis incluses dans les kits de montage, soit les vis restantes du cadre du quadricoptère pour visser les moteurs et les supports en place. Si vous achetez les supports auxquels nous sommes liés, vous recevrez deux composants supplémentaires, illustrés ci-dessus. Nous avons eu de bonnes performances du moteur sans ces pièces, nous les avons donc laissées pour réduire le poids.

Une fois les moteurs vissés en place, époxy la carte de distribution de puissance (PDB) en place sur le dessus de la plaque supérieure du châssis du quadcopter. Assurez-vous de l'orienter de telle sorte que le connecteur de la batterie pointe entre les bras de couleurs différentes (parallèlement à l'une des longues parties de la plaque inférieure), comme dans l'image ci-dessus.

Vous devriez également avoir quatre cônes d'hélice avec filetage femelle. Mettez-les de côté pour l'instant.

Sortez maintenant vos ESC. Un côté aura deux fils qui en sortiront, un rouge et un noir. Pour chacun des quatre ESC, insérez le fil rouge dans le connecteur positif de la PDB et le noir dans le négatif. Notez que si vous utilisez une autre PDB, cette étape peut nécessiter une soudure. Connectez maintenant chacun des trois fils sortant de chaque moteur. À ce stade, peu importe le fil ESC auquel vous vous connectez avec quel fil de moteur (tant que vous connectez tous les fils d'un ESC avec le même moteur!) Vous corrigerez ultérieurement toute polarité vers l'arrière. Ce n'est pas dangereux si les fils sont inversés; cela ne fait que faire tourner le moteur en arrière.

Étape 4: préparer Arduino et Shield

Une note avant de commencer

Tout d'abord, vous pouvez choisir de souder directement tous les fils ensemble. Cependant, nous avons trouvé qu'il était inestimable d'utiliser des en-têtes de broches car ils offrent une grande flexibilité pour le dépannage et l'adaptation du projet. Ce qui suit est une description de ce que nous avons fait (et recommandons aux autres de le faire).

Préparer Arduino et bouclier

Sortez votre Arduino Mega (ou un Uno si vous faites le quad non autonome), le bouclier GPS et les en-têtes empilables. Soudez l'extrémité mâle des embases empilables en place sur le blindage GPS, dans les rangées de broches parallèles aux broches pré-soudées, comme indiqué dans l'image ci-dessus. Soudez également en en-têtes empilables sur la rangée de broches étiquetées 3V, CD, ... RX. Utilisez un coupe-fil pour couper la longueur excessive sur les broches qui dépassent le bas. Placez des en-têtes mâles avec des sommets pliés dans tous ces en-têtes empilables. C'est à cela que vous souderez les fils pour le reste des composants.

Fixez le bouclier GPS en haut, en vous assurant que les broches correspondent à celles de l'Arduino (Mega ou Uno). Notez que si vous utilisez le Mega, une grande partie de l'Arduino sera toujours exposée après avoir mis le bouclier en place.

Placez du ruban électrique au bas de l'Arduino, couvrant tous les soudures de broches exposées, pour éviter tout court-circuit pendant que l'Arduino repose sur la PDB.

Étape 5: Câblez ensemble les composants et placez la batterie (Uno)

Le schéma ci-dessus est presque identique à celui de Joop Brooking car nous avons fortement basé notre conception sur la sienne.

* Notez que ce schéma suppose un bouclier GPS correctement monté, et donc le GPS n'apparaît pas dans ce schéma.

Le schéma ci-dessus a été préparé à l'aide du logiciel Fritzing, qui est fortement recommandé, en particulier pour les schémas impliquant Arduino. Nous avons principalement utilisé des pièces génériques qui peuvent être modifiées de manière flexible, car nos pièces n'étaient généralement pas dans la bibliothèque de pièces incluse de Fritzing.

-Assurez-vous que le commutateur sur le bouclier GPS est réglé sur "Direct Write".

-Câblez maintenant tous les composants selon le schéma ci-dessus (à l'exception de la batterie!) (Remarque importante sur les fils de données GPS ci-dessous).

-Notez que vous avez déjà connecté les ESC aux moteurs et à la PDB, donc cette partie du schéma est terminée.

-En outre, notez que les données GPS (fils jaunes) proviennent des broches 0 et 1 de l'Arduino (et non des broches Tx et Rx distinctes du GPS). En effet, configuré sur "Direct Write" (voir ci-dessous), le GPS sort directement sur les ports série matériels de l'uno (broches 0 et 1). Ceci est plus clairement montré sur la deuxième image ci-dessus du câblage complet.

-Lors du câblage du récepteur RC, reportez-vous à l'image ci-dessus. Observez que les fils de données entrent dans la ligne supérieure, tandis que Vin et Gnd se trouvent respectivement sur les deuxième et troisième lignes (et sur la deuxième à la plus éloignée colonne de broches).

-Pour faire le câblage de l'émetteur-récepteur HC-12, du récepteur RC et du 5Vout de la PDB au Vin de l'Arduino, nous avons utilisé des embases empilables, tandis que pour le gyroscope, nous avons soudé les fils directement à la carte et en utilisant des tubes thermorétractables autour du souder. Vous pouvez choisir de faire l'une ou l'autre pour l'un des composants, mais la soudure directe sur le gyroscope est recommandée car elle économise de l'espace, ce qui facilite le montage de la petite pièce. L'utilisation des en-têtes est un peu plus de travail à l'avance, mais offre plus de flexibilité. Le soudage direct des fils est une connexion plus sûre à long terme, mais signifie que l'utilisation de ce composant sur un autre projet est plus difficile. Notez que si vous avez utilisé des en-têtes sur le bouclier GPS, vous avez toujours une flexibilité décente, peu importe ce que vous faites. Surtout, assurez-vous que les fils de données GPS des broches 0 et 1 du GPS sont faciles à retirer et à remplacer.

À la fin de notre projet, nous n'avons pas été en mesure de concevoir une bonne méthode pour fixer tous nos composants au cadre. En raison de la pression du temps de notre classe, nos solutions tournaient généralement autour du ruban mousse double face, du ruban adhésif, du ruban électrique et des attaches zippées. Nous vous recommandons fortement de consacrer plus de temps à la conception de structures de montage stables si vous prévoyez que ce sera un projet à plus long terme. Cela dit, si vous voulez juste faire un prototype rapide, n'hésitez pas à suivre notre processus. Cependant, assurez-vous que le gyroscope est bien fixé. C'est la seule façon pour l'Arduino de savoir ce que fait le quadcopter, donc s'il se déplace en vol, vous aurez des problèmes.

Avec tout câblé et en place, prenez votre batterie LiPo et faites-la glisser entre les plaques supérieure et inférieure du cadre. Assurez-vous que son connecteur pointe dans la même direction que le connecteur de la PDB et qu'ils peuvent en fait se connecter. Nous avons utilisé du ruban adhésif pour maintenir la batterie en place (le ruban velcro fonctionne également, mais est plus ennuyeux que le ruban adhésif). Le ruban adhésif fonctionne bien car on peut facilement remplacer la batterie ou la retirer pour la charger. Cependant, vous devez être sûr de bien coller la batterie, car si la batterie se déplace pendant le vol, cela pourrait sérieusement perturber l'équilibre du drone. Ne connectez PAS encore la batterie à la PDB.

Étape 6: Câblez ensemble les composants et placez la batterie (Mega)

Le schéma ci-dessus a été préparé à l'aide du logiciel Fritzing, qui est fortement recommandé, en particulier pour les schémas impliquant Arduino. Nous avons principalement utilisé des pièces génériques, car nos pièces n'étaient généralement pas dans la bibliothèque de pièces incluse de Fritzing.

-Notez que ce schéma suppose un bouclier GPS correctement monté, et donc le GPS n'apparaît pas dans ce schéma.

-Faites basculer l'interrupteur de votre Mega 2560 sur "Soft Serial".

-Câblez maintenant tous les composants selon le schéma ci-dessus (sauf la batterie!)

-Notez que vous avez déjà connecté les ESC aux moteurs et à la PDB, donc cette partie du schéma est terminée.

-Les câbles volants de la broche 8 à Rx et de la broche 7 à Tx sont là parce que (contrairement à l'Uno, pour lequel ce blindage a été fabriqué), le méga n'a pas de récepteur-émetteur asynchrone universel (UART) sur les broches 7 et 8, et donc nous devons utiliser des broches série matérielles. Il y a plus de raisons pour lesquelles nous avons besoin de broches série matérielles, discutées plus loin.

-Lors du câblage du récepteur RC, reportez-vous à l'image ci-dessus. Observez que les fils de données entrent dans la ligne supérieure, tandis que Vin et Gnd se trouvent respectivement sur les deuxième et troisième lignes (et sur la deuxième à la plus éloignée colonne de broches).

-Pour faire le câblage de l'émetteur-récepteur HC-12, du récepteur RC et du 5Vout de la PDB au Vin de l'Arduino, nous avons utilisé des embases empilables, tandis que pour le gyroscope, nous avons soudé les fils directement et en utilisant des tubes thermorétractables autour de la soudure. Vous pouvez choisir de faire l'une ou l'autre pour n'importe lequel des composants. L'utilisation des en-têtes est un peu plus de travail à l'avance, mais offre plus de flexibilité. Le soudage direct des fils est une connexion plus sûre à long terme, mais signifie que l'utilisation de ce composant sur un autre projet est plus difficile. Notez que si vous avez utilisé des en-têtes sur le bouclier GPS, vous avez toujours une flexibilité décente, peu importe ce que vous faites.

À la fin de notre projet, nous n'avons pas été en mesure de concevoir une bonne méthode pour fixer tous nos composants au cadre. En raison de la pression du temps de notre classe, nos solutions tournaient généralement autour du ruban mousse double face, du ruban adhésif, du ruban électrique et des attaches zippées. Nous vous recommandons fortement de consacrer plus de temps à la conception de structures de montage stables si vous prévoyez que ce sera un projet à plus long terme. Cela dit, si vous voulez juste faire un prototype rapide, n'hésitez pas à suivre notre processus. Cependant, assurez-vous que le gyroscope est bien fixé. C'est la seule façon pour l'Arduino de savoir ce que fait le quadcopter, donc s'il se déplace en vol, vous aurez des problèmes.

Avec tout câblé et en place, prenez votre batterie LiPo et faites-la glisser entre les plaques supérieure et inférieure du cadre. Assurez-vous que son connecteur pointe dans la même direction que le connecteur de la PDB et qu'ils peuvent en fait se connecter. Nous avons utilisé du ruban adhésif pour maintenir la batterie en place (le ruban velcro fonctionne également, mais est plus ennuyeux que le ruban adhésif). Le ruban adhésif fonctionne bien car on peut facilement remplacer la batterie ou la retirer pour la charger. Cependant, vous devez être sûr de bien coller la batterie, car si la batterie se déplace pendant le vol, cela pourrait sérieusement perturber l'équilibre du drone. Ne connectez PAS encore la batterie à la PDB.

Étape 7: Lier le récepteur

Prenez le récepteur RC et connectez-le temporairement à une alimentation 5V (soit en alimentant l'Arduino avec une alimentation USB ou 9V, soit avec une alimentation séparée. Ne connectez pas encore le LiPo à l'Arduino). Prenez la broche de fixation fournie avec le récepteur RC et placez-la sur les broches BIND du récepteur. Alternativement, court-circuitez les broches du haut et du bas dans la colonne BIND comme indiqué sur la photo ci-dessus. Une lumière rouge devrait clignoter rapidement sur le récepteur. Maintenant, prenez le contrôleur et appuyez sur le bouton à l'arrière lorsqu'il est éteint, comme indiqué ci-dessus. Avec le bouton enfoncé, allumez le contrôleur. Maintenant, la lumière clignotante sur le récepteur doit rester fixe. Le récepteur est lié. Retirez le câble de liaison. Si vous utilisiez une alimentation différente, reconnectez le récepteur au 5 V de l'Arduino.

Étape 8: (Facultatif) Câblez ensemble et montez le système de caméra FPV.

Tout d'abord, soudez l'adaptateur XT-60 avec les fils d'alimentation et de terre du moniteur. Ceux-ci peuvent varier d'un moniteur à l'autre, mais l'alimentation sera presque toujours rouge, le sol presque toujours noir. Insérez maintenant l'adaptateur avec des fils soudés dans votre LiPo 1000mAh avec la prise XT-60. Le moniteur doit s'allumer avec (généralement) un fond bleu. C'est l'étape la plus difficile!

Vissez maintenant les antennes de votre récepteur et émetteur.

Connectez votre petit Lipo 500mAh à l'émetteur. La broche la plus à droite (juste en dessous de l'antenne) est la masse (V_) de la batterie, la broche suivante à gauche est V +. Ils viennent les trois fils qui vont à la caméra. Votre appareil photo doit être fourni avec une fiche trois en un qui s’insère dans l’émetteur. Assurez-vous que le fil de données jaune se trouve au milieu. Si vous avez utilisé les batteries que nous avons liées à des bouchons destinés à cela, cette étape ne devrait nécessiter aucune soudure.

Enfin, branchez votre autre batterie de 1000 mAh avec le fil de sortie CC fourni avec votre récepteur, et branchez-le à son tour dans le port d'entrée CC de votre récepteur. Enfin, connectez l'extrémité noire du câble AVin fourni avec votre récepteur au port AVin de votre récepteur, et l'autre extrémité (jaune, femelle) à l'extrémité mâle jaune du câble AVin de votre moniteur.

À ce stade, vous devriez pouvoir voir une vue de la caméra sur le moniteur. Si vous ne le pouvez pas, assurez-vous que le récepteur et l'émetteur sont tous les deux allumés (vous devriez voir les numéros sur leurs petits écrans) et qu'ils sont sur le même canal (nous avons utilisé le canal 11 pour les deux et avons eu un bon succès). De plus, vous devrez peut-être changer le canal sur le moniteur.

Montez les composants sur le châssis.

Une fois la configuration opérationnelle, débranchez les batteries jusqu'à ce que vous soyez prêt à voler.

Étape 9: Configurer la réception des données GPS

Câblez votre deuxième Arduino avec votre deuxième émetteur-récepteur HC-12 comme indiqué dans le schéma ci-dessus, en gardant à l'esprit que la configuration ne sera alimentée que si elle est connectée à un ordinateur. Téléchargez le code de l'émetteur-récepteur fourni, ouvrez votre moniteur série à 9600 bauds.

Si vous utilisez la configuration plus basique, vous devriez commencer à recevoir des phrases GPS si votre bouclier GPS est alimenté et correctement câblé à l'autre émetteur-récepteur HC-12 (et si l'interrupteur sur le bouclier est sur "Direct Write").

Avec le Mega, assurez-vous que l'interrupteur est sur "Soft Serial".

Pièces jointes

  • Transceiver_Uno.ino Télécharger

Étape 10: exécuter le code de configuration (Uno)

Ce code est identique à celui utilisé par Joop Brokking dans son tutoriel sur les quadcoptères Arduino, et il mérite tout le crédit pour son écriture.

Avec la batterie déconnectée, utilisez le cordon USB pour connecter votre ordinateur à l'Arduino et téléchargez le code de configuration ci-joint. Allumez votre émetteur RC. Ouvrez votre moniteur série à 57600 bauds et suivez les invites.

Erreurs courantes:

Si le code ne parvient pas à télécharger, assurez-vous que les broches 0 et 1 sont débranchées sur le bouclier UNO / GPS. Il s'agit du même port matériel que celui utilisé par l'appareil pour communiquer avec l'ordinateur, il doit donc être libre.

Si le code saute à travers un tas d'étapes à la fois, vérifiez que votre commutateur GPS est sur "Direct Write".

Si aucun récepteur n'est détecté, assurez-vous qu'il y a une lumière rouge fixe (mais faible) sur votre récepteur lorsque l'émetteur est allumé. Si oui, vérifiez le câblage.

Si aucun gyroscope n'est détecté, cela peut être dû au fait que le gyroscope est endommagé ou si vous avez un type de gyroscope différent de celui sur lequel le code est conçu pour écrire.

Pièces jointes

  • Télécharger YMFC-AL_setup.ino

Étape 11: exécuter le code de configuration (méga)

Ce code est identique à celui utilisé par Joop Brokking dans son tutoriel sur les quadcoptères Arduino, et il mérite tout le crédit pour son écriture. Nous avons simplement adapté le câblage du Mega afin que les entrées du récepteur correspondent aux broches d'interruption de changement de broche correctes.

Avec la batterie déconnectée, utilisez le cordon USB pour connecter votre ordinateur à l'Arduino et téléchargez le code de configuration ci-joint. Ouvrez votre moniteur série à 57600 bauds et suivez les invites.

Pièces jointes

  • Télécharger YMFC-AL_setup.ino

Étape 12: étalonner les ESC (Uno)

Encore une fois, ce code est identique au code de Joop Brokking. Toutes les modifications ont été apportées dans le but d'intégrer le GPS et l'Arduino et peuvent être trouvées plus loin, dans la description de la construction du quadcopter le plus avancé.

Téléchargez le code d'étalonnage ESC ci-joint. Sur le moniteur série, écrivez la lettre «r» et appuyez sur Retour. Vous devriez commencer à voir les valeurs du contrôleur RC en temps réel répertoriées. Vérifiez qu'ils varient de 1000 à 2000 aux extrêmes de l'accélérateur, du roulis, du tangage et du lacet. Ensuite, écrivez «a» et appuyez sur retour. Lâchez l'étalonnage du gyroscope, puis vérifiez que le gyroscope enregistre le mouvement du quad. Maintenant, débranchez l'arduino de l'ordinateur, poussez complètement l'accélérateur sur le contrôleur et connectez la batterie. Les contrôleurs doivent faire défiler différents bips (mais cela peut être différent selon le contrôleur et son micrologiciel). Poussez les gaz à fond. Les ESC devraient émettre des bips inférieurs, puis se taire. Débranchez la batterie.

En option, vous pouvez à ce stade utiliser les cônes fournis avec vos packs d'accessoires de montage de moteur pour visser fermement les hélices. Saisissez ensuite les chiffres 1 à 4 sur le moniteur série pour alimenter les moteurs 1 à 4 respectivement, à la puissance la plus faible. Le programme enregistrera la quantité de secousses due au déséquilibre des accessoires. Vous pouvez essayer de remédier à cela en ajoutant de petites quantités de scotch d'un côté ou de l'autre des accessoires. Nous avons constaté que nous pouvions obtenir un vol parfait sans cette étape, mais peut-être un peu moins efficacement et plus fort que si nous avions équilibré les hélices.

Pièces jointes

  • YMFC-AL_esc_calibrate.ino Télécharger

Étape 13: étalonner les ESC (méga)

Ce code est très similaire au code de Brokking, mais nous l'avons adapté (et le câblage correspondant) pour fonctionner avec le Mega.

Téléchargez le code d'étalonnage ESC ci-joint. Sur le moniteur série, écrivez la lettre «r» et appuyez sur Retour. Vous devriez commencer à voir les valeurs du contrôleur RC en temps réel répertoriées. Vérifiez qu'ils varient de 1000 à 2000 aux extrêmes de l'accélérateur, du roulis, du tangage et du lacet.

Ensuite, écrivez «a» et appuyez sur retour. Lâchez l'étalonnage du gyroscope, puis vérifiez que le gyroscope enregistre le mouvement du quad.

Maintenant, débranchez l'arduino de l'ordinateur, poussez complètement l'accélérateur sur le contrôleur et connectez la batterie. Les contrôleurs doivent émettre trois bips faibles suivis d'un signal sonore élevé (mais cela peut être différent selon l'ESC et son micrologiciel). Poussez les gaz à fond. Débranchez la batterie.

Les modifications que nous avons apportées à ce code consistaient à passer de PORTD pour les broches ESC à PORTA, puis de modifier les octets écrits sur ces ports afin d'activer les broches appropriées, comme indiqué dans le schéma de câblage. Ce changement est dû au fait que les broches du registre PORTD ne sont pas au même emplacement sur le Mega que dans l'Uno. Nous n'avons pas pu tester complètement ce code car nous travaillions avec une ancienne Mega hors marque que possédait la boutique de notre école. Cela signifiait que pour une raison quelconque, toutes les broches du registre PORTA n'étaient pas en mesure d'activer correctement les ESC. Nous avons également eu du mal à utiliser l'opérateur or equals (| =) dans certains de nos codes de test. Nous ne savons pas pourquoi cela causait des problèmes lors de l'écriture des octets pour définir les tensions des broches ESC, nous avons donc modifié le code de Brooking le moins possible. Nous pensons que ce code est très proche de la fonctionnalité, mais votre kilométrage peut varier.

Pièces jointes

  • YMFC-AL_esc_calibrateMEGA.ino Télécharger

Étape 14: Get Airborne !! (Uno)

Et encore une fois, ce troisième morceau de code de génie est l'œuvre de Joop Brokking. Les modifications de ces trois morceaux de code ne sont présentes que dans notre tentative d'intégration des données GPS dans l'Arduino.

Avec vos hélices fermement montées sur le châssis et tous les composants attachés, collés ou autrement montés, chargez le code du contrôleur de vol sur votre Arduino, puis débranchez l'Arduino de votre ordinateur.

Sortez votre quadcopter, branchez la batterie et allumez votre émetteur. En option, apportez un ordinateur portable connecté à votre configuration de réception GPS ainsi qu'à votre configuration et moniteur de réception vidéo. Chargez le code de l'émetteur-récepteur sur votre Arduino terrestre, ouvrez votre moniteur série à 9600 bauds et regardez les données GPS arriver.

Vous êtes maintenant prêt à voler. Poussez l'accélérateur vers le bas et faites un lacet vers la gauche pour armer le quadcopter, puis amenez doucement l'accélérateur en vol stationnaire. Commencez par voler bas au sol et sur des surfaces molles comme l'herbe jusqu'à ce que vous deveniez confortable.

Regardez la vidéo intégrée de nous pilotant le drone avec enthousiasme la première fois que nous avons pu faire fonctionner le drone et le GPS simultanément.

Pièces jointes

  • YMFC-AL_Flight_controller.ino Télécharger

Étape 15: Get Airborne !! (Mega)

En raison de notre blocage avec le code d'étalonnage ESC pour le Mega, nous n'avons jamais pu créer de code de contrôleur de vol pour cette carte. Si vous êtes arrivé à ce point, alors j'imagine que vous avez au moins manipulé le code d'étalonnage ESC pour le faire fonctionner pour le Mega. Par conséquent, vous devrez probablement apporter des modifications similaires au code du contrôleur de vol comme vous l'avez fait à la dernière étape. Si notre code d'étalonnage ESC pour le Mega fonctionne comme par magie sans aucune autre modification, il n'y a que quelques choses que vous devrez faire pour le code stock pour le faire fonctionner pour cette étape. Vous devrez d'abord parcourir et remplacer toutes les instances de PORTD par PORTA. N'oubliez pas non plus de remplacer DDRD par DDRA. Ensuite, vous devrez modifier tous les octets en cours d'écriture dans le registre PORTA afin qu'ils activent les broches appropriées. Pour ce faire, utilisez l'octet B11000011 pour définir les broches sur haut et B00111100 pour définir les broches sur bas. Bonne chance, et faites-nous savoir si vous réussissez à voler avec un Mega!

Étape 16: Comment nous sommes arrivés là où nous en sommes actuellement avec le Mega Design

Ce projet a été une immense expérience d'apprentissage pour nous en tant que débutants en Arduino et en électronique. Par conséquent, nous pensions inclure la saga de tout ce que nous avons rencontré en essayant d'activer le code de Joop Brokking par GPS. Parce que le code de Brokking est si complet et beaucoup plus compliqué que tout ce que nous écrivions, nous avons décidé de le modifier le moins possible. Nous avons essayé d'obtenir le bouclier GPS pour envoyer des données à l'Arduino, puis nous avons demandé à l'Arduino de nous envoyer ces informations via l'émetteur-récepteur HC12 sans modifier le code de vol ou le câblage de quelque manière que ce soit. Après avoir examiné les schémas et le câblage de notre Arduino Uno pour déterminer quelles broches étaient disponibles, nous avons changé le code de l'émetteur-récepteur GPS que nous utilisions pour contourner la conception existante. Ensuite, nous l'avons testé pour nous assurer que tout fonctionnait. À ce stade, les choses semblaient prometteuses.

L'étape suivante consistait à intégrer le code que nous venions de modifier et de tester avec le contrôleur de vol de Brokking. Ce n'était pas trop difficile, mais nous avons rapidement rencontré une erreur. Le contrôleur de vol de Brokking repose sur les bibliothèques Arduino Wire et EEPROM tandis que notre code GPS utilisait à la fois la bibliothèque Software Serial et la bibliothèque Arduino GPS. Parce que la Wire Library fait référence à la bibliothèque Software Serial, nous avons rencontré une erreur où le code ne se compilait pas car il y avait "plusieurs définitions pour _vector 3_", quoi que cela signifie. Après avoir regardé sur Google et fouillé dans les bibliothèques, nous avons finalement réalisé que ce conflit de bibliothèque rendait impossible l'utilisation de ces morceaux de code ensemble. Nous sommes donc allés chercher des alternatives.

Ce que nous avons découvert, c'est que la seule combinaison de bibliothèques qui ne nous a pas causé d'erreur était de basculer la bibliothèque GPS standard vers neoGPS, puis d'utiliser AltSoftSerial au lieu de Software Serial. Cette combinaison fonctionnait, cependant, AltSoftSerial ne peut fonctionner qu'avec des broches spécifiques, qui n'étaient pas disponibles dans notre conception. C'est ce qui nous a conduit à utiliser le Mega. Arduino Megas possède plusieurs ports série matériels, ce qui signifie que nous pouvons contourner ce conflit de bibliothèque en n'ayant pas besoin d'ouvrir les ports série logiciels.

Cependant, lorsque nous avons commencé à utiliser le Mega, nous avons rapidement réalisé que la configuration des broches était différente. Les broches sur l'Uno qui ont des interruptions sont différentes sur le Mega. De même, les broches SDA et SCL se trouvaient à différents endroits. Après avoir étudié les diagrammes des broches pour chaque type d'Arduino et réfrencé les registres appelés dans le code, nous avons pu exécuter le code de configuration de vol avec un recâblage minimal et aucun changement de logiciel.

Le code d'étalonnage ESC est l'endroit où nous avons commencé à rencontrer des problèmes. Nous l'avons abordé brièvement avant, mais fondamentalement, le code utilise des registres de broches pour réguler les broches utilisées pour contrôler les ESC. Cela rend le code plus difficile à lire que l'utilisation de la fonction standard pinMode (); cependant, il accélère l'exécution du code et active les broches simultanément. Ceci est important car le code de vol s'exécute dans une boucle soigneusement chronométrée. En raison des différences de broches entre les Arduinos, nous avons décidé d'utiliser le registre de port A sur le Mega. Cependant, lors de nos tests, toutes les broches ne nous ont pas donné la même tension de sortie lorsqu'on leur a dit de fonctionner à un niveau élevé. Certaines broches avaient une sortie d'environ 4, 90 V et d'autres nous ont rapprochés de 4, 95 V. Apparemment, les ESC que nous avons sont quelque peu capricieux, et donc ils ne fonctionneraient correctement que lorsque nous utiliserions les broches avec la tension la plus élevée. Cela nous a alors obligé à changer les octets que nous avons écrits pour enregistrer A afin que nous parlions aux bonnes broches. Il y a plus d'informations à ce sujet dans la section d'étalonnage ESC.

C'est à peu près autant que nous en sommes arrivés dans cette partie du projet. Lorsque nous sommes allés tester ce code d'étalonnage ESC modifié, quelque chose a court-circuité et nous avons perdu la communication avec notre Arduino. Nous avons été extrêmement perplexes parce que nous n'avions changé aucun des câbles. Cela nous a obligés à prendre du recul et à réaliser que nous n'avions que quelques jours pour obtenir un drone volant après des semaines à essayer d'assembler nos pièces incompatibles. C'est pourquoi nous avons fait marche arrière et créé le projet plus simple avec l'Uno. Cependant, nous pensons toujours que notre approche est proche de travailler avec le Mega avec un peu plus de temps.

Notre objectif est que cette explication des obstacles rencontrés vous soit utile si vous travaillez sur la modification du code de Brokking. Nous n'avons également jamais eu la chance d'essayer de coder des fonctionnalités de contrôle autonomes basées sur le GPS. C'est quelque chose que vous devrez comprendre après avoir créé un drone fonctionnel avec un Mega. Cependant, d'après certaines recherches préliminaires de Google, il semble que la mise en œuvre d'un filtre de Kalman soit le moyen le plus stable et le plus précis pour déterminer la position en vol. Nous vous suggérons de rechercher un peu comment cet algorithme optimise les estimations d'état. En dehors de cela, bonne chance et faites-nous savoir si vous allez plus loin que ce que nous avons pu!

Articles Connexes