Turinys:
- Prekės
- 1 žingsnis: išmokite „Spektrum“telemetrijos protokolą
- 2 veiksmas: pasirinkite Aparatūra
- 3 žingsnis: rašykite programinę įrangą
- 4 žingsnis: prijunkite grandinę
- 5 veiksmas: kompiliuokite be įkrovos tvarkyklės
- 6 veiksmas: „Flash MCU“su „J-Link“
- 7 žingsnis: kompiliuokite be išorinio kristalo
Video: RC plokštumos aukščio matuoklis (suderinamas su „Spektrum“telemetrija): 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Aš padariau šį aukščio matuoklį, kad pilotas žinotų, jog JAV RC lėktuvuose jie yra žemiau 400 pėdų ribos. Mano draugas buvo susirūpinęs, nes negalėjo tiksliai pasakyti, kad visada buvo mažesnis nei 400 pėdų, ir norėjo papildomo patikinimo, kurį suteiks jutiklis su telemetrijos duomenimis. Taip, jūs galite nusipirkti jutiklį iš „Spektrum“, tačiau galite pastatyti šį projektą už mažiau nei 20 USD naudodami pertraukimo plokštes (kurios jau yra išpūstos). Jei jau turite „J-link“programuotoją, galite tai sukurti pasirinktinėje lentoje už kelis dolerius. Jau nekalbant apie tai, kai suprasite Xbus protokolą, galite sukurti bet kurį kitą palaikomą jutiklį! Bet aš tiesiog apimsiu aukščiamatį šiame projekte …
Dalių sąrašas:
-
Šiam projektui naudojau „Seeeduino XIAO“mikrovaldiklio plokštę, nes ji yra maža, naudoja M0 procesorių, kuris turi daug energijos šiam projektui, turi ir I2C, ir SPI, paruoštus išeiti iš dėžutės, ir naudoja 3,3 V logiką, todėl lygis nekeičiamas reikalaujama.
https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…
-
Oro slėgio jutimui iš „Adafruit“įsigijau BMP388 pertraukimo plokštę. Plokštėje yra ir I2C, ir SPI, ir ji gali veikti 3.3v arba 5v logika.
https://www.adafruit.com/product/3966
- Protoboardas grandinei prijungti
- Lituoklis/lituoklis
- Vyrų/moterų kaiščių antgaliai, kad galėčiau lengvai atjungti jutiklį/mikrovaldiklį.
- Mažas mygtukas. Aš naudoju tai norėdamas iš naujo nustatyti pradinį aukštį.
- 10k rezistorius mygtukui nuleisti.
- JST-XH 4 kontaktų jungtis, skirta prijungti prie „Spektrum“imtuvo telemetrijos prievado
-
„SEGGER J-Link EDU“programuotojas, norintis blykstelėti M0 be įkrovos įkėlimo programos.
https://www.adafruit.com/product/3571
-
„Adafruit SWD“10 kontaktų pertraukimo plokštė
www.adafruit.com/product/2743
Prekės
- Aš taip pat 3D atspausdinau nedidelį savo aukščio matuoklio korpusą, tačiau to nereikia.
-
Osciloskopas- jei neturite, labai rekomenduoju šį:
https://store.digilentinc.com/analog-discovery-2-1…
1 žingsnis: išmokite „Spektrum“telemetrijos protokolą
Tai dažniausiai man padarė Raymondas Domingo. Jie jau sukūrė aukščiamatį, suderinamą su „Spektrum“, todėl sekti šiuo šaltinio kodu tikrai padėjo. „Spektrum“telemetrijos duomenų lapas užpildė likusias spragas. Išmatavus imtuvo duomenų lygius, paaiškėjo, kad man reikės 3.3V logikos.
Imtuvas siunčia įrenginio adresą ir tikisi 16 baitų atsakymo. Duomenų lape rodomos visų įvairių jutiklių struktūros. Net jei struktūra nėra 16 baitų ilgio, imtuvas kiekvieną kartą tikisi 16 baitų.
„Spektrum“duomenų lapas:
www.spektrumrc.com/ProdInfo/Files/SPM_Tele…
Raymondo Domingo projektas:
www.aerobtec.com/download/altisSpektrumInte…
2 veiksmas: pasirinkite Aparatūra
Slėgio jutimui naudoju „Adafruit“BMP388 pertraukimo lentą. Išsiveržimas suteikia I2C ir SPI pertraukas ir veikia pagal 3.3v arba 5v logiką. „Adafruit“visada daro nuostabų darbą su savo pertraukimo lentomis, todėl aš jį nusipirkau. Vietoj to aš naudoju „DFRobot Gravity BMP388“plokštę, nes mano „Adafruit“plokštė jau buvo naudojama.
Atsižvelgiant į tai, kad pagrindinis I2C įrenginys naudoja 3,3 V logiką, man reikėjo 3,3 V mikrovaldiklio ir norėjau, kad jis būtų mažas. Aš ketinau naudoti „Adafruit Trinket M0“, tačiau jie yra palyginti brangūs ir neturi labai daug kaiščių. Tada radau „Seeeduino XIAO“plokštę. Tai M0 plokštė su paruoštu naudoti I2C ir SPI su USB-C jungtimi. Be to, jis tikrai mažas! Apskritai man labai patinka ši lenta (nors lėto paleidimo kristalas mane suprato amžinai).
„Spektrum“naudoja JST-XH dydžio 4 kontaktų kištukinę jungtį imtuve „Xbus“prievadui, kurį mes panaudosime. Aš naudoju 4 kontaktų JST-XH kištuką ant aukščio matuoklio ir jis puikiai veikė.
3 žingsnis: rašykite programinę įrangą
Visam kodui parašyti naudojau „Arduino IDE“. Aš nukopijavau „Spektrum“telemetrijos protokolą iš jų duomenų lapo ir pridėjau jį prie savo „Arduino“bibliotekos. Kadangi „Adafruit“visada turi gražių bibliotekų, skirtų jų atsiradimui, aš naudoju jų BMP3XX biblioteką BMP388 jutikliui.
Pagrindinės mano dizaino mintys yra šios:
- Nustatykite I2C, kad jis veiktų kaip kliento įrenginys ir reaguotų į „Spektrum“aukščio matuoklio adresą (0x12).
- Perskaitykite BMP388 barometrą per SPI.
- Išsaugokite aukščio duomenis dviejuose skirtinguose buferiuose, kad imtuvo I2C užklausa nesugadintų duomenų, o paimdami duomenis pakaitomis keiskite abu buferius. Tai užtikrina, kad gavėjui siunčiami duomenys visada būtų išsamūs.
- Naudojamas mygtukas altimetro nuliui nustatyti.
Norėdami gauti daugiau informacijos ir kodo analizės, žiūrėkite vaizdo įrašą.
4 žingsnis: prijunkite grandinę
Aš naudoju protoboard, bet jei norite skirti laiko pagal užsakymą frezuotai plokštei, galite padaryti grandinę daug švaresnę.
JST-XH jungtį prijungiau prie XIAO I2C kaiščių. Kadangi imtuvas išleidžia 5 voltų telemetrijos magistralę, teigiamas iš magistralės atiteko XIAO VCC kaiščiui. Tokiu būdu borto 3.3v reguliatorius naudojamas maitinti BMP388 jutiklį.
5 veiksmas: kompiliuokite be įkrovos tvarkyklės
-
Raskite savo boards.txt failą (bet kuriai lentai, kurią naudojate).
Mano atveju, jis buvo čia: C: / Users / AppData / Local / Arduino15 paketai / Seeeduino / hardware / samd / 1.7.7 / boards.txt
-
Nukopijuokite lentą ir pervardykite pirmąjį raktą, kad nurodytumėte versiją be įkrovos. Aš tiesiog pridėjau _nbl prie pradinio pavadinimo.
- Senas: seeed_XIAO_m0
- Nauja: seeed_XIAO_m0_nbl
-
Pakeiskite.name reikšmę:
- Senas: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
- Nauja: seeed_XIAO_m0_nbl.name = „Seeeduino XIAO No Bootloader“
-
Pakeiskite nuorodą, kad ji mirksėtų be įkrovos tvarkyklės, pakeisdama kūrėjo ld scenarijų:
- Senas: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
- Nauja: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with _bootloader.ld
- Iš naujo paleiskite „Arduino IDE“.
- Lentų meniu pasirinkite naują plokštę „Seeeduino XIAO No Bootloader“.
- Pasirinkite „Eksportuoti sudarytą dvejetainį failą“
- Sukompiliuotas.bin failas bus jūsų „Arduino“projekto aplanke.
6 veiksmas: „Flash MCU“su „J-Link“
„Adafruit“turi fantastišką vadovą, kaip perprogramuoti įkrovos įkroviklį M0/M4 įrenginyje. Mūsų atveju norime atsikratyti įkrovos tvarkyklės, tačiau ji veikia taip pat.
learn.adafruit.com/how-to-program-samd-boo…
Kai tai padarysite, negalėsite įkelti kodo per USB. Galite sekti aukščiau pateiktą vadovą, kad įkrovos įkėlimo programą vėl įjungtumėte į įrenginį ir vėl įkeltumėte kodą per USB, kaip galėjote iš gamyklos.
„Adafruit“vadovas yra labai išsamus, tačiau tai yra pagrindiniai veiksmai:
-
Lituokite jungiamuosius laidus prie XIAO plokštės galo.
- „Adafruit“vadove nebuvo pasakyta, kad RST kaištį, esantį 2x5 pertraukos plokštėje, reikia prijungti prie „Adafruit“plokščių atstatymo kaiščio. Tačiau „XIAO“atveju turėjau prisijungti prie visų keturių plokštės gale esančių bloknotų.
- VREF kaištį reikia prijungti prie XIAO 3.3v kaiščio. Tai nurodo derintojui, kad įrenginio logika yra 3.3v. Be jo, jei pasirinksite netinkamą parinktį, galite sugadinti mikrovaldiklį.
- Prijunkite trumpiklius prie „J-Link“.
- Įjunkite XIAO plokštę naudodami USB kabelį.
- Atidarykite „Atmel Studio“.
- Pasirinkite Įrankiai Įrenginio programavimas
- Pasirinkite savo M0 plokštę. Šiuo atveju ATSAMD21G18A
- Pasirinkite SWD.
- Perskaitykite konfigūraciją iš tikslo.
- Jei naudojate „EDU J-Link“, sutikite su naudojimo sąlygomis (jei laikotės naudojimo sąlygų).
- Patikrinkite, ar įtampos rodmenys viršutiniame dešiniajame kampe yra teisingi. Jei tai nėra 3.3v, galite sugadinti lentą!
- Išvalykite įkrovos apsaugos saugiklį (nustatykite įkrovos įkroviklio dydį į 0 baitų), tada pasirinkite programą.
- Atminties skiltyje pasirinkite savo sukurtą.bin arba.hex failą ir pasirinkite programą.
Problemų sprendimas:
Skaitydami įrenginio konfigūraciją, jei įvyksta įtampa už diapazono ribų, įsitikinkite, kad MCU yra prijungtas prie maitinimo šaltinio ir ar J-Link VREF kaištis prijungtas prie 3,3 voltų
7 žingsnis: kompiliuokite be išorinio kristalo
XIAO plokštė turi išorinį kristalą, kurio paleidimas užtrunka ilgai. „Spektrum“imtuvas atranda prietaisą telemetrinėje magistralėje 350 milisekundžių po įjungimo, todėl turime pasakyti kompiliatoriui, kad jis vietoj to naudotų vidinį osciliatorių, todėl paleidimas bus beveik akimirksniu.
- Raskite failą boards.txt, kurį pakeitėte anksčiau (taip, aš galėjau jus išsaugoti šį veiksmą anksčiau, bet man tai buvo mokymosi procesas)
- Prie eilutės seeed_XIAO_m0_nbl.build.extra_flags pridėkite „-DCRYSTALLESS“. Tai kompiliatoriui nurodys naudoti vidinį osciliatorių.
- Iš naujo sukompiliuokite kodą.
- Pakartotinai paleiskite MCU.
- Naudodami osciloskopą įsitikinkite, kad paleidimo laikas yra pakankamai greitas.
Kaip matote iš paveikslėlio, geltonas 1 kanalas yra maitinimo šaltinis. Žalsvai mėlynas kanalas 2 yra paruoštas kaištis mikrovaldiklyje. Praėjus maždaug 10 milisekundžių po įjungimo, mikrokontroleris pakelia aukštą kanalą, o tai rodo, kad jis yra sąrankos cikle. Kai sąranka atlikta, MCU yra užkoduotas taip, kad kaištis būtų žemas, o tai reiškia, kad prasideda pagrindinė kilpa. Apimtis rodo, kad sąranka trunka apie 3 milisekundes. Apskritai mikrovaldikliui reikia 13 milisekundžių po įjungimo, kad jis būtų paruoštas darbui.
Rekomenduojamas:
RC plokštumos kūrimas: 4 žingsniai
RC Plane Build: Aš sukūriau šį lėktuvą iš surinkto sklendės ir RC dalių, kurias turėjau namuose. Jei dar neturite dalių, šis projektas gali kainuoti brangiai, tačiau jei norite skraidančio lėktuvo, turėsite tam išleisti šiek tiek pinigų. Kai mokosi
Aukščio matuoklis (aukščio matuoklis) pagal atmosferos slėgį: 7 žingsniai (su nuotraukomis)
Aukščio matuoklis (aukščio matuoklis) Remiantis atmosferos slėgiu: [Redaguoti]; Žr. 2 versiją 6 veiksme su rankiniu įvesties aukščio įvedimu. Tai yra aukščio matuoklio (aukščio matuoklio), pagrįsto „Arduino Nano“ir „Bosch BMP180“atmosferos slėgio jutikliu, pastato aprašymas. Dizainas paprastas, bet matavimai
Purvo pigus nešvarumų matuoklis-9 USD „Arduino“garsinis aukščio matuoklis: 4 žingsniai (su nuotraukomis)
Nešvarūs pigūs nešvarumų matuokliai-9 USD „Arduino“pagrįstas garsinis aukščio matuoklis: „Dytters“(A.K.A garsiniai aukščio matuokliai) tiek metų išgelbėjo parašiutininkų gyvybes. Dabar „Audible Abby“taip pat sutaupys pinigų. „Basic Dytters“turi keturis aliarmus, vieną pakeliui aukštyn ir tris žemyn. Skrisdami lėktuvu, parašiutininkai turi žinoti, kada
Elektroninis barometrinis aukščio matuoklis stratosferos balionams: 9 žingsniai (su nuotraukomis)
Stratosferos balionų elektroninis barometrinis altimetras: mūsų komanda „RandomRace.ru“paleidžia helio balionus. Maži ir dideli, su fotoaparatais ir be jų. Pradedame mažus, kad atsitiktine tvarka nukristų į nuotykių lenktynių varžybų kontrolinius punktus, o didelius - kad sukurtume puikius vaizdo įrašus ir nuotraukas iš pačio viršūnės
„Arduino“aukščio matuoklis naudojant BMP ir SPI arba I2C OLED: 5 žingsniai
„Arduino“aukščio matuoklis naudojant BMP ir SPI arba „I2C OLED“: Ilgą laiką aš ieškojau aukščio matuoklio ir temperatūros, naudodamas vieną jutiklį ir rodydamas jį SPI pagrįstu OLED. Kadangi nieko tikslaus neradau, pagalvojau, kad sukursiu savo, naudodamas „U8glib“biblioteką. „YouTube“yra viena pamoka