Taula de continguts:

Altímetre pla RC (compatible amb Spektrum Telemetry): 7 passos
Altímetre pla RC (compatible amb Spektrum Telemetry): 7 passos

Vídeo: Altímetre pla RC (compatible amb Spektrum Telemetry): 7 passos

Vídeo: Altímetre pla RC (compatible amb Spektrum Telemetry): 7 passos
Vídeo: Testing accuracy of Spektrum and Lemon altimeter sensors 2024, Desembre
Anonim
Altímetre pla RC (compatible amb Spektrum Telemetry)
Altímetre pla RC (compatible amb Spektrum Telemetry)

Vaig fer aquest altímetre perquè el pilot pogués saber que es troben per sota del límit de 400 peus en avions RC als EUA. El meu amic estava preocupat, ja que no podia dir amb certesa que sempre tingués menys de 400 peus i volia la seguretat addicional que proporcionaria un sensor amb dades de telemetria. Sí, podeu comprar un sensor de Spektrum, però podeu construir aquest projecte per menys de 20 dòlars amb taules de sortida (que ja tenen un preu inflat). Si ja teniu el programador J-link, podeu construir-lo en una placa personalitzada per uns quants dòlars. Per no mencionar-ho un cop hàgiu entès el protocol Xbus, podeu fabricar qualsevol dels altres sensors compatibles. Però només cobriré un altímetre en aquest projecte …

Llista de peces:

  • He utilitzat una placa de microcontrolador Seeeduino XIAO per a aquest projecte, ja que és petita, utilitza un processador M0 que té molta potència per a aquest projecte, té tant I2C com SPI preparats per sortir de la caixa i fa servir una lògica de 3.3v, de manera que no hi ha cap canvi de nivell. obligatori.

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

  • Per a la detecció de la pressió de l’aire, vaig comprar un tauler de ruptura BMP388 a Adafruit. La placa té tant I2C com SPI, i pot funcionar amb una lògica de 3.3v o 5v.

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

  • Protoboard per cablejar el circuit
  • Soldador / soldador
  • Capçaleres de pins masculí / femení perquè pugui separar fàcilment el sensor / microcontrolador.
  • Botó petit. Ho faig servir per restablir l'altitud inicial.
  • Resistència de 10 k per a un botó desplegable.
  • Connector femella JST-XH de 4 pins per connectar-lo al port de telemetría del receptor Spektrum
  • Programador SEGGER J-Link EDU per fer flaixar el M0 sense un carregador d’arrencada.

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

  • Tauler de ruptura Adafruit SWD de 10 pins

    www.adafruit.com/product/2743

Subministraments

  • També vaig imprimir en 3D un petit recinte per al meu altímetre, però no cal.
  • Oscil·loscopi: si no en teniu, us el recomano:

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

Pas 1: apreneu el protocol de telemetría Spektrum

Apreneu el protocol de telemetría Spektrum
Apreneu el protocol de telemetría Spektrum
Apreneu el protocol de telemetría Spektrum
Apreneu el protocol de telemetría Spektrum
Apreneu el protocol de telemetría Spektrum
Apreneu el protocol de telemetría Spektrum

Això m’ho va fer sobretot Raymond Domingo. Ja havien fet un altímetre compatible amb Spektrum, de manera que seguir aquest codi font va ajudar molt. El full de dades de telemetria de Spektrum va omplir la resta de buits. Mesurar els nivells de dades del receptor va demostrar que necessitaria una lògica de 3,3 v.

El receptor envia l'adreça del dispositiu i, a continuació, espera una resposta de 16 bytes. El full de dades mostra les estructures de tots els diversos sensors. Fins i tot si l’estructura no té una longitud de 16 bytes, el receptor espera 16 bytes cada vegada.

Full de dades de Spektrum:

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

Projecte de Raymond Domingo:

www.aerobtec.com/download/altisSpektrumInte…

Pas 2: seleccioneu maquinari

Seleccioneu Maquinari
Seleccioneu Maquinari
Seleccioneu Maquinari
Seleccioneu Maquinari
Seleccioneu Maquinari
Seleccioneu Maquinari

Vaig utilitzar un tauler BMP388 d’Adafruit per a la detecció de pressió. El trencament proporciona brots I2C i SPI i funciona amb una lògica de 3,3v o 5v. Adafruit sempre fa un treball increïble amb els seus taulers, així que el vaig comprar. Vaig utilitzar una placa DFRobot Gravity BMP388 a la meva versió, ja que la meva placa Adafruit ja estava en ús.

Tenint en compte que el dispositiu host I2C utilitza una lògica de 3.3v, necessitava un microcontrolador de 3.3v i volia que fos petit. Anava a utilitzar un Adafruit Trinket M0, però són relativament cars i no tenen molts pins trencats. Després vaig trobar el tauler XIAO de Seeeduino. És una placa M0 amb I2C i SPI a punt, amb un connector USB-C. A més, és molt petit! En general, m'agrada molt aquest tauler (tot i que el cristal·lí d'inici lent em va portar a descobrir-ho per sempre).

Spektrum utilitza un connector macho de 4 pins de mida JST-XH al receptor per al port "Xbus" al qual tocarem. He utilitzat un endoll femella JST-XH de 4 pins a l’altímetre i ha funcionat perfectament.

Pas 3: escriviu programari

He utilitzat l'IDE Arduino per escriure tot el codi. Vaig copiar el protocol de telemetría Spektrum del seu full de dades i el vaig afegir a la meva biblioteca Arduino. Com que Adafruit sempre disposa de bones biblioteques per als seus brots, he utilitzat la seva biblioteca BMP3XX per al sensor BMP388.

Els principals endolls del meu disseny són:

  • Configureu l’I2C perquè es comporti com un dispositiu client i respongui a l’adreça de l’altímetre Spektrum (0x12).
  • Llegiu el baròmetre BMP388 mitjançant SPI.
  • Deseu les dades d’altitud en dos memòries intermèdies diferents perquè una sol·licitud I2C del receptor no corrompi les dades i alterni entre les dues memòries intermèdies en obtenir les dades. Això assegura que les dades enviades al receptor sempre estiguin completes.
  • Utilitza un botó per posar a zero l’altímetre.

Per obtenir més informació i anàlisi de codi, mireu el vídeo.

Pas 4: connecteu el circuit

Connecteu el circuit
Connecteu el circuit
Connecteu el circuit
Connecteu el circuit
Connecteu el circuit
Connecteu el circuit
Connecteu el circuit
Connecteu el circuit

He utilitzat protoboard, però si voleu dedicar-vos temps a dissenyar una placa fresada personalitzada, podeu fer que el circuit sigui molt més net.

Vaig connectar el connector JST-XH als pins I2C del XIAO. Com que el receptor emet 5 volts al bus de telemetría, el positiu del bus va ser al pin VCC del XIAO. D'aquesta manera, s'utilitza el regulador de 3.3v incorporat per alimentar el sensor BMP388.

Pas 5: Compileu sense un carregador d'arrencada

Compileu sense un carregador d’arrencada
Compileu sense un carregador d’arrencada
Compileu sense un carregador d’arrencada
Compileu sense un carregador d’arrencada
  1. Cerqueu el fitxer boards.txt (per a qualsevol tauler que feu servir).

    En el meu cas, es trobava aquí: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Copieu el tauler i canvieu el nom de la primera clau per especificar una versió sense carregador d'arrencada. Acabo d'afegir _nbl al nom original.

    • Antic: seeed_XIAO_m0
    • Novetat: seeed_XIAO_m0_nbl
  3. Canvieu el valor.name:

    • Antic: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Novetat: seeed_XIAO_m0_nbl.name = Seeeduino XIAO sense carregador d'arrencada
  4. Modifiqueu l’enllaçador perquè parpellegi sense el carregador d’arrencada canviant l’escriptori ld del constructor:

    • Antic: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts / gcc / flash_with_bootloader.ld
    • Novetat: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts / gcc / flash_with out _bootloader.ld
  5. Reinicieu l'IDE Arduino.
  6. Seleccioneu la nova placa "Seeeduino XIAO No Bootloader" al menú de taules.
  7. Seleccioneu "Exporta el binari compilat"
  8. Un cop compilat, el fitxer.bin estarà a la carpeta del projecte Arduino.

Pas 6: Flash MCU amb J-Link

Flash MCU amb J-Link
Flash MCU amb J-Link
Flash MCU amb J-Link
Flash MCU amb J-Link
Flash MCU amb J-Link
Flash MCU amb J-Link

Adafruit té una fantàstica guia per reprogramar un carregador d’arrencada en un dispositiu M0 / M4. En el nostre cas, volem desfer-nos del gestor d’arrencada, però funciona de la mateixa manera.

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

Un cop ho feu, no podreu penjar codi mitjançant USB. Podeu seguir la guia anterior per tornar a arrencar el carregador d’arrencada al dispositiu per tornar a penjar codi per USB, tal com heu pogut fer des de fàbrica.

La guia d’Adafruit és molt exhaustiva, però aquests són els passos bàsics:

  1. Els cables del pont de soldadura a la part posterior de la placa XIAO.

    • La guia d'Adafruit no va dir que calia connectar el pin RST al tauler de sortida 2x5 al pin de restabliment de les taules Adafruit. Però per al XIAO, necessitava connectar-me als quatre coixinets de la part posterior del tauler.
    • Cal connectar el pin VREF al pin XIAO 3.3v. Això indica al depurador que la lògica del dispositiu és de 3,3 v. Sense ella, si seleccioneu l’opció incorrecta, podríeu danyar el microcontrolador.
  2. Connecteu els cables del pont a la J-Link.
  3. Enceneu la placa XIAO amb un cable USB.
  4. Obriu Atmel Studio.
  5. Seleccioneu Eines Programació de dispositius
  6. Seleccioneu la vostra placa M0. En aquest cas, el ATSAMD21G18A
  7. Seleccioneu SWD.
  8. Llegiu la configuració des de la destinació.
  9. Si utilitzeu EDU J-Link, accepteu les condicions d'ús (si compliu les condicions d'ús).
  10. Verifiqueu que la lectura en tensió sigui correcta a l'extrem superior dret. Si no és de 3,3 v, podríeu trencar el tauler.
  11. Esborreu el fusible de protecció d'arrencada (configureu la mida del carregador d'arrencada a 0 bytes) i, a continuació, seleccioneu programa.
  12. A la secció de memòries, seleccioneu el fitxer compilat.bin o.hex i seleccioneu el programa.

Resolució de problemes:

Quan llegiu la configuració del dispositiu, si teniu un error de tensió fora del rang, assegureu-vos que la MCU està connectada a l'alimentació i que el pin VREF J-Link està connectat a 3,3 volts

Pas 7: torneu a compilar sense el cristall extern

Compileu sense el vidre extern
Compileu sense el vidre extern

La placa XIAO té un cristall extern que triga molt a iniciar-se. El receptor Spektrum fa un descobriment del dispositiu al bus de telemetria 350 mil·lisegons després de l’encesa, de manera que hem de dir al compilador que utilitzi l’oscil·lador intern, cosa que farà que l’arrencada sigui gairebé instantània.

  1. Cerqueu el fitxer boards.txt que heu modificat anteriorment (sí, podria haver-vos desat aquest pas abans, però aquest va ser un procés d'aprenentatge per a mi)
  2. Afegiu "-DCRYSTALLESS" a la cadena seeed_XIAO_m0_nbl.build.extra_flags. Això indicarà al compilador que utilitzi l'oscil·lador intern.
  3. Torneu a compilar el codi.
  4. Torneu a llampar la MCU.
  5. Verifiqueu que el temps d’inici sigui prou ràpid mitjançant un oscil·loscopi.

Com podeu veure a la imatge, el canal groc 1 és la font d'alimentació. El canal cian 2 és el pin llest del microcontrolador. Aproximadament 10 mil·lisegons després de l’engegada, el microcontrolador arrossega el canal dos per indicar que es troba al bucle de configuració. Un cop feta la configuració, la MCU es codifica per baixar el pin, indicant que s’inicia el bucle principal. L'abast mostra que la configuració triga uns 3 mil·lisegons. En general, el microcontrolador triga 13 mil·lisegons després de l’engegada per estar a punt.

Recomanat: