Kazalo:

Rover z gestami z merilnikom pospeška in parom RF-oddajnik-sprejemnik: 4 koraki
Rover z gestami z merilnikom pospeška in parom RF-oddajnik-sprejemnik: 4 koraki

Video: Rover z gestami z merilnikom pospeška in parom RF-oddajnik-sprejemnik: 4 koraki

Video: Rover z gestami z merilnikom pospeška in parom RF-oddajnik-sprejemnik: 4 koraki
Video: Mars Reconnaissance Orbiter — самый большой телескоп на орбите другой планеты 2024, November
Anonim
Rover z gestami, ki ga upravljate s pomočjo merilnika pospeška in para RF-oddajnik-sprejemnik
Rover z gestami, ki ga upravljate s pomočjo merilnika pospeška in para RF-oddajnik-sprejemnik

Živijo, Ste si kdaj želeli zgraditi rover, s katerim bi lahko upravljali s preprostimi kretnjami z roko, vendar nikoli niste zbrali poguma, da bi se podali v zapletenost obdelave slik in povezovanje spletne kamere z mikrokrmilnikom, da ne omenjam težkega boja za premagovanje slabega dosega in linije težave z vidom? No, ne bojte se, ker obstaja enostaven izhod! Glejte, ko vam predstavljam mogočni POSPEŠEK! *ba dum tsss*

Merilnik pospeška je res kul naprava, ki meri gravitacijski pospešek vzdolž linearne osi. To predstavlja kot napetostni nivo, ki niha med ozemljitvijo in napajalno napetostjo, kar naš mikrokrmilnik bere kot analogno vrednost. Če malo uporabimo svoje možgane (le malo matematike in nekaj newtonske fizike), ne samo, da ga lahko uporabimo za merjenje linearnega gibanja vzdolž osi, temveč ga lahko uporabimo tudi za določanje kota nagiba in zaznavanja vibracij. Ne sekiraj se! Ne bomo potrebovali matematike ali fizike; ukvarjali se bomo samo s surovimi vrednostmi, ki jih merilnik pospeška izpljune. Pravzaprav vam ni treba veliko skrbeti glede tehnik merilnika pospeška za ta projekt. Dotaknil se bom le nekaj posebnosti in jih podrobno opisal, kolikor potrebujete za razumevanje splošne slike. Čeprav, če vas zanima preučevanje njene notranje mehanike, si oglejte tukaj.

Zaenkrat morate to imeti v mislih: merilnik pospeška je gizmo (pogosto skupaj z žiroskopom), ki odpira vrata vsem tistim igram s senzorji gibanja, ki jih igramo na pametnih telefonih; na primer dirkalna igra, v kateri vozilo preprosto usmerimo tako, da svoje naprave nagnemo v obe smeri. Ta učinek lahko posnemamo tako, da merilnik pospeška (seveda z nekaj pomožnimi sredstvi) prilepimo na rokavico. Nataknemo si čarobne rokavice in nagnemo roke levo ali desno, naprej ali nazaj in vidimo, kako naši roverji plešejo ob naših melodijah. Tukaj moramo le prevesti odčitke merilnika pospeška v digitalne signale, ki jih lahko motorji na roverju interpretirajo in oblikujejo mehanizem za prenos teh signalov na rover. Da bi to dosegli, kličemo dobrega starega Arduina in njegovih pomočnikov za današnji poskus, par RF oddajnik-sprejemnik, ki deluje pri 434 MHz, s čimer dobimo domet približno 100-150 m v odprtem prostoru, kar nas tudi rešuje pred linijo težave z vidom.

Precej krasen, kajne? Potopimo se…

1. korak: Zberite svoje zaloge

Zberite svoje zaloge
Zberite svoje zaloge
Zberite svoje zaloge
Zberite svoje zaloge
Zberite svoje zaloge
Zberite svoje zaloge
Zberite svoje zaloge
Zberite svoje zaloge
• Arduino Nano x1
• Merilnik pospeška (ADXL335) x1
• 5V DC motor + kolesa x2 vsak
• goveje kolo* x1
• Gonilnik motorja L293D + 16 -polna IC vtičnica x1 vsak
• RF oddajnik 434 MHz x1
• 434 MHz RF sprejemnik x1
• IC-dajalnik HT-12E IC + 18-polna IC vtičnica x1 vsak
• IC-vtičnica dekoderja HT-12D IC + 18-polna IC x1 vsak
• Regulator napetosti LM7805 x1
• Stikalno stikalo x2
• Rdeča LED + 330O upor x2 vsak
• Rumena LED + 330O upor x1 vsak
• Zelena LED + 330O upor (neobvezno) x4 vsak
• Upori 51kO in 1MO x1 vsak
• Radialni kondenzatorji 10 μF x2
Baterije, priključki za baterije, kabel USB, mostične žice, ženske glave, 2-polni vijačni sponki, tiskano vezje, ohišje in vaš običajni pribor za spajkanje

Če se sprašujete, zakaj uporabljamo goveje kolo, je stvar v tem, da imajo moduli RF oddajnika in sprejemnika le 4 podatkovne zatiče, kar pomeni, da lahko vozimo le 2 motorja in s tem uporabo govejega kolesa podpirajo strukturo. Če pa menite, da bi bil vaš rover s štirimi kolesi nekoliko bolj kul, ne skrbite, dela je naokoli! V tem primeru samo opraskajte goveje kolo s seznama in dodajte še en par 5V enosmernih motorjev, skupaj z vsakim kolesom, in poiščite preprost kramp, razpravljal proti koncu tretjega koraka.

Končno, za pogumne, obstaja možnost za še eno rahlo spremembo v oblikovanju, ki nekako vključuje inženiring vašega lastnega Arduina. V naslednjem koraku pojdite na razdelek bonus in se prepričajte sami. Potrebovali boste tudi nekaj dodatnih zalog: ATmega328P, 28pin vtičnico IC, 16MHz kristalni oscilator, dva 22pF keramična pokrova, še en regulator napetosti 7805, še dva radialna pokrova 10μF in upore 10kΩ, 680Ω, 330Ω in da, minus Arduino!

Korak: Priključite oddajnik

Povežite oddajnik
Povežite oddajnik
Povežite oddajnik
Povežite oddajnik
Povežite oddajnik
Povežite oddajnik
Povežite oddajnik
Povežite oddajnik

Projekt bomo razdelili na dve sestavini: oddajnik in sprejemnik. Oddajnik je sestavljen iz merilnika pospeška, Arduinovega in RF oddajnega modula, povezanega z IC-kodirnikom HT-12E, vse ožičeno v skladu s priloženo shemo.

Merilnik pospeška, kot je bil predstavljen prej, služi za prepoznavanje naših kretenj rok. Za zadovoljevanje svojih potreb bomo uporabili triosni merilnik pospeška (v bistvu tri enoosne merilnike pospeška v enem). Z njim lahko merimo pospešek v vseh treh dimenzijah in, kot ste morda uganili, ne daje ene, ampak niz treh analognih vrednosti glede na njene tri osi (x, y in z). Pravzaprav potrebujemo samo pospešek vzdolž osi x in y, saj lahko rover vozimo samo v štirih smereh: navzdol ali nazaj (t.j. po osi y) in levo ali desno (tj. Po osi x). Os Z bi potrebovali, če bi izdelovali brezpilotni letnik, tako da bi lahko tudi s kretnjami nadzorovali njegov vzpon ali spust. Vsekakor je treba te analogne vrednosti, ki jih daje merilnik pospeška, pretvoriti v digitalne signale, da bodo lahko poganjali motorje. Za to skrbi Arduino, ki te signale ob pretvorbi tudi prenaša na rover prek modula RF oddajnika.

RF-oddajnik ima samo eno nalogo: prenašati "serijske" podatke, ki so na voljo na pin 3, iz antene na pin 1. To zagovarja uporabo HT-12E, 12-bitnega paralelnega dajalnika podatkov, ki zbira do 4 bitov vzporednih podatkov iz Arduina na linijah AD8 do AD11, kar nam omogoča, da naredimo prostor za do 24 = 16 različnih V/I kombinacij v nasprotju z enim samim podatkovnim zatičem na RF oddajniku. Preostalih 8 bitov, vlečenih iz vrstic A0 do A7 na dajalniku, sestavljajo naslovni bajt, ki olajša združevanje RF oddajnika z ustreznim RF sprejemnikom. 12 bitov se nato sestavi in zaporedoma posreduje na podatkovni zatič RF-oddajnika, ki nato ASK-modulira podatke na nosilni val 434MHz in jih požene preko antene na pin 1.

Konceptualno bi moral vsak RF sprejemnik, ki posluša pri 434 MHz, te podatke prestreči, demodulirati in dekodirati. Naslovne vrstice na HT-12E in tiste na nasprotni strani HT-12D (12-bitni zaporedni-vzporedni dekodirnik podatkov) nam omogočajo, da par RF oddajnik-sprejemnik naredimo edinstven tako, da podatke usmerimo samo v predvideni sprejemnik in s tem omeji komunikacijo z vsemi drugimi. Vse, kar se od nas zahteva, je, da naslovne vrstice konfiguriramo enako na obeh straneh. Na primer, ker smo ozemljili vse naslovne vrstice za naš HT-12E, moramo storiti enako za HT-12D na sprejemnem koncu, sicer rover ne bo mogel sprejeti signalov. Na ta način lahko z enim oddajnim vezjem krmilimo tudi več roverjev z enakim konfiguriranjem naslovnih linij na HT-12D na vsakem sprejemniku. Ali pa bi si lahko nadeli dve rokavici, od katerih je vsaka pritrjena s oddajnim vezjem, ki vsebuje ločeno konfiguracijo naslovne vrstice (recimo, eno z ozemljenimi vsemi naslovnimi vrsticami, drugo pa z visoko držo, ali eno z eno vrvico ozemljeno, medtem ko preostalih sedem drži visoko, druga pa z dvema ozemljenima črtama, preostalih šest pa visoko ali katera koli druga kombinacija) in vsak krmili več identično konfiguriranih roverjev. Igrajte maestra na simfoniji android!

Ena pomembna stvar, ki jo je treba upoštevati pri sestavljanju vezja, je vrednost Rosca. HT-12E ima notranji oscilatorni krog med zatiči 15 in 16, ki je omogočen s priključitvijo upora, imenovanega Rosc, med temi zatiči. Vrednost, izbrana za Rosc, dejansko določa frekvenco oscilatorja, ki se lahko razlikuje glede na napajalno napetost. Izbira ustrezne vrednosti za Rosc je ključnega pomena za delovanje HT-12E! V idealnem primeru bi morala biti frekvenca oscilatorja HT-12E 1/50-kratna od frekvence HT-12D. Zato, ker delujemo na 5V, smo za Rosc za vezja HT-12E oziroma HT-12D izbrali 1MΩ in 51kΩ upor. Če nameravate delovati z vezji na drugačni napajalni napetosti, glejte graf »Frekvenca oscilatorja proti napajalni napetosti« na strani 11 priloženega podatkovnega lista HT-12E, da določite natančno frekvenco oscilatorja in upor, ki ga želite uporabiti.

Kot stransko opombo bomo tukaj uporabili ženske glave (ki imajo podoben namen kot vtičnice IC) za priključitev merilnika pospeška, RF oddajnika in Arduina v vezje, namesto da jih neposredno spajkamo na tiskano vezje. Namen je namestitev majhne komponente za večkratno uporabo. Recimo, minilo je že kar nekaj časa, odkar ste rover, ki ga upravljate s kretnjami, samo sedel, napol pokrit s prahom, na vaši polici s trofejami in naleteli ste na drugo odlično navodilo, ki povečuje učinkovitost merilnika pospeška. Torej kaj počneš? Preprosto ga izvlečete iz roverja in ga potisnete v novo vezje. Ni vam treba klicati "Amazonk", da bi dobili novega:-p

Bonus: Odpravite Arduino in vendar ne

Za vsak slučaj, če se počutite malo bolj pustolovski, še posebej, če menite, da je poraba tega čudovito oblikovanega čudeža (seveda Arduino) za tako malenkostno nalogo, kot je naša, nekoliko pretirana, zdržite še malo; če ne, pa preskočite na naslednji korak.

Naš cilj je, da Arduino (pravzaprav možgani Arduina; ja, govorim o ATmega IC!) Postane stalni član ekipe. ATmega bi bila programirana tako, da vedno znova izvaja samo eno skico, tako da bi lahko služila kot večni del vezja, tako kot HT-12E-zgolj IC, ki samo sedi tam in počne, kar naj bi. Ali ne bi moral biti takšen pravi vgrajen sistem?

Kakor koli, če želite nadaljevati s to nadgradnjo, samo spremenite vezje v skladu z drugo priloženo shemo. Tukaj preprosto zamenjamo ženske vtiče za Arduino z vtičnico IC za ATmega, dodamo 10K vlečni upor na ponastavitvenem zatiču (pin 1) IC in ga napolnimo z zunanjo uro med zatiči 9 in 10 Na žalost, če odpravimo Arduino, opustimo tudi vgrajene regulatorje napetosti; zato moramo ponoviti vezje LM7805, ki smo ga uporabili za sprejemnik tudi tukaj. Poleg tega uporabljamo tudi delilnik napetosti za črpanje 3,3 V, potrebnega za napajanje merilnika pospeška.

Zdaj je edini drug ulov programiranje ATmega za opravljanje svojega dela. Boste pa morali počakati do 4. koraka. Torej, spremljajte se…

3. korak: In sprejemnik

In sprejemnik
In sprejemnik
In sprejemnik
In sprejemnik
In sprejemnik
In sprejemnik
In sprejemnik
In sprejemnik

Sprejemnik je sestavljen iz RF sprejemnega modula, povezanega z IC dekodirnikom HT-12D, in para enosmernih motorjev, ki delujejo s pomočjo gonilnika motorja L293D, vsi ožičeni po priloženi shemi.

Edina naloga RF sprejemnika je demodulacija nosilnega vala (sprejetega prek njegove antene na pin 1) in upodobitev pridobljenih "serijskih" podatkov na pin 7, od koder jih HT-12D pobere za deserializacijo. Zdaj, ob predpostavki, da so naslovne vrstice (A0 do A7) na HT-12D konfigurirane identično s svojim nasprotnikom HT-12E, se 4 vzporedni bitovi podatkov ekstrahirajo in posredujejo prek podatkovnih vrstic (D8 do D11) na HT-12D, vozniku motorja, ta pa razlaga te signale za pogon motorjev.

Še enkrat bodite pozorni na vrednost Rosca. Tudi HT-12D ima notranji oscilatorni krog med zatiči 15 in 16, ki je omogočen s priključitvijo upora, imenovanega Rosc, med temi zatiči. Vrednost, izbrana za Rosc, dejansko določa frekvenco oscilatorja, ki se lahko razlikuje glede na napajalno napetost. Izbira ustrezne vrednosti za Rosc je ključnega pomena za delovanje HT-12D! V idealnem primeru bi morala biti frekvenca oscilatorja HT-12D 50-krat večja od frekvence HT-12E. Zato, ker delujemo na 5V, smo za Rosc za vezja HT-12E oziroma HT-12D izbrali 1MΩ in 51kΩ upor. Če nameravate delovati z vezji na drugačni napajalni napetosti, glejte graf »Frekvenca oscilatorja proti napajalni napetosti« na strani 5 priloženega podatkovnega lista HT-12D, da določite natančno frekvenco oscilatorja in upor, ki ga želite uporabiti.

Ne pozabite tudi na ženske glave za RF sprejemnik.

Izbirno lahko LED priklopimo preko 330Ω ohranitve tokovnega upora na vsakega od štirih podatkovnih zatičev HT-12D, da pomagamo določiti sprejeti bit na tem pin. LED bi zasvetila, če je prejeti bit VISOK (1), in bi ugasnila, če je prejeti bit LOW (0). Druga možnost je, da je na VT-vtič HT-12D (spet preko 330Ω ohranitvenega upora) pritrjena ena LED, ki bi zasvetila v primeru veljavnega prenosa.

Zdaj, če iščete kramp z motorji, o katerih sem govoril v prvem koraku, je prekleto enostavno! Dva motorja v vsakem kompletu povežite vzporedno, kot je prikazano na drugi shemi. To deluje tako, kot bi moralo, ker motorji v vsakem sklopu (sprednji in zadnji motor na levi ter sprednji in zadnji motor na desni) nikoli ne vozijo v nasprotnih smereh. To pomeni, da je za obračanje roverja v desno treba sprednji in zadnji motor na levi strani poganjati naprej, spredaj in zadaj pa na desno. Podobno, če želite rover zaviti levo, morate sprednji in zadnji motor na levi strani voziti nazaj, sprednji in zadnji motor na desni pa obe naprej. Zato je varno napajanje v istem paru napetosti na oba motorja v kompletu. To lahko storite tako, da preprosto priklopite motorje vzporedno.

4. korak: Nadaljujte s kodo

Nadaljujte s kodeksom
Nadaljujte s kodeksom

Le eno stvar morate narediti, da rover zaženete. Ja, prav ste uganili! (Upam, da ste to storili) Še vedno moramo prevesti odčitke merilnika pospeška v obliko, ki jo lahko voznik motorja razlaga, da lahko poganja motorje. Če mislite, da so odčitki merilnika pospeška analogni in gonilnik motorja pričakuje digitalne signale, bomo morali implementirati nekakšen ADC, no, ne tehnično, ampak to moramo nekako narediti. In to precej preprosto.

Vemo, da merilnik pospeška meri gravitacijski pospešek vzdolž linearne osi in da je ta pospešek predstavljen kot nivo napetosti, ki niha med zemljo in napajalno napetostjo, kar naš mikrokrmilnik bere kot analogno vrednost, ki se giblje med 0 in 1023. Toda, ker smo Če merilnik pospeška uporabljate pri 3.3V, je priporočljivo, da analogno referenco za 10-bitni ADC (ki je integriran v ATmeaga na krovu Arduina) nastavite na 3.3V. Poenostavilo bo razumevanje stvari; čeprav za naš mali poskus ne bo veliko pomembno, tudi če tega ne bi storili (kodo bomo morali le malo popraviti). Če želite to narediti, preprosto priključimo AREF pin na Arduinu (pin 21 na ATmegi) na 3.3V in označimo to spremembo kode s klicem analogReference (EXTERNAL).

Zdaj, ko merilnik pospeška položimo ravno in analogno (beremo pospešek vzdolž osi x in y (se spomnite? Rabimo samo ti dve osi), dobimo vrednost približno 511 (tj. Na pol poti med 0 in 1023), kar je le Tako lahko rečemo, da je vzdolž teh osi 0 pospeškov. Namesto da se poglobite v podrobnosti dejstva, si to predstavljajte kot osi x in y na grafu, pri čemer vrednost 511 označuje izvor, 0 in 1023 pa končni točki, kot je prikazano na sliki; merilnik pospeška usmerite tako, da bodo njegovi zatiči usmerjeni navzdol in vas bodo držali bližje, sicer lahko obrnete/zamenjate osi. To pomeni, da bi morali, če merilnik pospeška nagnemo v desno, prebrati vrednost, večjo od 511 vzdolž osi x, če pa merilnik pospeška nagnemo v levo, bi morali dobiti vrednost, nižjo od 511 vzdolž osi x. Podobno, če merilnik pospeška nagnemo naprej, bi morali odčitati vrednost, večjo od 511 vzdolž osi y, če pa merilnik pospeška nagnemo nazaj, bi morali prebrati vrednost, nižjo od 511 vzdolž osi y. Tako v kodi sklepamo, v katero smer bi morali voziti rover. To pa tudi pomeni, da moramo merilnik pospeška držati zares mirno in poravnano vzporedno z ravno površino, da lahko beremo 511 vzdolž obeh osi da bo rover še vedno parkiran. Da bi to nalogo nekoliko olajšali, določimo določene pragove, ki tvorijo mejo, kot prikazuje slika, tako da rover ostane miren, dokler sta odčitka x in y znotraj meja in zagotovo vemo, da mora biti rover nastavljen v gibanje, ko je prag presežen.

Če na primer na osi y piše 543, vemo, da je merilnik pospeška nagnjen naprej, zato moramo rover usmeriti naprej. To naredimo tako, da nožice D2 in D4 nastavimo na VISOKO ter na zatiči D3 in D5 NIZKO. Ker so ti zatiči priključeni neposredno na HT-12E, se signali zaporedno sestavijo in sprožijo RF-oddajnik, le da ga RF-sprejemnik, ki sedi na roverju, ujame, kar s pomočjo HT-12D deserializira signale in jih posreduje na L293D, ta pa razlaga te signale in poganja motorje naprej

Morda bi radi spremenili te pragove, da umerite občutljivost. Enostaven način za to je, da merilnik pospeška preprosto priključite na svoj Arduino in zaženete skico, ki izpiše odčitke x in y na serijski monitor. Zdaj pa le malo pomaknite merilnik pospeška, poglejte skozi odčitke in se odločite za pragove.

In to je to! Naložite kodo na svoj Arduino in uživajte !! Ali pa morda ne tako kmalu:-(Če niste preskočili oddelka za bonus, bi nalaganje kode v vašo ATmego pomenilo malo več dela. Imate dve možnosti:

Možnost A: Uporabite serijsko napravo USB, kot je osnovna odklopna plošča FTDI FT232. Preprosto napeljite žice od glave TTL do ustreznih nožic na ATmegi, kot je prikazano spodaj:

Zatiči na plošči Breakout Board Zatiči na mikrokrmilniku
DTR/GRN RST/ponastavitev (pin 1) prek pokrovčka 0,1 μF
Rx Tx (pin 3)
Tx Rx (pin 2)
Vcc +5v izhod
CTS (neuporabljeno)
Gnd Tla

Zdaj priključite en konec kabla USB v ploščo za odklop, drugega pa v računalnik in naložite kodo, kot običajno: zaženite Arduino IDE, izberite ustrezna serijska vrata, nastavite vrsto plošče, sestavite skico in pritisnite nalaganje.

Možnost B: Uporabite UNO, če nekje leži. Samo priključite vaš ATmega v UNO, naložite kodo kot običajno, izvlecite IC in jo potisnite nazaj v vezje oddajnika. Tako enostavno kot pita!

Vsaka od teh možnosti bi morala delovati, ob predpostavki, da ste bili dovolj pametni, da ste zagon nalagalnika pred roko zapisali na svoji ATmegi, ali če ste bili še pametnejši, da kupite ATmego z že nameščenim zagonskim nalagalnikom. Če ne, nadaljujte in sledite korakom, opisanim tukaj.

Andddd, uradno smo končali! Upam, da ste uživali v tem bizarno dolgem navodilu. Zdaj pa nadaljujte, dokončajte izdelavo svojega roverja, če še niste končali, igrajte se z njim nekaj časa in se vrnite, da spodaj odsek komentarjev preplavite z vprašanji in/ali konstruktivnimi kritikami.

Hvala

P. S. Razlog, da nisem naložil nobene slike dokončanega projekta, je, ker ga nisem dokončal sam. Na polovici izgradnje sem pomislil na nekaj povečanj, kot so nadzor hitrosti, izogibanje oviram in morda LCD na roverju, kar pravzaprav ni tako težko, če uporabimo mikrokrmilnik tako na oddajnem kot na sprejemnem koncu. Ampak, zakaj tega ne bi storili na težji način ?! Torej, trenutno delam v tej smeri in objavil bom posodobitev takoj, ko bo obrodila sadove. Vendar sem kodo in zasnovo preizkusil s pomočjo hitrega prototipa, ki sem ga zgradil z uporabo modulov iz enega od mojih prejšnjih projektov; video si lahko ogledate tukaj.

Priporočena: