Table des matières:

Altimètre d'avion RC (compatible avec la télémétrie Spektrum): 7 étapes
Altimètre d'avion RC (compatible avec la télémétrie Spektrum): 7 étapes

Vidéo: Altimètre d'avion RC (compatible avec la télémétrie Spektrum): 7 étapes

Vidéo: Altimètre d'avion RC (compatible avec la télémétrie Spektrum): 7 étapes
Vidéo: New AR637T on TH Flash reloaded. 2024, Juillet
Anonim
Altimètre d'avion RC (compatible avec la télémétrie Spektrum)
Altimètre d'avion RC (compatible avec la télémétrie Spektrum)

J'ai fait cet altimètre pour que le pilote puisse savoir qu'ils sont sous la limite de 400 pieds sur les avions RC aux États-Unis. Mon ami était inquiet car il ne pouvait pas dire avec certitude qu'il était toujours à moins de 400 pieds et voulait l'assurance supplémentaire qu'un capteur avec des données de télémétrie fournirait. Oui, vous pouvez acheter un capteur chez Spektrum, mais vous pouvez construire ce projet pour moins de 20 $ avec des panneaux de dérivation (dont le prix est déjà gonflé). Si vous possédez déjà le programmeur J-link, vous pouvez le construire sur une carte personnalisée pour quelques dollars. Sans oublier qu'une fois que vous avez compris le protocole Xbus, vous pouvez créer n'importe quel autre capteur pris en charge ! Mais je couvrirai juste un altimètre dans ce projet…

Liste des pièces:

  • J'ai utilisé une carte de microcontrôleur Seeeduino XIAO pour ce projet car elle est minuscule, utilise un processeur M0 qui a beaucoup de puissance pour ce projet, a à la fois I2C et SPI prêt à sortir de la boîte, et utilise une logique 3.3v donc aucun changement de niveau n'est obligatoire.

    https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…

  • Pour la détection de la pression atmosphérique, j'ai acheté une carte de dérivation BMP388 d'Adafruit. La carte a à la fois I2C et SPI et peut fonctionner à une logique de 3,3 V ou 5 V.

    https://www.adafruit.com/product/3966

  • Protoboard pour le câblage du circuit
  • Fer à souder/à souder
  • Embases mâles/femelles pour que je puisse facilement détacher le capteur/microcontrôleur.
  • Petit bouton. Je l'utilise pour réinitialiser l'altitude de départ.
  • Résistance de 10k pour un pull-down sur le bouton.
  • Connecteur femelle JST-XH 4 broches à brancher sur le port de télémétrie du récepteur Spektrum
  • Programmeur SEGGER J-Link EDU pour flasher le M0 sans chargeur de démarrage.

    https://www.adafruit.com/product/3571

  • Carte de dérivation Adafruit SWD 10 broches

    www.adafruit.com/product/2743

Fournitures

  • J'ai également imprimé en 3D un petit boîtier pour mon altimètre, mais ce n'est pas nécessaire.
  • Oscilloscope- Si vous n'en avez pas, je vous recommande vivement celui-ci:

    https://store.digilentinc.com/analog-discovery-2-1…

Étape 1: Apprenez le protocole de télémétrie Spektrum

Apprenez le protocole de télémétrie Spektrum
Apprenez le protocole de télémétrie Spektrum
Apprenez le protocole de télémétrie Spektrum
Apprenez le protocole de télémétrie Spektrum
Apprenez le protocole de télémétrie Spektrum
Apprenez le protocole de télémétrie Spektrum

Cela a été principalement fait pour moi par Raymond Domingo. Ils avaient déjà rendu un altimètre compatible avec Spektrum, donc suivre ce code source a vraiment aidé. La fiche technique de télémétrie Spektrum a comblé le reste des lacunes. La mesure des niveaux de données du récepteur a montré que j'aurais besoin d'une logique 3.3v.

Le destinataire envoie l'adresse du périphérique, puis attend une réponse de 16 octets. La fiche technique montre les structures de tous les différents capteurs. Même si la structure ne fait pas 16 octets de long, le récepteur attend 16 octets en retour à chaque fois.

Fiche technique Spektrum:

www.spektrumrc.com/ProdInfo/Files/SPM_Tele…

Le projet de Raymond Domingo:

www.aerobtec.com/download/altisSpektrumInte…

Étape 2: sélectionnez le matériel

Sélectionnez le matériel
Sélectionnez le matériel
Sélectionnez le matériel
Sélectionnez le matériel
Sélectionnez le matériel
Sélectionnez le matériel

J'ai utilisé une carte de dérivation BMP388 d'Adafruit pour la détection de pression. Le breakout fournit des breakouts I2C et SPI, et fonctionne en logique 3,3v ou 5v. Adafruit fait toujours un travail incroyable avec ses planches de dérivation, alors je l'ai acheté. J'ai utilisé une carte DFRobot Gravity BMP388 à la place dans ma construction car ma carte Adafruit était déjà utilisée.

Étant donné que le périphérique hôte I2C utilise une logique 3.3v, j'avais besoin d'un microcontrôleur 3.3v, et je voulais qu'il soit petit. J'allais utiliser un Adafruit Trinket M0, mais ils sont relativement chers et n'ont pas beaucoup de broches cassées. Ensuite, j'ai trouvé la carte Seeeduino XIAO. Il s'agit d'une carte M0 avec à la fois I2C et SPI prête à l'emploi, avec un connecteur USB-C. En plus, c'est vraiment tout petit ! Dans l'ensemble, j'aime vraiment cette carte (même si le cristal de démarrage lent m'a pris une éternité à comprendre).

Spektrum utilise un connecteur mâle à 4 broches de taille JST-XH sur le récepteur pour le port "Xbus" sur lequel nous allons puiser. J'ai utilisé une prise femelle JST-XH à 4 broches sur l'altimètre et cela a parfaitement fonctionné.

Étape 3: Écrire un logiciel

J'ai utilisé l'IDE Arduino pour écrire tout le code. J'ai copié le protocole de télémétrie Spektrum de leur fiche technique et l'ai ajouté à ma bibliothèque Arduino. Comme Adafruit a toujours de belles bibliothèques pour leurs évasions, j'ai utilisé leur bibliothèque BMP3XX pour le capteur BMP388.

Les principaux points à retenir de ma conception sont:

  • Configurez l'I2C pour qu'il se comporte comme un périphérique client et réponde à l'adresse de l'altimètre Spektrum (0x12).
  • Lire le baromètre BMP388 via SPI.
  • Enregistrez les données d'altitude dans deux tampons différents afin qu'une demande I2C du récepteur ne corrompt pas les données, et alternez entre les deux tampons lors de la récupération des données. Cela garantit que les données envoyées au récepteur sont toujours complètes.
  • Utilise un bouton pour remettre l'altimètre à zéro.

Pour plus de détails et l'analyse du code, regardez la vidéo.

Étape 4: câbler le circuit

Câbler le circuit
Câbler le circuit
Câbler le circuit
Câbler le circuit
Câbler le circuit
Câbler le circuit
Câbler le circuit
Câbler le circuit

J'ai utilisé protoboard, mais si vous voulez prendre le temps de concevoir une carte fraisée personnalisée, vous pouvez rendre le circuit beaucoup plus propre.

J'ai connecté le connecteur JST-XH aux broches I2C du XIAO. Étant donné que le récepteur délivre 5 volts au bus de télémétrie, le positif du bus est allé à la broche VCC du XIAO. De cette façon, le régulateur 3.3v embarqué est utilisé pour alimenter le capteur BMP388.

Étape 5: Compiler sans chargeur de démarrage

Compiler sans bootloader
Compiler sans bootloader
Compiler sans bootloader
Compiler sans bootloader
  1. Trouvez votre fichier boards.txt (pour la carte que vous utilisez).

    Dans mon cas, il se trouvait ici: C:\Users\AppData\Local\Arduino15\packages\Seeeduino\hardware\samd\1.7.7\boards.txt

  2. Copiez votre carte et renommez la première clé pour spécifier une version sans chargeur de démarrage. Je viens d'ajouter _nbl au nom d'origine.

    • Ancien: seeed_XIAO_m0
    • Nouveau: seeed_XIAO_m0_nbl
  3. Modifiez la valeur.name:

    • Ancien: seeed_XIAO_m0_nbl.name=Seeeduino XIAO
    • Nouveau: seeed_XIAO_m0_nbl.name=Seeeduino XIAO Pas de chargeur de démarrage
  4. Modifiez l'éditeur de liens pour qu'il clignote sans le chargeur de démarrage en modifiant le script ld du constructeur:

    • Ancien: seeed_XIAO_m0_nbl.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
    • Nouveau: seeed_XIAO_m0_nbl.build.ldscript=linker_scripts/gcc/flash_with out _bootloader.ld
  5. Redémarrez l'IDE Arduino.
  6. Sélectionnez la nouvelle carte "Seeeduino XIAO No Bootloader" dans le menu des cartes.
  7. Sélectionnez "Exporter le binaire compilé"
  8. Une fois compilé, le fichier.bin sera dans votre dossier de projet Arduino.

Étape 6: Flash MCU avec J-Link

Flash MCU avec J-Link
Flash MCU avec J-Link
Flash MCU avec J-Link
Flash MCU avec J-Link
Flash MCU avec J-Link
Flash MCU avec J-Link

Adafruit a un guide fantastique sur la reprogrammation d'un chargeur de démarrage sur un appareil M0/M4. Dans notre cas, nous voulons nous débarrasser du bootloader, mais cela fonctionne de la même manière.

learn.adafruit.com/how-to-program-samd-boo…

Une fois cela fait, vous ne pourrez plus télécharger de code via USB. Vous pouvez suivre le guide ci-dessus pour flasher le chargeur de démarrage sur l'appareil afin de télécharger à nouveau le code via USB comme vous avez pu le faire depuis l'usine.

Le guide Adafruit est très complet, mais voici les étapes de base:

  1. Soudez les cavaliers à l'arrière de la carte XIAO.

    • Le guide Adafruit n'a pas dit que la broche RST de la carte de dérivation 2x5 devait être connectée à la broche de réinitialisation des cartes Adafruit. Mais pour le XIAO, j'avais besoin de me connecter aux quatre pads à l'arrière de la carte.
    • La broche VREF doit être connectée à la broche XIAO 3.3v. Cela indique au débogueur que la logique de l'appareil est 3.3v. Sans cela, si vous sélectionnez la mauvaise option, vous pourriez endommager le microcontrôleur.
  2. Connectez les cavaliers au J-Link.
  3. Allumez la carte XIAO avec un câble USB.
  4. Ouvrez Atmel Studio.
  5. Sélectionnez Outils Programmation de l'appareil
  6. Sélectionnez votre carte M0. Dans ce cas, l'ATSAMD21G18A
  7. Sélectionnez SWD.
  8. Lisez la configuration à partir de la cible.
  9. Si vous utilisez l'EDU J-Link, acceptez les conditions d'utilisation (si vous respectez les conditions d'utilisation).
  10. Vérifiez que la tension lue est correcte dans le coin supérieur droit. Si ce n'est pas du 3.3v, vous pourriez casser votre planche !
  11. Effacez le fusible de protection du démarrage (définissez la taille du chargeur de démarrage sur 0 octet), puis sélectionnez le programme.
  12. Dans la section mémoires, sélectionnez votre fichier.bin ou.hex compilé et sélectionnez programme.

Dépannage:

Lorsque vous lisez la configuration de l'appareil, si vous obtenez une erreur de tension hors plage, assurez-vous que le MCU est branché sur l'alimentation et que la broche J-Link VREF est connectée à 3,3 volts

Étape 7: Recompiler sans le cristal externe

Recompiler sans le cristal externe
Recompiler sans le cristal externe

La carte XIAO a un cristal externe qui met beaucoup de temps à démarrer. Le récepteur Spektrum effectue une découverte de périphérique sur le bus de télémétrie 350 millisecondes après la mise sous tension, nous devons donc dire au compilateur d'utiliser l'oscillateur interne à la place, ce qui rendra le démarrage presque instantané.

  1. Trouvez le fichier boards.txt que vous avez modifié plus tôt (oui, j'aurais pu vous sauver cette étape plus tôt, mais c'était un processus d'apprentissage pour moi)
  2. Ajoutez "-DCRYSTALLESS" à la chaîne seeed_XIAO_m0_nbl.build.extra_flags. Cela indiquera au compilateur d'utiliser l'oscillateur interne.
  3. Recompilez le code.
  4. Flashez à nouveau le MCU.
  5. Vérifiez que le temps de démarrage est suffisamment rapide à l'aide d'un oscilloscope.

Comme vous pouvez le voir sur la photo, le canal jaune 1 est l'alimentation. Le canal cyan 2 est la broche prête du microcontrôleur. Environ 10 millisecondes après la mise sous tension, le canal deux est élevé par le microcontrôleur, ce qui indique qu'il est dans la boucle de configuration. Une fois la configuration terminée, le MCU est codé pour tirer la broche vers le bas, indiquant que la boucle principale commence. La portée montre que la configuration prend environ 3 millisecondes. Globalement, le microcontrôleur prend 13 millisecondes après la mise sous tension pour être prêt à fonctionner.

Conseillé: