Turinys:

NRF24 dvipusis radijas telemetrijai: 9 žingsniai (su nuotraukomis)
NRF24 dvipusis radijas telemetrijai: 9 žingsniai (su nuotraukomis)

Video: NRF24 dvipusis radijas telemetrijai: 9 žingsniai (su nuotraukomis)

Video: NRF24 dvipusis radijas telemetrijai: 9 žingsniai (su nuotraukomis)
Video: Radio communication using nrf24l01 modules and arduino #dronecontroller 2024, Liepa
Anonim
NRF24 dvipusis radijas telemetrijai
NRF24 dvipusis radijas telemetrijai

Sveiki, vaikinai, mano vardas yra Pedro Castelani, ir aš jums pateiksiu savo pirmą pamokomą dalyką: pastatyti dvipusį radiją su arduino, na, bet kam, ko jums reikia.

Šiame projekte mes pagaminsime dvi atskiras grandines, kurios veiks ir kaip imtuvas, ir kaip siųstuvas. Svarbiausi komponentai yra dvi arduino plokštės (visos veikia) ir du nrf24 siųstuvo moduliai. Mano atveju aš valdau servo su potenciometru iš kito arduino ir siunčiu dviejų elementų lipo baterijos įtampą atgal į pirmąją.

Ketinu jį naudoti kaip priedą prie savo bepiločio orlaivio, kuris neturi telemetrijos ar servo pavaros valdymo. Tačiau galite jį naudoti kitiems tikslams, pvz., Kurti savo keturkojį, lėktuvą, rc automobilį ir tt Iš pateikto kodo taip pat galite atlikti bet kokius norimus pakeitimus pagal savo poreikius. Taip pat pabandysiu paaiškinti, kaip teisingai jį modifikuoti (man prireikė šiek tiek laiko, kol išmokau savarankiškai, nes buvau pripratęs prie kito tipo nrf24 lusto naudojimo).

1 žingsnis: medžiagos

Medžiagos
Medžiagos
Medžiagos
Medžiagos
Medžiagos
Medžiagos

Norėdami pradėti savo projektą, turime žinoti visas reikalingas dalis. Žemiau pateikiamas būtinų pagrindinių sąrašas. Daugumą jų nusipirkau vietinėje elektronikos parduotuvėje, kurioje gyvenu, todėl negalėsiu jums rekomenduoti jokios jų įsigijimo vietos. Galite išbandyti „Amazon“ar bet kurią kitą vietą. Aš nesakau, kad turėtum jų ten užsisakyti, bet tai tik pasiūlymas.

  1. Dvi „Arduino“plokštės (dirbti turėtų bet kas. Turiu dvi „arduino pro mini“, kurios man labai patinka, nes turi 13 skaitmeninių kaiščių ir 8 analogines, o „Uno“- tik 6 analogines).
  2. Du Nrf24 moduliai. Kai kurie su išorinėmis antenomis turi didesnį perdavimo diapazoną. Pasirinkite tuos, kurie jums labiausiai patinka.
  3. Moteriški-moteriški ir moteriški-vyriški jungiamieji kabeliai.
  4. Prototipų lenta.
  5. „Arduino“programuotojas („arduino pro mini“, jei turite jį su USB jungtimi, jums to neprireiks).
  6. „Arduino IDE“(programinė įranga). Atsisiųskite iš čia.
  7. Mano atveju taip pat naudojau:
  • Servo. Kiekvienas, kurį galite gauti. Man patinka SG90, mažas, skirtas arduino.
  • Potenciometras (nuo 10k iki 20k omų). Galima nusipirkti vietinėje elektronikos parduotuvėje arba naudoti arduino skirtą vairasvirtę. Yra keletas mano turimų vaizdų. Aš taip pat gavau vieną iš sugedusio drono rc valdiklio, kad galėčiau pateikti keletą idėjų
  • 4 lygūs normalūs rezistoriai. Naudojau 10 tūkstančių, kuriuos gavau iš senelio namų. Aš juos naudoju kaip įtampos skirstytuvus.
  • Maža varinė pagalvėlė (kurią taip pat gavau iš savo senelio) rezistorių litavimui.
  • Smeigtukai. Naudojamas lengvai prijungti trumpiklius nuo arduino prie rezistorių.
  • 2s lipo baterija. Aš jį naudoju vieno iš mano arduinos valdymui. Rezistoriai yra prijungti prie jo ir nuskaito jo įtampą. Aš planuoju, kad mano arduino būtų prijungtas prie mano drono 2s baterijos, nes jam nereikės išorinio maitinimo šaltinio ir tuo pat metu pasakykite man, kiek liko akumuliatoriaus.
  • Lituoklis ir lydmetalis. Reikalingas lituoti rezistorius, perforatorių ir kaiščius.

2 žingsnis: funkcija ir kodas

Funkcija ir kodas
Funkcija ir kodas

Kai visos medžiagos bus paminėtos, pradėkime kalbėti apie modulių funkciją.

Kaip tai veikia: pavadinkime vieną arduino „A“, o kitą - „B“. Mano atveju, užprogramavęs abu, prijungiau juos prie atitinkamo radijo lusto ir pridėjau potenciometrą prie arduino A, o rezistorius ir servo prie arduino B. Modulis A siunčia vertes į B ir perkelia servo. B nuskaito 2s baterijos įtampą ir siunčia jas atgal į A. Tada visas ratas prasideda iš naujo. Kadangi A gauna vertes, kurios nėra išreikštos mechaniškai, jis yra prijungtas prie programuotojo, per kurį galime jas nuskaityti su nuosekliu monitoriumi (įtrauktu į „Arduino IDE“)

Kodas: aš vadinu arduino A eskizą (prijungtą prie programuotojo ir potenciometro) TwoWayRadio_1, o eskizą - arduino B TwoWayRadio_2WithServo

„TwoWayRadio_1“ir „TwoWayRadio_2WithServo“galima rasti šiek tiek žemiau šios pastraipos. Kiekvieno kodo viduje yra paaiškinimas, kad viskas būtų lengviau suprantama.

3 žingsnis: litavimo moduliai: įtampos skirstytuvas ir potenciometras

Litavimo moduliai: įtampos skirstytuvas ir potenciometras
Litavimo moduliai: įtampos skirstytuvas ir potenciometras
Litavimo moduliai: įtampos skirstytuvas ir potenciometras
Litavimo moduliai: įtampos skirstytuvas ir potenciometras
Litavimo moduliai: įtampos skirstytuvas ir potenciometras
Litavimo moduliai: įtampos skirstytuvas ir potenciometras
Litavimo moduliai: įtampos skirstytuvas ir potenciometras
Litavimo moduliai: įtampos skirstytuvas ir potenciometras

Šis žingsnis yra neprivalomas, nes galbūt norėsite naudoti specialiai arduino sukurtą potenciometro vairasvirtę ir vietoj įtampos skirstytuvo naudoti kitą modulį. Tačiau aš suplanavau viską (įskaitant kodus) šiems moduliams.

Potenciometras:

Ši dalis yra beveik lengviausia litavimo etape. Jums tiesiog reikės lituoti kai kuriuos trumpiklius prie savo potenciometro. Jei norite, pirmiausia galite lituoti potenciometrą prie perforatoriaus ir tada lituoti kai kuriuos kaiščius. Kai jums reikia jį naudoti, tiesiog prijunkite trumpiklius prie arduino, o tada prie kaiščių ant perforatoriaus. Kai nenaudojate, galite ištraukti kabelius ir naudoti juos kitam projektui. Jei vis dėlto darote taip, kaip aš, galite palikti potenciometrą, lituojamą tiesiai prie kabelių

  • Jei elgsitės taip, kaip aš, paimkite tris trumpiklius iš moterų ir moterų, nupjaukite vieną iš galų ir nuimkite ten esančią izoliaciją, ant kiekvienos vielos palikdami nedidelį vario laidą.
  • Įkaitinkite lituoklį ir prijunkite modifikuotus džemperius prie potenciometrų kaiščių. Jei galite, pabandykite gauti skirtingų spalvų, kad galėtumėte prisiminti, kuri iš jų yra vcc, gnd ir „signalinė“(vidurinė). Prijunkite šiuos kabelius prie atitinkamų arduino analoginių kaiščių. Žingsnio pradžioje yra keletas vaizdų, kaip viskas baigėsi. Potenciometras nėra įprastas, jis iš tikrųjų yra mažas ratas, turintis penkis kaiščius. Prireikė šiek tiek laiko, kol išsiaiškinau, kuris yra kuris. Pabandykite tai padaryti lengviau ir naudokite įprastą potenciometrą, kaip parodyta MEDŽIAGŲ žingsnyje.
  • Jei lituojate jį prie perforatoriaus, gaukite potenciometrą ir perforatorių ir lituokite juos kartu su lituokliu.
  • Gaukite smeigtukus (tris) ir padėkite juos patogiausiu būdu. Naudokite lydmetalį, kad sujungtumėte kiekvieną kaištį su potenciometro kaiščiais. Nejunkite jungties tarp daugiau nei dviejų kaiščių, kitaip jis neveiks (jis veiks kaip trumpasis jungimas).
  • Gaukite keletą moteriškų-moteriškų ar moteriškų-vyriškų trumpiklių laidų ir prijunkite juos iš savo arduino prie naujo potenciometro modulio (prisiminkite, kuris yra kuris).

2. Įtampos skirstytuvas:

  • Ši dalis yra šiek tiek sudėtingesnė. Jums reikės gauti keturis rezistorius, penkis kaiščius ir perforatorių. Aš sukūriau kodą, skirtą naudoti 2 sekundžių baterijai (dviejų elementų), bet jūs taip pat galėtumėte jį naudoti 1 sekundei, šiek tiek pakeisdami arduino eskizą ir techninę įrangą. Įdėjau dviejų mano pagamintų įtampos skirstytuvų nuotraukas, vieną su tik 2 rezistoriais (1 s baterijoms) ir vieną su keturiais (jūs atspėjote: 2 s baterijos).
  • Pradėkime nuo 2 -ojo. Aš neturiu kūrimo proceso vaizdų, nes pradėjau šitą pamokomą tekstą gerti po to, kai baigiau lituoti. Įtraukiu galutinio rezultato vaizdus, todėl stengsiuosi būti kuo aiškesnis.
  • Pradėkite gaudami perforatorių ir 5 kaiščius. Lituokite juos arti šono ir neleiskite jiems liesti vienas kito.
  • Lituokite rezistorius, kaip parodyta paskutiniame paveikslėlyje žingsnio pradžioje (mažos grandinės schema). Sujungimai tarp kiekvieno rezistoriaus ir kaiščio atliekami lydmetaliu. Stenkitės užimti kuo mažiau vietos.
  • Kai baigsite, jis turėtų atrodyti panašus į aukščiau paskelbto gatavo įtampos skirstytuvo nuotraukas.
  • 1s įtampos skirstytuvas iš esmės yra tas pats, išskyrus tai, kad naudojate tik tris kaiščius ir du rezistorius. Įtraukiau vaizdus, kaip tai atrodo, kai baigsite. Tiesiog pažvelkite į 2s diagramą ir įsivaizduokite ją be signalinio laido 1, vidurinio laido ir rezistorių r2 ir r3, ir jūs turite!
  • Taigi, jei norite 1 s įtampos daliklio, jis gali būti šiek tiek sudėtingesnis nei tik naudojant 2 s.

4 žingsnis: „Arduino“programavimas

„Arduino“programavimas
„Arduino“programavimas
  1. Mes beveik baigėme!
  2. Atsisiuntę „Arduino IDE“programinę įrangą iš svetainės, susietos su MATERIALS veiksmu, atsisiųskite eskizus iš FUNCTION AND CODE veiksmo.
  3. Tada atidarykite juos „Arduino IDE“.
  4. Abiejuose skirtukuose atidarykite „Įrankiai“ir spustelėkite „Lentos“. Iš sąrašo pasirinkite lentą. Spustelėkite „Procesorius“, tada „Programuotojas“, pasirinkdami kiekvieną pagal savo plokštę. Tada grįžkite prie eskizo. Gana patogu ieškoti savo lentos informacijos internete. Tiesiog ieškokite pavadinimo ir pamatysite specifikacijas.
  5. Spustelėkite „eskizas“(viršuje), tada „įtraukti biblioteką“, tada „tvarkyti bibliotekas“. Ekrano centre turėtų būti atidarytas mažas langas. Įveskite paieškos parinktį „rf24“. Atsisiųskite norimą biblioteką. Reikės turėti galimybę įkelti kodą į arduino lentą.
  6. Kad įsitikintumėte, jog nėra klaidų, spustelėkite simbolį „Varnelė“(viršuje kairėje). Tada tęskite jo įkėlimą paspausdami rodyklę, nukreiptą į dešinę, šalia simbolio „Varnelė“.
  7. Jei jūsų plokštė yra „Pro Mini“, po kurio laiko paaiškinsiu, kaip viską prijungti. Jei ne, tiesiog įkelkite jį ir, baigę programuoti abu arduinos, perskaitykite žemiau esantį įspėjimą.
  8. Kadangi turite dvi plokštes, atminkite, kuris kodas buvo užprogramuotas, kad išvengtumėte problemų ateityje.
  9. Taigi, jei turite „Pro Mini“, jums reikės programuotojo. Yra dviejų tipų programuotojai: 5 kontaktų ir 6 kontaktų. Aš sutelksiu dėmesį į 5 kaiščius, nes juos turiu. Ryšiai yra tokie (pirmasis kaištis yra iš programuotojo, tada arduino): Gnd-Gnd; 5v-Vcc (išskyrus, jei jūsų „Pro Mini“yra 3.3v, tokiu atveju jis yra 3.3v-Vcc); Rxd-Txo; Txd-Rxi. Aš įtraukiau ir lentos, ir programuotojo atvaizdą, tik tuo atveju, jei jums reikia patikrinti.
  10. Prijunkite arduino prie programuotojo ir programuotoją prie kompiuterio. Atidarykite IDE ir spustelėkite įkėlimo mygtuką. Jei pažvelgsite į kairįjį ekrano apačią, pamatysite pranešimą „kompiliavimas“. Kai šis pranešimas virsta „įkėlimu“, paspauskite „arduino Pro Mini“nustatymo iš naujo mygtuką. Po kurio laiko eskizas bus baigtas ir pasirodys pranešimas „Įkėlimas baigtas“. Kai tai atsitiks, baigsite ir būsite pasiruošę pereiti prie kito žingsnio.

5 žingsnis: viską sujunkite

Viską jungiantis
Viską jungiantis
Viską jungiantis
Viską jungiantis
Viską jungiantis
Viską jungiantis
Viską jungiantis
Viską jungiantis
  1. Užprogramavę abu arduinos, turime viską prijungti, kad tai veiktų. Čia mums reikės visko, kas paminėta anksčiau: arduinos, nrf24 moduliai, kabeliai, servo, programuotojas, įtampos daliklis, potenciometras ir kt.
  2. Pirmiausia sujungsime arduino, kuris veikia su programuotoju. Žingsnio pradžioje yra nrf24 jungčių vaizdai. „Irq“kaištis, kuris, kaip teigiama, eina į „arduino“8 kaištį, visai nėra prijungtas. Likusi dalis yra tokia pati, kaip ir abiejų arduinos paveikslėlyje (norėdami gauti daugiau informacijos, galite perskaityti pastabas vaizdų viduje)
  3. Radijo Vcc gali būti prijungtas prie 3.3 arba 5V. Kartais tai veikia tik su vienu iš jų. Pabandykite su 3.3 ir tada 5, jei jis neveiks. 3.3 atveju naudokite programuotojo 3.3V kištuką. Aš turėjau tai padaryti, kaip matysite gatavo produkto vaizduose.
  4. Prijunkite programuotoją prie arduino, kaip nurodyta ankstesniame žingsnyje.
  5. Prijunkite potenciometro „signalo“kabelį prie analoginio kaiščio A0.
  6. Prijunkite potenciometrą „Teigiamas“prie Vcc (tik 5 V, o ne 3.3), o „Neigiamą“- prie Gnd.
  7. Perduok kitam arduino.
  8. Prijunkite radiją, kaip minėta anksčiau, pagal vaizdus.
  9. Prijunkite servo signalo kabelį (oranžinė-geltona-balta. Patikrinkite servo specifikacijas) prie 2 skaitmeninio kaiščio, o jo gnd-prie arduino Gnd, o teigiamas-prie arduino Vcc.
  10. Prijunkite signalo kabelį 1 nuo įtampos skirstytuvo prie kaiščio A0, o signalinį laidą 2 prie kištuko A1.
  11. Naudodami protoboat, prijunkite neigiamą įtampos skirstytuvo kabelį, arduino gnd ir akumuliatoriaus gnd (juodas kabelis ant jst kištuko).
  12. Prijunkite „vidurinį kabelį“nuo įtampos skirstytuvo prie akumuliatoriaus vidurinio, tarp raudono ir juodo „jst“kištuko kabelių (balta spalva).
  13. Prijunkite „teigiamą“kabelį iš įtampos skirstytuvo prie teigiamo akumuliatoriaus gnybto ir prie arduino „Raw“. Nejunkite tiesiogiai prie „Vcc“, nes šis kaištis yra specialiai skirtas 5 v. Tada „Vcc“kaiščiai tampa 5 V išėjimais.

Jūs beveik baigėte! Jūsų gatavi produktai turėtų atrodyti taip, kaip parodyta aukščiau. Patikrinkite kiekvieną ryšį, kad išvengtumėte trumpojo jungimo.

6 veiksmas: įjunkite savo projektą

  • Jūsų arduino su servo sistema buvo įjungtas paskutiniame žingsnyje, kai prijungėte akumuliatorių prie visos grandinės. Taigi, jums tereikia prijungti kitą arduino prie USB prievado ir baigsite!
  • Perkelkite potenciometrą ir turėtumėte pamatyti, kaip ir servo juda. Mano atveju servo yra pritvirtintas prie 1 ašies kameros gimbalio, kuris apribojo kampą, todėl teko koreguoti parametrus. Bet kokiu atveju tai rasite kode.
  • Norėdami pamatyti įtampą, prijungę programuotoją prie kompiuterio, atidarykite „arduino“programinę įrangą ir paspauskite „Ctrl+Shift+m“. Atsidarys langas su užrašu „Serial Monitor“. Šio lango apačioje yra parinktis „(skaičius) baudas“. Spustelėkite jį ir pasirinkite „9600“. Uždarykite monitorių ir vėl jį atidarykite, paspausdami tuos pačius klavišus, ir pradėsite matyti daug gaunamų verčių. Jūs negalėsite pamatyti, kokios yra šios vertės, nes jos greitai ateina, bet jei atjungsite programuotojas sustos ir jūs galite juos perskaityti. Aš bandau gauti kažką, kad automatiškai juos grafikuotų, kad būtų galima pamatyti įtampą arba pavaizduoti juos su šviesos diodais, tačiau tai vis dar vyksta.
  • Net jei jūs aiškiai nematote vertybių, nes jos praeina taip greitai, tiesiog žinokite, kad tai pagaliau veikia ir kad galite jas pakeisti, kad atitiktų jūsų poreikius!

7 žingsnis: demonstracija

Na, tai yra vaizdo įrašas, kuriame įjungiu ir šiek tiek naudoju, kad parodyčiau, kaip tai turėtų veikti.

8 žingsnis: daugiau idėjų, kaip naudoti šį projektą

Daugiau idėjų, kaip panaudoti šį projektą
Daugiau idėjų, kaip panaudoti šį projektą
Daugiau idėjų, kaip panaudoti šį projektą
Daugiau idėjų, kaip panaudoti šį projektą
Daugiau idėjų, kaip panaudoti šį projektą
Daugiau idėjų, kaip panaudoti šį projektą

Štai keletas idėjų, kurias galite sukurti naudodami šią bazę. Pasakyk man, ar padarei vieną iš jų, ar bandai ir negali, kad galėčiau padėti!

  • Užuot skaitę įtampą, pakeiskite kodą taip, kad jis grąžintų temperatūrą, slėgį, aukštį ir tt. BMP180 mikroschema man pasirodė gana naudinga.
  • Išmatuokite atstumus naudodami HC-SR04 modulį ir nusiųskite juos atgal į pirmąjį arduino. Naudokite servo, kad nukreiptumėte jutiklį į bet kurią norimą vietą.
  • Pridėkite kitą servo kanalą, kad perkeltumėte fotoaparatą aukštyn ir į šoną; pavyzdžiui, ant rc automobilio.
  • Pridėkite dar tris servo kanalus (ar daugiau!) Ir sukurkite savo rc siųstuvą ir imtuvą keturkopteriui, lėktuvui, sraigtasparniui, rc automobiliui ir tt!
  • Pakeiskite prožektoriaus servo ir pridėkite jį prie savo drono! Taip pat galėsite valdyti šviesos intensyvumą (gali tekti pakeisti tranzistorius ir pakeisti kodą)
  • Užuot skaitę įtampą kompiuteryje, būkite kūrybingi ir pridėkite LCD modulį, arba galite sukurti 6 lempų plokštę (dvi žalios, dvi geltonos ir dvi raudonos), kurios išjungs jas po vieną, kai baterija išsikrauna ir pradės mirksėti, kai baterijos lygis nukris žemiau jūsų pasirinktos įtampos. Aš padariau šią mažą lentą ir žingsnio pradžioje paskelbiau vaizdą.

Kad viskas būtų aišku, jei ketinate įgyvendinti vieną iš šių projektų, atminkite, kad turėsite pakeisti abu kodus ir galbūt kai kuriuos ryšius. Pabandykite nepamiršti nekepti savo lentos darydami ką nors kvailo.

Jei turite daugiau idėjų ar jums reikia pagalbos įgyvendinant vieną iš šių projektų, rašykite klausimų skiltyje!

9 veiksmas: trikčių šalinimas

Problemų sprendimas
Problemų sprendimas

Tiesą pasakius, dauguma problemų, su kuriomis iki šiol susidūriau, buvo susijusios su eskizo dalimi, kurią jau išsprendėte. Pabandysiu jums papasakoti kuo daugiau problemų, kad galėčiau jums padėti.

Pirma, jei bandote įkelti eskizą ir negalite, pabandykite tai:

Įsitikinkite, kad atsisiuntėte reikiamas bibliotekas (ir tinkamas!).

Įsitikinkite, kad pasirinkote tinkamą plokštę, procesorių ir programuotoją.

Įsitikinkite, kad ryšys tarp kompiuterio ir programuotojo bei programuotojo ir arduino yra geras.

Jei naudojate „pro mini“, pabandykite kuo greičiau paspausti iš naujo nustatymo mygtuką, kai pasirodys pranešimas „įkėlimas“.

Apie visus šiuos dalykus kalbama per PROGRAMAVIMO SAVO ARDUINO žingsnį.

Antra, patikrinkite visus ryšius tarp visko:

Jei jūsų arduino neįsijungia, tai akivaizdžiai yra įtampos problema. Patikrinkite, ar kabeliai nėra tinkamai prijungti ir ar nėra trumpojo jungimo.

Jei jis įjungiamas, bet neveikia, įsitikinkite, kad visos jungtys yra ten, kur turėtų būti, ar arduino, užprogramuotas prijungti prie servo ir įtampos skirstytuvo, tikrai yra prijungtas prie jų (kitaip tariant, įsitikinkite, kad nesumaišėte pabandykite paspausti abiejų jų atstatymo mygtuką ir pažiūrėkite, kas atsitiks. Ypač retais atvejais visa kaltė gali būti dėl NRF24 modulio. Radau vieną savo, kuris veikia tik 5 voltais, o kitą - tik 3.3v. Patikrinkite, ar tai ką nors išsprendžia. Man taip pat atsitiko, kad tik vienas arduino dirbo su 3.3v radiju, o kitas - tik su 5v. Stebina, ar ne?

Trečia, jei galite perkelti servo, bet įtampa neteisinga, patikrinkite, ar jungtys prie įtampos skirstytuvo yra tokios, kaip parodyta 3 veiksmo schemoje, ir ryšys su arduino. Kita vertus, jei jūs gaunate įtampą, bet negalite tinkamai perkelti servo, patikrinkite potenciometrą ir jo jungtis, servo prijungimą prie skaitmeninio kaiščio ir prie Vcc ir Gnd, ir jei servo įstrigo, sulūžo ar trumpasis jungimas. Pabandykite pakeisti kita servo sistema. Įsitikinkite, kad skaitmeninis kaištis yra tas pats, kuris nurodytas kode

Na, tai yra beveik visi dalykai, kurie man gali kilti į galvą dėl problemų, su kuriomis galite susidurti. Tikiuosi, kad jie niekada neįvyks ir laimingi projektai!

Dėkojame, kad perskaitėte mano instrukciją! Prašome pasidalinti ir balsuoti už PIRMO KARTO AUTORŲ konkursą!

Rekomenduojamas: