Kazalo:
- Zaloge
- 1. korak: Naučite se protokola telemetrije Spektrum
- 2. korak: Izberite Strojna oprema
- 3. korak: Napišite programsko opremo
- 4. korak: Ožičite vezje
- 5. korak: Prevedite brez zagonskega nalagalnika
- Korak: Flash MCU z J-Link
- 7. korak: Prekompilirajte brez zunanjega kristala
Video: Računalniški višinomer RC (združljiv s telemetrijo Spektrum): 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
Ta višinomer sem naredil, da bi pilot vedel, da so na letalih RC v ZDA pod mejo 400 čevljev. Moj prijatelj je bil zaskrbljen, saj ni mogel zagotovo reči, da ima vedno manj kot 400 čevljev, in je želel dodatno zagotovilo, ki bi ga zagotovil senzor s telemetričnimi podatki. Da, senzor lahko kupite pri Spektrumu, vendar lahko ta projekt zgradite za manj kot 20 USD z odmičnimi ploščami (ki so že napihnjene v ceni). Če že imate programerja J-link, lahko to za nekaj dolarjev zgradite na plošči po meri. Da ne omenjam, ko razumete protokol Xbus, lahko naredite katerega od drugih podprtih senzorjev! Toda v tem projektu bom pokrival samo višinomer …
Seznam delov:
-
Za ta projekt sem uporabil ploščo mikrokrmilnika Seeeduino XIAO, saj je majhen, uporablja procesor M0, ki ima za ta projekt dovolj moči, ima I2C in SPI pripravljen za uporabo in uporablja 3.3v logiko, zato ni premikanja ravni zahtevano.
https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…
-
Za merjenje zračnega tlaka sem od Adafruit -a kupil prelomno ploščo BMP388. Na plošči sta tako I2C kot SPI, in lahko deluje pri logiki 3.3v ali 5v.
https://www.adafruit.com/product/3966
- Protoboard za ožičenje vezja
- Spajkalnik/spajkalnik
- Moški/ženski zatiči, tako da lahko enostavno odstranim senzor/mikrokrmilnik.
- Majhen gumb. To uporabljam za ponastavitev začetne višine.
- 10k upor za spustni gumb.
- 4-polni ženski konektor JST-XH za priključitev v telemetrijska vrata sprejemnika Spektrum
-
SEGGER J-Link EDU programer za utripanje M0 brez zagonskega nalagalnika.
https://www.adafruit.com/product/3571
- Adafruit SWD 10-polna odklopna plošča
-
www.adafruit.com/product/2743
-
Zaloge
- Natisnil sem tudi 3D ohišje za svoj višinomer, vendar to ni potrebno.
-
Osciloskop- če ga nimate, toplo priporočam tega:
https://store.digilentinc.com/analog-discovery-2-1…
1. korak: Naučite se protokola telemetrije Spektrum
To je zame večinoma naredil Raymond Domingo. Izdelali so že višinomer, združljiv s Spektrumom, zato je sledenje tej izvorni kodi resnično pomagalo. Tehnični list telemetrije Spektrum je zapolnil preostale vrzeli. Merjenje ravni podatkov iz sprejemnika je pokazalo, da potrebujem 3.3v logiko.
Sprejemnik pošlje naslov naprave in nato pričakuje 16-bajtni odgovor. Podatkovni list prikazuje strukture vseh različnih senzorjev. Tudi če struktura ni dolga 16 bajtov, sprejemnik vsakič pričakuje nazaj 16 bajtov.
Tehnični list Spektrum:
www.spektrumrc.com/ProdInfo/Files/SPM_Tele…
Projekt Raymonda Dominga:
www.aerobtec.com/download/altisSpektrumInte…
2. korak: Izberite Strojna oprema
Za zaznavanje tlaka sem uporabil odbojno ploščo BMP388 podjetja Adafruit. Prekinitev zagotavlja prekinitve I2C in SPI ter deluje pri logiki 3.3v ali 5v. Adafruit vedno naredi neverjetno delo s svojimi deskami, zato sem ga kupil. Namesto tega sem pri izdelavi uporabil ploščo DFRobot Gravity BMP388, saj je bila moja plošča Adafruit že v uporabi.
Glede na to, da gostiteljska naprava I2C uporablja 3.3v logiko, sem potreboval 3.3v mikrokontroler in želel sem, da je majhen. Nameraval sem uporabiti Adafruit Trinket M0, vendar so razmeroma dragi in nimajo veliko iztrganih zatičev. Potem sem našel ploščo Seeeduino XIAO. To je plošča M0 s pripravljenimi za uporabo I2C in SPI s priključkom USB-C. Poleg tega je res majhen! Na splošno mi je ta plošča zelo všeč (čeprav mi je počasen zagonski kristal vzel za vedno, da sem to ugotovil).
Spektrum uporablja 4-pinski moški konektor velikosti JST-XH na sprejemniku za vrata "Xbus", v katera se bomo dotaknili. Na višinomeru sem uporabil 4-polni ženski vtič JST-XH in deloval je odlično.
3. korak: Napišite programsko opremo
Za kodo sem napisal Arduino IDE. Prepisal sem protokol telemetrije Spektrum iz njihovega podatkovnega lista in ga dodal v svojo knjižnico Arduino. Ker ima Adafruit vedno lepe knjižnice za svoje izbruhe, sem za senzor BMP388 uporabil njihovo knjižnico BMP3XX.
Glavni zaključki mojega oblikovanja so:
- Nastavite I2C, da se obnaša kot odjemalska naprava in se odziva na naslov višinomera Spektrum (0x12).
- Preberite barometer BMP388 skozi SPI.
- Podatke o nadmorski višini shranite v dva različna medpomnilnika, tako da zahteva I2C od sprejemnika ne pokvari podatkov, in pri prenašanju podatkov zamenjajte oba medpomnilnika. To zagotavlja, da so podatki, poslani prejemniku, vedno popolni.
- Uporablja gumb za nastavitev višinomera na nič.
Za več podrobnosti in analizo kode si oglejte video.
4. korak: Ožičite vezje
Uporabil sem protoboard, če pa si želite vzeti čas za oblikovanje rezkane plošče po meri, bi lahko naredili vezje veliko čistejše.
Priključil sem konektor JST-XH na zatiče I2C XIAO. Ker sprejemnik oddaja 5 voltov na telemetrično vodilo, je pozitivni iz vodila šel na XIAO -ov VCC pin. Tako se vgrajeni regulator 3.3V uporablja za napajanje senzorja BMP388.
5. korak: Prevedite brez zagonskega nalagalnika
-
Poiščite datoteko Board.txt (za katero koli ploščo, ki jo uporabljate).
V mojem primeru se je nahajal tukaj: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / board.txt
-
Kopirajte tablo in preimenujte prvi ključ, da določite različico brez zagonskega nalagalnika. Prvotnemu imenu sem dodal _nbl.
- Staro: seeed_XIAO_m0
- Novo: seeed_XIAO_m0_nbl
-
Spremenite vrednost.name:
- Staro: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
- Novo: seeed_XIAO_m0_nbl.name = Seeeduino XIAO brez zagonskega nalagalnika
-
Spremenite povezovalnik, da utripa brez zagonskega nalagalnika, tako da spremenite ld skript graditelja:
- Staro: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
- Novo: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with out _bootloader.ld
- Znova zaženite Arduino IDE.
- V meniju plošč izberite novo ploščo "Seeeduino XIAO No Bootloader".
- Izberite "Izvozi sestavljeno binarno datoteko"
- Ko je datoteka.bin prevedena, bo v mapi vašega projekta Arduino.
Korak: Flash MCU z J-Link
Adafruit ima fantastičen vodnik o ponovnem programiranju zagonskega nalagalnika na napravi M0/M4. V našem primeru se želimo znebiti zagonskega nalagalnika, vendar deluje na enak način.
learn.adafruit.com/how-to-program-samd-boo…
Ko to storite, kode ne boste mogli naložiti prek USB -ja. Sledite zgornjemu priročniku, da zagonski nalagalnik znova namestite na napravo, da znova naložite kodo prek USB -ja, kot ste to storili iz tovarne.
Vodnik Adafruit je zelo temeljit, vendar so to osnovni koraki:
-
Spajkalne žice za spajkanje na zadnji strani plošče XIAO.
- V vodiču Adafruit ni bilo zapisano, da je treba pin RST na plošči 2x5 priključiti na pin za ponastavitev na ploščah Adafruit. Toda za XIAO sem se moral povezati z vsemi štirimi blazinicami na zadnji strani plošče.
- VIN VREF je treba priključiti na XIAO 3.3v pin. Odpravljalec napak pove, da je logika naprave 3,3 V. Če ne izberete napačne možnosti, lahko poškodujete mikrokrmilnik.
- Mostične žice priključite na J-Link.
- Vklopite ploščo XIAO s kablom USB.
- Odprite studio Atmel.
- Izberite Orodja Programiranje naprav
- Izberite svojo ploščo M0. V tem primeru ATSAMD21G18A
- Izberite SWD.
- Preberite konfiguracijo s cilja.
- Če uporabljate EDU J-Link, se strinjajte s pogoji uporabe (če upoštevate pogoje uporabe).
- V zgornjem desnem kotu preverite, ali je odčitana napetost pravilna. Če ni 3.3v, bi lahko razbili tablo!
- Počistite varovalko za zaščito pred zagonom (nastavite velikost zagonskega nalagalnika na 0 bajtov) in izberite program.
- V razdelku spomini izberite prevedeno datoteko.bin ali.hex in izberite program.
Odpravljanje težav:
Ko preberete konfiguracijo naprave, če pride do napake izven območja, se prepričajte, da je MCU priključen na napajanje in da je pin J-Link VREF priključen na 3,3 volta
7. korak: Prekompilirajte brez zunanjega kristala
Plošča XIAO ima zunanji kristal, ki traja dolgo časa za zagon. Sprejemnik Spektrum odkrije napravo na telemetričnem vodilu 350 milisekund po vklopu, zato moramo prevajalniku povedati, naj namesto tega uporabi notranji oscilator, zaradi česar bo zagon skoraj takojšen.
- Poiščite datoteko board.txt, ki ste jo spremenili prej (ja, ta korak bi vam lahko prihranil že prej, vendar je bil to zame učni proces)
- V niz seeed_XIAO_m0_nbl.build.extra_flags dodajte "-DCRYSTALLESS". To bo prevajalniku povedalo, naj uporablja notranji oscilator.
- Ponovno sestavite kodo.
- Ponovno utripajte MCU.
- Z osciloskopom preverite, ali je zagonski čas dovolj hiter.
Kot lahko vidite na sliki, je rumeni kanal 1 napajalnik. Cyan kanal 2 je pripravljen pin na mikrokrmilniku. Približno 10 milisekund po vklopu mikrokrmilnik visoko potegne drugi kanal, kar pomeni, da je v nastavitveni zanki. Ko je nastavitev končana, je MCU kodiran tako, da povleče pin nizko, kar kaže, da se glavna zanka zažene. Obseg prikazuje, da namestitev traja približno 3 milisekunde. Na splošno mikrokontroler potrebuje 13 milisekund po vklopu, da je pripravljen za uporabo.
Priporočena:
Ardubuino (klon, združljiv z Arduboyem): 5 korakov
Ardubuino (klon, združljiv z Arduboyjem): Arduboy je odprtokodna igralna konzola velikosti kreditne kartice, ki ima aktivno skupnost ne samo v svoji programski opremi, kjer veliko ljudi razvija svojo igro za platformo, ampak tudi v svoji strojni opremi, kjer je tudi veliko ljudje so prišli do tega
Oblikujte svoj računalniški računalniški modul Raspberry Pi: 5 korakov (s slikami)
Oblikujte lastno računalniško ploščo Raspberry Pi Compute Module: Če še nikoli niste slišali za Računalniški računalnik Raspberry Pi Compute Module, je to v bistvu polnopravni računalnik Linux s faktorjem oblike, pomnilnikom RAM za prenosni računalnik! Z njim je mogoče oblikovati lastne plošče po meri, Raspberry Pi je le še en
DIY Arduino združljiv klon: 21 korakov (s slikami)
DIY Arduino kompatibilen klon: Arduino je vrhunsko orodje v arzenalu izdelovalca. Morali bi biti sposobni zgraditi svojega! V prvih dneh projekta, okoli leta 2005, so bili vsi deli skozi luknje, komunikacija pa je potekala prek serijskega kabla RS232. Datoteke so še vedno
NRF24 dvosmerni radio za telemetrijo: 9 korakov (s slikami)
NRF24 dvosmerni radio za telemetrijo: Pozdravljeni, moje ime je Pedro Castelani in prinašam vam svoj prvi pouk: izdelava dvosmernega radia z arduinom za, no, karkoli ga potrebujete. V tem projektu bomo naredili dva ločena vezja, ki bosta delovala kot sprejemnik in oddajnik
Nizkocenovni, Arduino združljiv risalni robot: 15 korakov (s slikami)
Nizkocenovni, Arduino združljiv risalni robot: Opomba: Imam novo različico tega robota, ki uporablja tiskano vezje, ga je lažje sestaviti in ima zaznavanje IR ovir! Preverite na http://bit.ly/OSTurtleTa projekt sem zasnoval za 10-urno delavnico za ChickTech.org, katere cilj je