V naslednjem zanimivem projektu vam bomo pomagali pri sestavljanju lastnega Arduino RC oddajnika, saj najbrž tudi vi pogosto potrebujete neko obliko brezžičnega upravljanja za najrazličnejše projekte, ki jih izdelate, zato smo med različnimi rešitvami našli ta večnamenski radijski krmilnik, ki ga boste lahko uporabili za skoraj vse.
Odslej boste lahko brezžično upravljali s katerimkoli Arduino projektom s samo nekaj majhnimi prilagoditvami na strani sprejemnika. Ta oddajnik se lahko uporablja kot katerikoli komercialni RC oddajnik za krmiljenje igrač, RC avtomobilov, brezpilotnih vozil in podobno. V ta namen potrebuje samo preprost Arduino sprejemnik, ki nato ustvari ustrezne signale za nadzor teh komercialnih RC naprav. V članku je pojasnjeno, kako vse skupaj deluje in je podprto z nekaj primeri krmiljenja robotskega avtomobila Arduino, krmiljenja robota Arduino Ant in krmiljenja brezkrtačnega DC motorja z uporabo ESC ter nekaterih servo motorjev.
Ta vsebina je samo za naročnike
Ima dva gumba za upravljanje, dva potenciometra, dve preklopni stikali, šest gumbov in dodatno notranjo merilno enoto, sestavljeno iz merilnika pospeška in žiroskopa, ki se lahko uporablja tudi za krmiljenje stvari samo s premikanjem ali nagibanjem oddajnika (slika 2).
Blok shema vezja RC oddajnika
Za začetek si oglejmo vezje. Možgani tega krmilnika so Arduino Pro Mini, ki se napaja z 2 LiPo baterijami, ki dajeta približno 7,4 voltov. Lahko ju povežemo neposredno na RAW pin Pro Mini, ki ima regulator napetosti, ki je napetost zmanjšal na 5V. Bodite pozorni na to, da obstajata dve različici Arduino Pro Mini. Ta, ki je na sliki, se napaja s 5V, druga pa deluje na 3,3V.
Po drugi strani pa je treba NRF24L01 modul brezpogojno napajati s 3,3 V, zato je priporočljivo, da ta napetost prihaja iz namenskega vira. Zato moramo uporabiti napetostni regulator z izhodno napetostjo 3,3V, katerega vhod je priključen na baterije in baterijsko napetost 7,4V pretvoriti na 3,3V. Prav tako moramo poleg modula uporabiti blokirni kondenzator, s katerim zagotovimo, da napetost ostane stabilna, s tem pa bo tudi radijska komunikacija stabilnejša. Modul NRF24L01 komunicira z Arduinom prek SPI protokola, MPU6050 merilnik pospeška in žiroskopski modul pa uporabljata I2C protokol.
Komponente, ki jih boste potrebovali v tem Arduino projektu:
- Oddajni modul NRF24L01
- NRF24L01 + PA + LNA
- potenciometer
- Servo motor
- Preklopno stikalo
- Joystick – ta igralna palica je morda opremljena s ploščico tiskanega vezja in v tem primeru boste morali z nje tiskano vezje odspajkati
- Arduino Pro Mini za različici PCB V2 ali V3
- ali Arduino Pro Mini za različico PCB V1
- 3,3 V napetostni regulator HT7333 za različici PCB V1 in PCB V2
- ali 3,3V napetostni regulator AMS1117 za različico PCB V3
Načrtovanje tiskaneg a vezja
Pravzaprav so v tem projektu uporabljeni prav vsi analogni in digitalni vhodi Arduino Pro Mini. Torej, če poskušam povezati vse skupaj s povezovalnimi žicami, bi bil to precejšen nered. Zato se je avtor lotil načrtovanja namenske ploščice tiskanega vezja, v njegovem primeru z uporabo brezplačne spletne različice programske opreme za načrtovanje tiskanih vezij EasyEDA.
Avtor je pri zunanji obliki tiskanega vezja upošteval ergonomijo krmilnika in ga zasnoval tako, da ga je mogoče enostavno držati z dvema rokama, medtem pa so vsi gumbi za upravljanja na dosegu prstov. Robovi tiskanine so zaobljeni in dodano je tudi nekaj luknjic premera 3 mm, da je mogoča njena pritrditev na neko osnovo. Letvice za programiranje Arduino Pro Mini so postavljene na zgornjo stran, tako da se do njih zlahka dostopa v primeru, če bi želeli Arduino preprogramirati. Tu lahko tudi opazimo, da sem za gumbe krmilne palice uporabil priključka RX in TX na Arduinu, vendar moramo ta dva priključka med nalaganjem programa na Arduino odklopiti od vsake druge povezave. Zato je predvidena prekinitev povezave s kontaktoma in z dvema vmesnima prekinitvama med priključkoma letvice, ki ju je kasneje mogoče enostavno spet povezati z dvema kratkostičnikoma.
Prosimo, da upoštevajte opozorilo: Prepričajte se, da imate pravo različico Arduino Pro Mini za izbrano različico tiskanega vezja, sicer boste morali spremeniti svoje tiskano vezje v skladu z njo. Na sliki 5 je primerjalna fotografija med tremi različnimi različicami, ki se razlikujejo glede na izbran Arduino modul in uporabljen regulator napetosti.
Na spletni strani je povezava do projektnih datotek tega tiskanega vezja. Odprejo se tri različice na ločenih zavihkih, tako da lahko izberete tisto, ki jo potrebujete.
Ko sem končal oblikovanje vsake posamezne različice, sem ustvaril Gerber datoteke, ki so potrebne za izdelavo tiskanih vezij.
Če se boste lotili projekta lahko tiskano vezje naročite tudi prek naših PCB parcel.
Sestavljanje tiskanega vezja
Zdaj lahko nadaljujemo s sestavljanjem oziroma spajkanjem komponent na ploščico. Začel sem z spajkanjem letvic, ki ploščico tiskanega vezja povezujejo z Arduino Pro Mini. Enostaven in zelo uspešen način za to operacijo je, da jih položite na desko in tako med spajkanjem ostanejo trdno na mestu.
Modul Arduino Pro Mini ima priključke tudi ob straneh, vendar upoštevajte, da se lahko položaj teh priključkov od proizvajalca do proizvajalca razlikuje.
Pri modelu, ki ga je uporabil avtor, je uporabil po 5 nožic na vsaki strani, en GND priključek pa je pustil prazen, ker je prostor na tem mestu na plošči izkoristil za povezave. Arduino Pro Mini modul je prispajkal neposredno na tiskano vezje in potem skrajšal predolge letvice. Tik ob njem je nameščen modul za merjenje pospeškov z žiroskopom MPU6050 (slika 8).
Nato je avtor prispajkal regulator napetosti 3,3V, kondenzator poleg njega in še prej omenjeni blokirni kondenzator v bližini modula NRF24L01. Ta modul lahko dobimo v treh različicah in v tem projektu lahko uporabimo katerokoli od njih (slika 9).
Nadaljujemo z letvicami za programiranje Arduino modula, RX in TX, ter priključki za napajanje in stikalo za vklop.
Za spajkanje potenciometrov na tiskano ploščo je moral podaljšati njihove priključke, kar je prav tako izvedel z letvicami (slika 10).
Tu lahko opazimo, da je bila pred tem dolžina osi potenciometrov primerno skrajšana, da je kasneje nanje mogoče pravilno namestiti gumbe. Vendar se spajkanje potenciometrov na tiskano vezje izvede nekoliko kasneje.
Nato vstavimo in prispajkamo na svoje mesto dve preklopni stikali in obe krmilni ročici (slika 11).
Na koncu je preostalo le še spajkanje štirih gumbov, ki niso imeli ustrezne montažne višine, zato je avtor spet uporabil kontakte letvic, da jih je nekoliko podaljšal.
In to je to, če ste delali po navodilih je tiskano vezje sedaj pripravljeno (slika 12) in bomo lahko nadaljevali z izdelavo ohišja. Ker je tudi zunanji videz tiskanega vezja privlačen, se je avtor odločil, da za ohišje uporabi prozorno 4 mm debelo akrilno ploščo.
Na sliki 13 ima plošča še neodstranjeno zaščitno folijo in je zato videti modre barve. Osnovna zamisel izvedbe ohišja je bila izdelati dve enaki plošči v obliki tiskanega vezja ter eno pritrditi na zgornji, drugo pa na spodnji strani ploščice tiskanega vezja.
Na akrilno ploščo narišemo obliko zunanjega roba tiskanega vezja in s kovinsko ročno žago (slika 14) izrežemo dva enaka akrilna pokrova, spodnjega in zgornjega.
Nato s čisto navadno pilo natančno oblikujemo oziroma prilagodimo končno obliko akrilne plošče (slika 15). Izdelava obeh plošč je avtorju odlično uspela in sta se po montaži popolnoma ujemali s tiskanim vezjem.
Nato na ploščah označimo mesta, na katerih moramo narediti odprtine za prehod komponent. S svedrom premera 3 mm najprej naredimo štiri luknje za pritrditev akrilnih plošč in tiskanega vezja skupaj. Za te luknje sem naredil tudi poglobitve, tako da se bodo vijaki skrili pod površino akrilne plošče.
Za odprtine stikal in potenciometrov uporabimo sveder s premerom 6 mm, za odprtine krmilnih palic pa lesni Forstner sveder premera 25 mm (slika 17). Za fino prilagoditev odprtin vsem mehanskim komponentam na koncu uporabite pilo.
Pred sestavljanjem pokrova moramo samo še opozoriti na to, da je priključek za baterijsko napajanje dejansko prispajkan tako, da je letvica s priključki na spodnji strani tiskanega vezja (slika *) tako, da ga je mogoče doseči s zadnje strani, kjer bo nameščena baterija.
Zdaj je vse pripravljeno in lahko začnemo s sestavljanjem ohišja. Začnemo z odstranjevanjem zaščitne folije iz akrilnih plošč in morali boste priznati, da je bila zaščita povsem zadovoljiva, saj plošča pod zaščito ostane popolnoma čista. Najprej oba potenciometra pritrdimo na zgornjo ploščo, vstavimo M3 pritrdilne vijake in na svoja mesta postavimo distančnike dolžine 11 mm (slika 18).
Nato previdno združimo in pritrdimo zgornjo ploščo in tiskano vezje s pomočjo vijakov. To je primeren trenutek za spajkanje potenciometrov na tiskano vezje, saj je to končna višina njune montaže in se je zdaj v praksi pokazalo, na kakšni višini bosta nameščena (slika 19).
Na zadnji plošči potem pritrdimo držalo baterije z dvema vijakoma. Sestavljanje ohišja zaključimo z pritrditvijo spodnje akrilne plošče na spodnjo stran tiskanega vezja s štirimi pritrdilnimi vijaki (slika 20).
Na koncu lahko priključimo akumulatorje na napajalna priključka, nataknemo in pritrdimo gumbe na potenciometrih, vstavimo ročici krmilnih palic in na modul NRF24l01 pritrdimo anteno (slika 21). In to je to, Arduino RC oddajnik, narejen v samogradnji, je izdelan!
Zdaj je preostalo le še programiranje Arduino modula. Za programiranje Arduino modula Pro Mini potrebujemo vmesnik iz USB na serijski UART, ki ga je mogoče priključiti na pripravljeno priključno letvico za programiranje, ki se nahaja na zgornji strani tiskanega vezja našega Arduino RC oddajnika (slika22).
Nato moramo v meniju orodij Arduino IDE izbrati ploščo (slika 23) Arduino Pro ali Pro Mini, poleg tega pa moramo izbrati tudi pravo različico vgrajenega mikrokontrolerja, izbrati prava COM komunikacijska vrata in izbrati način programiranja »USBasp«.
In zdaj lahko programsko kodo naložimo v Arduino modul.
Programska koda za Arduino RC oddajnik
Na kratko lahko še pojasnimo, kako deluje programska koda oddajnika. Najprej moramo vključiti knjižnici SPI in RF24 za brezžično komunikacijo ter knjižnico I2C za modul za merilnik pospeška. Nato moramo določiti digitalne vhode, nekatere spremenljivke, potrebne za program, ki se izvaja v nadaljevanju ter določiti radijski objekt in komunikacijski naslov.
Vse podrobnosti programa za oddajnik si lahko ogledate na spletni strani:https://howtomechatronics.com/projects/diy-arduino-rc-transmitter/
Programska koda RC sprejemnika
Poglejmo si, kako lahko prejmemo te podatke. Tu (slika *) je poenostavljena blok shema Arduino modula in sprejemnika NRF24L01. Seveda lahko uporabite tudi katero koli drugo Arduino ploščo.
In tu je preprosta programska koda sprejemnika, kjer bomo podatke prejeli in jih preprosto natisnili na serijski monitor, da bomo vedeli, da komunikacija deluje pravilno. Spet moramo vključiti knjižnico RF24 in definirati predmete in strukturo na enak način kot v kodi oddajnika. V nastavitvenem delu moramo pri definiranju radijske komunikacije uporabiti iste nastavitve kot oddajnik, vendar modul nastaviti kot sprejemnik s funkcijo radio.startListening (). Ta del programa je prikazan na sliki 25.
V glavni programski zanki (slika 26) s pomočjo funkcije available() preverimo, ali obstajajo dohodni podatki. Če so, podatke preprosto preberemo in shranimo v spremenljivke prej definirane strukture. Te podatke lahko zdaj natisnemo na serijskem monitorju, da bomo preverili, če prenos deluje pravilno. S pomočjo funkcije millis () in if stavka preverimo, če je sprejemanje podatkov še aktivno in v primeru, da podatkov ne sprejemamo dlje kot 1 sekundo, vse spremenljivke ponastavimo na njihove privzete vrednosti. To uporabljamo za preprečevanje neželenega vedenja, na primer, če bi se dron dvigal navzgor in bi vmes izgubili povezavo, bi v svoji smeri letel še naprej, razen če poskrbimo za to, da se vrednosti spremenljivk ponastavijo.
To je na kratko vse. Celoten zapis programske kode za sprejemnik in vse ostalo boste našli na povezavi, ki je napisana na koncu tega članka. Poleg tega so tam tudi datoteke s programsko kodo za različne projekte, kjer je avtor uporabil opisani način prenosa podatkov oziroma upravljanja. Tudi primeri so zgovoren dokaz, da lahko ta način prejemanja podatkov izvedemo v kateremkoli Arduino projektu.
Brezžično krmiljenje Arduino robotskega avtomobila z RC oddajnikom
Dober primer uporabe Arduino RC oddajnika je programska koda za nadzor robotskega avtomobila Arduino (slika 1) iz enega od avtorjevih preteklih projektov. Kot posodobitev tega projekta je izdelal namenski RC sprejemnik, ki temelji na Arduinu, na miniaturnem modulu Arduino Pro in ima več priključkov, ki so pripravljeni za uporabo servo in ESC povezav, vse kupaj pa je nameščeno na kompaktnem tiskanem vezju. Blok shema sprejemnika je narisana na sliki 27 desno.
Tudi tu moramo na začetku določiti knjižnice, strukturo in radijsko komunikacijo, kot je bilo že prej razloženo. Nato moramo v glavni zanki samo prebrati dohodne podatke in jih uporabiti za karkoli želimo. V tem primeru za vožnjo avtomobila uporabljam krmilno ročico 1.
Upravljanje Arduino Ant Robot/Hexapoda s pomočjo Arduino RC oddajnika
Na povsem enak način je avtor na svojem projektu Arduino Ant Robot ( slika 28, prav tako objavljenim na spletu) naredil brezžično upravljanje delovanja s pomočjo tega Arduino RC oddajnika. Podatke moramo samo prebrati in v skladu z njimi izvajati ustrezne funkcije, kot so premikanje naprej, levo, desno, ugriz, napad in tako naprej.
Upravljanje ESC in servo motorjev z RC oddajnikom
Na koncu pa poglejmo še to, kako lahko ta oddajnik uporabljamo za nadzor komercialnih RC naprav.
Običajno moramo pri teh napravah upravljati delovanje njihovih servo motorjev ali brezkrtačnih motorjev (slika 29). Upravljanje je zelo preprosto, po prejemu podatkov iz oddajnika za krmiljenje servo motorjev uporabimo kar knjižnico Arduino Servo z vrednostmi od 0 do 180 stopinj. Tudi za krmiljenje brezkrtačnega motorja s pomočjo ESC lahko uporabimo knjižnico Arduino servo za generiranje 50Hz PWM signala, ki se uporablja za krmiljenje ESC. S spreminjanjem delovnega cikla od 1000 do 2000 mikrosekund upravljamo s hitrostjo vrtenja motorja od nič do maksimalne hitrosti, ki jo zmore.
Za zaključek
Upoštevajte dejstvo, da z opisanim sistemom, ki temelji na NRF24L01 2,4 GHz dejansko ne moremo povezati standardnih RC sprejemnikov in z njimi neposredno upravljati. Za brezžično upravljanje moramo zato izdelati lasten sprejemnik, sestavljen iz modula Arduino in NRF24L01 modula za komunikacijo z Arduino oddajnikom, ki smo ga opisali v tem prispevku. Tak sprejemnik nam daje odprte roke pri ustvarjanju ustreznih PWM ali PPM signalov za krmiljenje katerekoli RC naprave.
Če se boste lotili projekta lahko tiskano vezje naročite tudi prek naših PCB parcel.
Vir: https://howtomechatronics.com/projects/diy-arduino-rc-transmitter/
https://howtomechatronics.com