Table des matières:

Drone Arduino avec GPS : 16 étapes
Drone Arduino avec GPS : 16 étapes

Vidéo: Drone Arduino avec GPS : 16 étapes

Vidéo: Drone Arduino avec GPS : 16 étapes
Vidéo: How to make cheap Drone using Arduino Uno, MPU 6050 & Flysky i6 TX/RX 2024, Juillet
Anonim
Drone Arduino avec GPS
Drone Arduino avec GPS

Nous avons entrepris de construire un drone quadricoptère à vue à la première personne (FPV) contrôlé par Arduino et stabilisé, avec fonction de retour à la maison, de coordination et de maintien du GPS. Nous avons supposé naïvement que combiner les programmes Arduino existants et le câblage d'un quadricoptère 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 créer un quadricoptère FPV compatible GPS, sans aucune des fonctionnalités supplémentaires.

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 sur la voie d'un quadcopter plus autonome. Si vous vous sentez à l'aise de creuser profondément dans Arduino ou si vous avez déjà beaucoup d'expérience avec Arduino et que vous souhaitez utiliser notre point d'arrêt comme point de départ pour votre propre exploration, alors ce 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. De plus, espérons-le, vous repartirez avec un drone.

La configuration est la suivante:

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

Les pièces avec un astérisque ne sont nécessaires que pour le projet inachevé d'un quadricoptère plus autonome.

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

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

Les étapes requises uniquement 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 basé sur 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 de quadcopter (le cadre exact n'a probablement pas d'importance) (15 $)

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

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

4) Une carte de distribution électrique (avec connexion XT-60) (20 $)

5) Une batterie LiPo 3s, 3000-5000mAh avec connexion XT-60 (3000mAh correspond à environ 20 minutes 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 autre GPS nécessitera un câblage différent) (45 $)

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

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

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

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

15) Chargeur d'équilibre de batterie LiPo (et adaptateur 12 V CC, non inclus) (20 $)

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

17) Ruban adhésif

18) Gaine thermoré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 facultatifs pour la transmission vidéo FPV (vue à la première personne) en temps réel:

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

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

3) 500mAh, 3s (11,1V) batterie LiPo (7 $) (nous avons utilisé 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 pas besoin de soudure).

4) 2 batteries LiPo 1000mAh 2s (7,4V), ou similaire (5$). Le nombre de mAh n'est pas 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. Le mieux est probablement d'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 batteries avec des prises 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 prise de la batterie qui alimente le moniteur. Voici où trouver les adaptateurs XT-60

* = uniquement pour les projets plus avancés

** = uniquement pour un projet plus basique

Frais:

Si vous partez 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

Assembler le cadre
Assembler le cadre
Assembler le cadre
Assembler le cadre
Assembler le cadre
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 fournies et assemblez le cadre comme indiqué, à l'aide d'une clé Allen ou d'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 image), afin que le drone ait un devant et un dos 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: Monter les moteurs et connecter les Escs

Monter les moteurs et connecter les Escs
Monter les moteurs et connecter les Escs
Monter les moteurs et connecter les Escs
Monter les moteurs et connecter les Escs
Monter les moteurs et connecter les Escs
Monter les moteurs et connecter les Escs
Monter les moteurs et connecter les Escs
Monter les moteurs et connecter les Escs

Maintenant que le cadre est assemblé, sortez 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 montures auxquelles nous sommes associé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 de côté pour réduire le poids.

Une fois les moteurs vissés en place, collez le tableau de distribution électrique (PDB) sur le dessus de la plaque supérieure du cadre du quadricoptère. Assurez-vous de l'orienter de telle sorte que le connecteur de la batterie pointe entre des bras de couleurs différentes (parallèles à l'une des parties longues de la plaque inférieure), comme sur l'image ci-dessus.

Vous devriez également avoir quatre cônes d'hélice avec des filetages femelles. Mettez-les de côté pour le moment.

Maintenant, sortez 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 du PDB et le noir dans le négatif. Notez que si vous utilisez un autre PDB, cette étape peut nécessiter une soudure. Connectez maintenant chacun des trois fils sortant de chaque moteur. À ce stade, peu importe quel fil ESC vous connectez avec quel fil moteur (tant que vous connectez tous les fils d'un ESC avec le même moteur !) Vous corrigerez toute polarité inversée plus tard. Ce n'est pas dangereux si les fils sont inversés; il en résulte seulement que le moteur tourne à l'envers.

Étape 4: Préparer Arduino et Shield

Préparer Arduino et Shield
Préparer Arduino et Shield
Préparer Arduino et Shield
Préparer Arduino et Shield

Une note avant de commencer

Tout d'abord, vous pouvez choisir de souder tous les fils ensemble directement. Cependant, nous avons trouvé qu'il était inestimable d'utiliser des en-têtes de broche 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 bouclier GPS, dans les rangées de broches parallèles aux broches pré-soudées, comme indiqué dans l'image ci-dessus. Soudez également les embases empilables sur la rangée de broches étiquetées 3V, CD, … RX. Utilisez un coupe-fil pour couper l'excès de longueur sur les broches dépassant du bas. Placez des en-têtes mâles avec des sommets courbés dans tous ces en-têtes empilables. C'est à ce que vous allez souder 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 la mise en place du bouclier.

Placez du ruban électrique sur le bas de l'Arduino, couvrant toutes les soudures des broches exposées, pour éviter tout court-circuit car l'Arduino repose sur le PDB.

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

Câbler ensemble les composants et placer la batterie (Uno)
Câbler ensemble les composants et placer la batterie (Uno)
Câbler ensemble les composants et placer la batterie (Uno)
Câbler ensemble les composants et placer la batterie (Uno)
Câbler ensemble les composants et placer la batterie (Uno)
Câbler ensemble les composants et placer la batterie (Uno)
Câbler ensemble les composants et placer la batterie (Uno)
Câbler ensemble les composants et placer la batterie (Uno)

Le schéma ci-dessus est presque identique à celui réalisé par 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, ce 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 en position « 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à câblé les ESC aux moteurs et au PDB, donc cette partie du schéma est terminée.

-En outre, notez que les données GPS (fils jaunes) sortent des broches 0 et 1 sur l'Arduino (pas les broches Tx et Rx séparées sur le GPS). C'est parce que configuré sur "Direct Write" (voir ci-dessous), le GPS sort directement vers les ports série matériels de l'uno (broches 0 et 1). Ceci est le 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 vont dans la rangée supérieure, tandis que Vin et Gnd sont respectivement sur les deuxième et troisième rangées (et sur la deuxième colonne de broches la plus éloignée).

-Pour faire le câblage de l'émetteur-récepteur HC-12, du récepteur RC et de la sortie 5V du 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 un tube thermorétractable autour du souder. Vous pouvez choisir de faire l'un ou l'autre des composants, mais il est recommandé de souder directement sur le gyroscope car cela économise de l'espace, ce qui facilite le montage de la petite pièce. L'utilisation d'en-têtes demande un peu plus de travail au départ, mais offre plus de flexibilité. Souder les fils directement est une connexion plus sécurisée à long terme, mais cela 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 disposez toujours d'une flexibilité décente, peu importe ce que vous faites. Surtout, assurez-vous que les fils de données GPS dans les 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 attacher 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 en toile, du ruban électrique et des attaches zippées. Nous vous recommandons fortement de passer plus de temps à concevoir des structures de montage stables si vous envisagez ce projet à plus long terme. Cela dit, si vous voulez juste faire un prototype rapide, alors n'hésitez pas à suivre notre processus. Cependant, assurez-vous que le gyroscope est monté solidement. C'est la seule façon dont l'Arduino sait ce que fait le quadricoptère, donc s'il bouge en vol, vous aurez des problèmes.

Avec tout câblé et en place, prenez votre batterie LiPo et glissez-la entre les plaques supérieure et inférieure du cadre. Assurez-vous que son connecteur pointe dans la même direction que le connecteur du PDB, et qu'ils peuvent effectivement 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 recharger. Cependant, vous devez vous assurer de bien scotcher la batterie, car si la batterie bouge pendant le vol, cela pourrait sérieusement perturber l'équilibre du drone. Ne connectez PAS encore la batterie au PDB.

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

Câblez ensemble les composants et placez la batterie (Mega)
Câblez ensemble les composants et placez la batterie (Mega)
Câblez ensemble les composants et placez la batterie (Mega)
Câblez ensemble les composants et placez la batterie (Mega)
Câblez ensemble les composants et placez la batterie (Mega)
Câblez ensemble les composants et placez la batterie (Mega)

Le schéma ci-dessus a été préparé à l'aide du logiciel Fritzing, ce 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.

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

-Câblez maintenant tous les composants selon le schéma ci-dessus (à l'exception de la batterie !)

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

-Les cavaliers de Pin 8 à Rx et Pin 7 à Tx sont là car (contrairement au Uno, pour lequel ce blindage a été réalisé), le méga manque d'un 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 d'autres 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 vont dans la rangée supérieure, tandis que Vin et Gnd sont respectivement sur les deuxième et troisième rangées (et sur la deuxième colonne de broches la plus éloignée).

-Pour faire le câblage de l'émetteur-récepteur HC-12, du récepteur RC et de la sortie 5V du 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 un tube thermorétractable autour de la soudure. Vous pouvez choisir de faire l'un ou l'autre des composants. L'utilisation d'en-têtes demande un peu plus de travail au départ, mais offre plus de flexibilité. Souder les fils directement est une connexion plus sécurisée à long terme, mais cela 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 disposez toujours d'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 attacher 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 en toile, du ruban électrique et des attaches zippées. Nous vous recommandons fortement de passer plus de temps à concevoir des structures de montage stables si vous envisagez ce 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 monté solidement. C'est la seule façon dont l'Arduino sait ce que fait le quadricoptère, donc s'il bouge en vol, vous aurez des problèmes.

Avec tout câblé et en place, prenez votre batterie LiPo et glissez-la entre les plaques supérieure et inférieure du cadre. Assurez-vous que son connecteur pointe dans la même direction que le connecteur du PDB et qu'ils peuvent effectivement 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 recharger. Cependant, vous devez vous assurer de bien scotcher la batterie, car si la batterie bouge pendant le vol, cela pourrait sérieusement perturber l'équilibre du drone. Ne connectez PAS encore la batterie au PDB.

Étape 7: lier le récepteur

Lier le récepteur
Lier le récepteur
Lier le récepteur
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 liaison fournie avec le récepteur RC et placez-la sur les broches BIND du récepteur. Alternativement, raccourcissez les broches du haut et du bas dans la colonne BIND comme indiqué sur la photo ci-dessus. Un voyant rouge doit clignoter rapidement sur le récepteur. Prenez maintenant la manette et appuyez sur le bouton à l'arrière lorsqu'elle est éteinte, comme indiqué ci-dessus. Avec le bouton enfoncé, allumez le contrôleur. Maintenant, le voyant clignotant sur le récepteur doit s'allumer en continu. Le récepteur est lié. Retirez le câble de liaison. Si vous utilisiez une alimentation différente, reconnectez le récepteur au 5V de l'Arduino.

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

(Facultatif) Câblez ensemble et montez le système de caméra FPV
(Facultatif) Câblez ensemble et montez le système de caméra FPV
(Facultatif) Câblez ensemble et montez le système de caméra FPV
(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 sur le 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 les 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 de votre émetteur.

Connectez votre petite Lipo 500mAh à l'émetteur. La broche la plus à droite (juste en dessous de l'antenne) est la masse (V_) de la batterie, la prochaine broche à gauche est V+. Ils viennent les trois fils qui vont à la caméra. Votre caméra doit être livrée avec une prise trois-en-un qui s'insère dans l'émetteur. Assurez-vous d'avoir le fil de données jaune au milieu. Si vous avez utilisé les batteries que nous avons reliées avec des fiches prévues à cet effet, 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, puis 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 pouvez pas, assurez-vous que le récepteur et l'émetteur sont tous les deux allumés (vous devriez voir des chiffres 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 cadre.

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

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

Configurer la réception des données GPS
Configurer la réception des données GPS
Configurer la réception des données GPS
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 comme indiqué si elle est branchée sur un ordinateur. Téléchargez le code émetteur-récepteur fourni, ouvrez votre moniteur série à 9600 bauds.

Si vous utilisez la configuration la 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 le commutateur sur le bouclier est sur « Direct Write »).

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

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

Ce code est identique à celui utilisé par Joop Brokking dans son tutoriel sur le quadcopter Arduino, et il mérite tout le mérite de 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 joint. Allumez votre émetteur RC. Ouvrez votre moniteur série à 57600 bauds et suivez les instructions.

Erreurs courantes:

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

Si le code saute plusieurs étapes à la fois, vérifiez que votre commutateur GPS est sur « Ecriture directe ».

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 c'est le cas, 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.

Étape 11: Exécuter le code de configuration (Mega)

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

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

Étape 12: Calibrer 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 tard, dans la description de la construction du quadcopter plus avancé.

Téléchargez le code d'étalonnage ESC 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 sur les extrêmes d'accélération, de roulis, de tangage et de 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 la manette des gaz à fond sur le contrôleur et connectez la batterie. Les ESC doivent faire cycler différents bips (mais cela peut être différent en fonction de l'ESC et de son firmware). Poussez la manette des gaz à fond. Les ESC doivent émettre des bips plus faibles, 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. Entrez 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 dues au déséquilibre des accessoires. Vous pouvez essayer d'y remédier en ajoutant de petites quantités de scotch d'un côté ou de l'autre des accessoires. Nous avons découvert que nous pouvions obtenir un bon vol sans cette étape, mais peut-être un peu moins efficacement et plus fort que si nous avions équilibré les accessoires.

Étape 13: Calibrer les ESC (Mega)

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

Téléchargez le code d'étalonnage ESC 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 sur les extrêmes d'accélération, de roulis, de tangage et de 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 la manette des gaz à fond sur le contrôleur et connectez la batterie. Les ESC doivent émettre trois bips faibles suivis d'un bip aigu (mais cela peut être différent selon l'ESC et son firmware). Poussez la manette des gaz à fond. Débranchez la batterie.

Les modifications que nous avons apportées à ce code consistaient à passer de l'utilisation de PORTD pour les broches ESC à l'utilisation de PORTA, puis à la modification des 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 endroit sur le Mega que dans le Uno. Nous n'avons pas pu tester complètement ce code car nous travaillions avec un ancien Mega hors marque que la boutique de notre école avait. 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 des problèmes avec l'utilisation de l'opérateur ou égal (|=) 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 moins possible le code de Brooking. Nous pensons que ce code est très proche du fonctionnel, mais votre kilométrage peut varier.

Étape 14: Envolez-vous !! (Unon)

Et encore une fois, ce troisième morceau de code de génie est l'œuvre de Joop Brokking. Les modifications apportées à 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 cadre et tous les composants attachés, scotché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 de réception vidéo et à votre moniteur. 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 les gaz vers le bas et lacet vers la gauche pour armer le quadricoptère, puis montez doucement les gaz pour planer. Commencez par voler au ras du sol et sur des surfaces molles comme l'herbe jusqu'à ce que vous soyez à l'aise.

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

Étape 15: Envolez-vous !! (Méga)

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 au code du contrôleur de vol des modifications similaires à celles que vous avez apportées à la dernière étape. Si notre code d'étalonnage ESC pour le Mega fonctionne comme par magie sans aucune autre modification, alors vous n'aurez que quelques choses à faire sur le code de 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 changer DDRD en DDRA. Ensuite, vous devrez modifier tous les octets écrits 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 s'il vous plaît laissez-nous savoir si vous volez avec succès en utilisant 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 amateurs d'Arduino et d'électronique. Par conséquent, nous avons pensé inclure la saga de tout ce que nous avons rencontré en essayant d'activer le code GPS de Joop Brokking. Parce que le code de Brokking est tellement complet et beaucoup plus compliqué que tout ce que nous écrivions, nous avons décidé de le modifier le moins possible. Nous avons essayé de faire en sorte que le bouclier GPS envoie des données à l'Arduino, puis que l'Arduino nous envoie 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 modifié 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 nous sommes rapidement heurtés à une erreur. Le contrôleur de vol de Brokking s'appuie 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 bibliothèque Wire fait référence à la bibliothèque Software Serial, nous avons rencontré une erreur où le code ne se compilerait 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èques rendait impossible l'utilisation de ces morceaux de code ensemble. Alors, nous sommes allés chercher des alternatives.

Ce que nous avons compris, c'est que la seule combinaison de bibliothèques qui ne nous a pas causé d'erreur consistait à basculer la bibliothèque GPS standard sur neoGPS, puis à utiliser AltSoftSerial au lieu de Software Serial. Cette combinaison a fonctionné, 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 a plusieurs ports série matériels, ce qui signifie que nous pouvions contourner ce conflit de bibliothèque en n'ayant pas du tout 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 le Uno qui ont des interruptions sont différentes sur le Mega. De même, les broches SDA et SCL se trouvaient à des emplacements différents. Après avoir étudié les schémas de broches pour chaque type d'Arduino et avoir référencé les registres appelés dans le code, nous avons pu exécuter le code de configuration de vol avec seulement 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 en avons brièvement parlé auparavant, mais le code utilise essentiellement des registres de broches pour réguler les broches utilisées pour contrôler les ESC. Cela rend le code plus difficile à lire qu'en utilisant la fonction pinMode() standard; Cependant, cela 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 des broches avaient une sortie d'environ 4,90 V et d'autres nous donnaient plus de 4,95 V. Apparemment, les ESC que nous avons sont un peu capricieux, et donc ils ne fonctionneraient correctement que lorsque nous utilisions les broches avec la tension la plus élevée. Cela nous a ensuite obligés à modifier 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 tout ce que nous avons obtenu 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 intrigués par cela car nous n'avions changé aucun câblage. 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 le 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 que nous avons 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 de 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 dites-nous si vous allez plus loin que nous n'avons pu !

Conseillé: