Tartalomjegyzék:

RC sík magasságmérő (kompatibilis a Spektrum telemetriával): 7 lépés
RC sík magasságmérő (kompatibilis a Spektrum telemetriával): 7 lépés

Videó: RC sík magasságmérő (kompatibilis a Spektrum telemetriával): 7 lépés

Videó: RC sík magasságmérő (kompatibilis a Spektrum telemetriával): 7 lépés
Videó: The Ford Ranger Raptor 2024, November
Anonim
RC sík magasságmérő (kompatibilis a Spektrum telemetriával)
RC sík magasságmérő (kompatibilis a Spektrum telemetriával)

Ezt a magasságmérőt azért készítettem, hogy a pilóta tudja, hogy az amerikai RC repülőgépek 400 láb alatti határa alatt vannak. A barátom aggódott, mivel nem tudta biztosan megmondani, hogy mindig 400 láb alatt van, és azt a további bizonyosságot akarta, amit egy telemetriai adatokat tartalmazó érzékelő nyújt. Igen, vásárolhat érzékelőt a Spektrumtól, de ezt a projektet 20 dollárnál alacsonyabb áron is felépítheti kitörő táblákkal (amelyek ára már felfújt). Ha már rendelkezik J-link programozóval, ezt néhány dollárért egyedi táblára építheti. Arról nem is beszélve, hogy ha már megértette az Xbus protokollt, elkészítheti a többi támogatott érzékelőt! De ebben a projektben csak egy magasságmérőt fogok lefedni…

Alkatrész lista:

  • Egy Seeeduino XIAO mikrokontroller kártyát használtam ehhez a projekthez, mivel kicsi, egy M0 processzort használ, amely rengeteg energiával rendelkezik ehhez a projekthez, mind az I2C, mind az SPI készen áll a dobozból, és 3,3 voltos logikát használ, így nincs szinteltolás kívánt.

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

  • A légnyomás -érzékeléshez vettem egy BMP388 -as kitörőtáblát az Adafruit -tól. Az alaplapon mind az I2C, mind az SPI feltört, és 3,3 vagy 5 voltos logikával is működhet.

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

  • Protoboard az áramkör bekötéséhez
  • Forrasztó/forrasztópáka
  • Férfi/női érintkezők, így könnyen leválaszthatom az érzékelőt/mikrovezérlőt.
  • Kis gomb. Ezt a kezdő magasság visszaállítására használom.
  • 10k ellenállás a gomb lehúzásához.
  • JST-XH 4 tűs anyacsatlakozó a Spektrum vevő telemetriai portjához való csatlakoztatáshoz
  • SEGGER J-Link EDU programozó az M0 indítóbetöltő nélküli villanásához.

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

  • Adafruit SWD 10 tűs kitörőlap

    www.adafruit.com/product/2743

Kellékek

  • 3D -ben is kinyomtattam egy kis házat a magasságmérőmhöz, de erre nincs szükség.
  • Oszcilloszkóp- Ha nincs ilyen, nagyon ajánlom ezt:

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

1. lépés: Ismerje meg a Spektrum telemetriai protokollt

Ismerje meg a Spektrum telemetriai protokollt
Ismerje meg a Spektrum telemetriai protokollt
Ismerje meg a Spektrum telemetriai protokollt
Ismerje meg a Spektrum telemetriai protokollt
Ismerje meg a Spektrum telemetriai protokollt
Ismerje meg a Spektrum telemetriai protokollt

Ezt leginkább Raymond Domingo tette meg helyettem. Már készítettek a Spektrummal kompatibilis magasságmérőt, így a forráskód követése valóban segített. A Spektrum telemetriai adatlap kitöltötte a többi hiányt. Az adatszintek mérése a vevőből azt mutatta, hogy szükségem lesz 3.3V logikára.

A vevő elküldi az eszköz címét, majd 16 bájtos választ vár. Az adatlap az összes érzékelő szerkezetét mutatja. Még akkor is, ha a szerkezet nem 16 bájt hosszú, a vevő minden alkalommal 16 bájtot vár vissza.

Spektrum adatlap:

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

Raymond Domingo projektje:

www.aerobtec.com/download/altisSpektrumInte…

2. lépés: Válassza a Hardver lehetőséget

Válassza a Hardver lehetőséget
Válassza a Hardver lehetőséget
Válassza a Hardver lehetőséget
Válassza a Hardver lehetőséget
Válassza a Hardver lehetőséget
Válassza a Hardver lehetőséget

A nyomásérzékeléshez az Adafruit BMP388 -as törőlapját használtam. A kitörés I2C és SPI kitöréseket biztosít, és 3,3 vagy 5 voltos logikával működik. Az Adafruit mindig lenyűgöző munkát végez a kitörő táblákkal, ezért megvettem. Helyette DFRobot Gravity BMP388 táblát használtam az építkezésemben, mivel az Adafruit táblám már használatban volt.

Tekintettel arra, hogy a gazda I2C eszköz 3.3V logikát használ, szükségem volt egy 3.3V mikrokontrollerre, és azt akartam, hogy kicsi legyen. Adafruit Trinket M0 -t akartam használni, de ezek viszonylag drágák, és nincsenek túl sok csapjuk. Aztán megtaláltam a Seeeduino XIAO táblát. Ez egy M0 kártya, mind I2C, mind SPI használatra kész, USB-C csatlakozóval. Ráadásul tényleg kicsi! Összességében nagyon szeretem ezt a táblát (annak ellenére, hogy a lassú indítási kristály örökké tartott, mire rájöttem).

A Spektrum egy JST-XH méretű, 4 tűs férfi csatlakozót használ a vevőkészüléken az "Xbus" porthoz, amelyet megérintünk. A magasságmérőn 4 tűs JST-XH dugót használtam, és tökéletesen működött.

3. lépés: Szoftver írása

Az összes kód írásához az Arduino IDE -t használtam. Kimásoltam a Spektrum telemetriai protokollt az adatlapjukból, és hozzáadtam az Arduino könyvtárhoz. Mivel az Adafruitnak mindig vannak szép könyvtárai a kitörésekhez, a BMP3XX könyvtárukat használtam a BMP388 érzékelőhöz.

A tervezés fő kivonatai a következők:

  • Állítsa be az I2C -t úgy, hogy kliens eszközként viselkedjen, és válaszoljon a Spektrum magasságmérő címére (0x12).
  • Olvassa le a BMP388 barométert az SPI -n keresztül.
  • Mentse a magassági adatokat két különböző pufferbe, hogy a vevő I2C kérése ne rongálja meg az adatokat, és váltson a két puffer között az adatok lekérésekor. Ez biztosítja, hogy a vevőnek küldött adatok mindig teljesek legyenek.
  • Gombbal nullázza a magasságmérőt.

További részletekért és a kód elemzéséért nézze meg a videót.

4. lépés: Csatlakoztassa az áramkört

Kösse be az áramkört
Kösse be az áramkört
Kösse be az áramkört
Kösse be az áramkört
Kösse be az áramkört
Kösse be az áramkört
Kösse be az áramkört
Kösse be az áramkört

Én protoboard -ot használtam, de ha időt szeretne szánni egy egyedi marott tábla tervezésére, akkor sokkal tisztábbá teheti az áramkört.

Csatlakoztattam a JST-XH csatlakozót az XIAO I2C csapjaihoz. Mivel a vevőkészülék 5 voltot ad ki a telemetriai buszra, a busz pozitívja az XIAO VCC érintkezőjére került. Így a beépített 3.3V -os szabályozó a BMP388 érzékelő táplálására szolgál.

5. lépés: Fordítás rendszerindító nélkül

Fordítás Bootloader nélkül
Fordítás Bootloader nélkül
Fordítás Bootloader nélkül
Fordítás Bootloader nélkül
  1. Keresse meg a boards.txt fájlt (bármilyen táblát használjon).

    Esetemben itt található: C: / Users / AppData / Local / Arduino15 / package / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Másolja le a táblát, és nevezze át az első kulcsot, és adja meg a rendszerbetöltő nélküli verziót. Csak hozzáadtam a _nbl -t az eredeti névhez.

    • Régi: seeed_XIAO_m0
    • Új: seeed_XIAO_m0_nbl
  3. A.name érték módosítása:

    • Régi: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Új: seeed_XIAO_m0_nbl.name = Seeeduino XIAO No Bootloader
  4. Módosítsa a linkelőt a rendszerbetöltő nélküli flash -re az építő ld parancsfájljának megváltoztatásával:

    • Régi: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Új: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_whoot _bootloader.ld
  5. Indítsa újra az Arduino IDE -t.
  6. Válassza ki az új "Seeeduino XIAO No Bootloader" fórumot a táblák menüből.
  7. Válassza az "Összeállított bináris exportálása" lehetőséget
  8. Összeállítás után a.bin fájl az Arduino projektmappájában lesz.

6. lépés: Flash MCU J-Link használatával

Flash MCU J-Link segítségével
Flash MCU J-Link segítségével
Flash MCU J-Link segítségével
Flash MCU J-Link segítségével
Flash MCU J-Link segítségével
Flash MCU J-Link segítségével

Az Adafruit fantasztikus útmutatót tartalmaz a rendszerbetöltő programozásához M0/M4 eszközön. Esetünkben meg akarunk szabadulni a rendszerbetöltőtől, de ez ugyanúgy működik.

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

Ha ezt megteszi, akkor nem tudja feltölteni a kódot USB -n keresztül. Kövesse a fenti útmutatót, hogy a rendszerindító betöltőt visszaviltsa az eszközre, és újból USB -n keresztül töltsön fel kódot, mint a gyárból.

Az Adafruit útmutató nagyon alapos, de ezek az alapvető lépések:

  1. Forrasztó jumper vezetékek az XIAO kártya hátoldalához.

    • Az Adafruit útmutató nem mondta ki, hogy a 2x5 -ös töréstáblán lévő RST -tűt az Adafruit -táblák nullázócsapjához kell csatlakoztatni. De az XIAO esetében a tábla hátoldalán lévő mind a négy padhoz csatlakoznom kellett.
    • A VREF tűt csatlakoztatni kell az XIAO 3.3v tűhöz. Ez azt jelzi a hibakeresőnek, hogy az eszköz logikája 3.3v. Enélkül, ha rossz lehetőséget választ, károsíthatja a mikrokontrollert.
  2. Csatlakoztassa az áthidaló vezetékeket a J-Link-hez.
  3. Kapcsolja be az XIAO kártyát USB -kábellel.
  4. Nyissa meg az Atmel Stúdiót.
  5. Válassza az Eszközök Eszközprogramozás lehetőséget
  6. Válassza ki az M0 kártyát. Ebben az esetben az ATSAMD21G18A
  7. Válassza az SWD lehetőséget.
  8. Olvassa el a konfigurációt a célból.
  9. Ha az EDU J-Linket használja, fogadja el a használati feltételeket (ha betartja a használati feltételeket).
  10. Ellenőrizze, hogy a feszültség leolvasása helyes -e a jobb felső sarokban. Ha nem 3.3V, akkor összetörheti a táblát!
  11. Törölje a rendszerindító biztosítékot (állítsa a rendszerbetöltő méretét 0 bájtra), majd válassza ki a programot.
  12. A memóriák részben válassza ki az összeállított.bin vagy.hex fájlt, majd válassza ki a programot.

Hibaelhárítás:

Ha elolvassa az eszköz konfigurációját, ha a tartományon kívüli feszültséget kap, akkor győződjön meg arról, hogy az MCU csatlakoztatva van a hálózathoz, és hogy a J-Link VREF csap 3,3 voltra van csatlakoztatva

7. lépés: Fordítsa újra a külső kristály nélkül

Újrafordítás külső kristály nélkül
Újrafordítás külső kristály nélkül

Az XIAO kártya külső kristállyal rendelkezik, amely hosszú ideig tart. A Spektrum vevőegység 350 milliszekundumot végez eszközfelfedezéssel a telemetriai buszon a bekapcsolás után, ezért meg kell mondanunk a fordítónak, hogy a belső oszcillátort használja, ami szinte azonnali indítást tesz lehetővé.

  1. Keresse meg a boards.txt fájlt, amelyet korábban módosított (igen, elmenthettem volna ezt a lépést korábban, de ez tanulási folyamat volt számomra)
  2. Adja hozzá a "-DCRYSTALLESS" elemet a seeed_XIAO_m0_nbl.build.extra_flags karakterlánchoz. Ez azt fogja mondani a fordítónak, hogy használja a belső oszcillátort.
  3. Fordítsa újra a kódot.
  4. Villogja újra az MCU-t.
  5. Oszcilloszkóppal ellenőrizze, hogy az indítási idő elég gyors -e.

Amint a képen látható, a sárga 1 csatorna a tápegység. A 2 -es ciánkék csatorna a mikrovezérlő kész csapja. Körülbelül 10 ezredmásodperccel a bekapcsolás után a második csatornát magasra húzza a mikrokontroller, ami azt jelzi, hogy a beállítási körben van. A beállítás befejezése után az MCU kódolva van, hogy lehúzza a csapot, jelezve, hogy a fő hurok elindul. A hatókör azt mutatja, hogy a beállítás körülbelül 3 milliszekundumot vesz igénybe. A mikrokontroller összességében 13 milliszekundumot vesz igénybe a bekapcsolás után, hogy üzemkész legyen.

Ajánlott: