Kazalo:

SONIC LED POVRATNA NASTAVA: 7 korakov (s slikami)
SONIC LED POVRATNA NASTAVA: 7 korakov (s slikami)

Video: SONIC LED POVRATNA NASTAVA: 7 korakov (s slikami)

Video: SONIC LED POVRATNA NASTAVA: 7 korakov (s slikami)
Video: Кварцевый ламинат на пол. Все этапы. ПЕРЕДЕЛКА ХРУЩЕВКИ от А до Я #34 2024, November
Anonim
SONIC LED povratne informacije
SONIC LED povratne informacije
SONIC LED povratne informacije
SONIC LED povratne informacije
SONIC LED povratne informacije
SONIC LED povratne informacije

Zdravo ponovno, Sovražite, da vaš robot naleti na vse? To bo odpravilo to težavo. Z 8 zvočnimi senzorji je to videti zapleteno … v resnici pa sem to zelo olajšal. Poskušam objaviti projekte, ki vam pomagajo spoznati Arduino in pokazati koncept "zunaj škatle". Ta objava vam bo pomagala razumeti preklapljanje 595, pro-minis kot programabilni senzor in veliko uporabo povratnih informacij v realnem času. Če uživate v Arduinu kot "kopiraj in prilepi in vstavi", lahko to preprosto preskočite.

Rad uporabljam pro-mini. Stanejo približno 2,50 USD, delujejo kot popoln uno, namestitev glav pa jih naredi zelo prilagodljive. Uporablja se kot senzorski mikrofon, lahko pa naredite, da naredi, kar želite, namesto tega, kar narekuje kupljeno tipalo. Z I2C, ki uporablja samo 2 žici, jih je mogoče povezati skupaj na eni liniji. Torej, premakni se nad MEGA, imam lahko 4 minie, ki hkrati izvajajo 4 ločene vrstice kode, za samo 10,00 USD. Tukaj uporabljam mini, da prestrežem zvočne senzorje skozi 595 in prikažem vodilno razdaljo v realnem času. Nato samo delite 8bit podatkov z matično ploščo. To odstrani obremenitev z matične plošče in naredi njeno kodo zelo preprosto.

Pri zvočnih senzorjih je težava … brez vizualnih povratnih informacij. Nikoli ne veš, ali je senzor samo mrtva teža ali deluje! Verjamem, da je kdo, ki si je kdaj omislil 'BLINK', pametnejši od Einstine. Utripa samo ENO in svet informacij se posreduje. Tako zvočni senzor potrebuje povratne informacije v realnem času. Tu sem uporabil vrsto LED za spremljanje vsakega senzorja. Ne potrebujete jih, samo naredite senzorje brez LED. Toda imeti LED diode na tiskanem vezju je v pomoč.

1. korak: IZDELITE PCB

NAREDITE PCB
NAREDITE PCB
NAREDITE PCB
NAREDITE PCB
NAREDITE PCB
NAREDITE PCB
NAREDITE PCB
NAREDITE PCB

naredite PCB in se napolnite. POZOR … Napajal sem na tiskanem vezju pri 4 -polnih povezavah, da so se lahko priključili zvočni senzorji. ECHO in TRIGGER Vcc ter razlogi se bodo priključili na tiskano vezje. Za priključke ni dovolj prostora, zato sem ravnokar izdelal tiskano vezje s priključki. Tako lahko spajkate žični konektor na tiskano vezje in ga priključite na dejanske zvočne senzorje. Kar zadeva svetleče diode, sem na notranji rob postavil rumene, na zunanji pa rdeče. to vam pomaga videti na daljavo, če senzorji pravilno merijo.

To je eden izmed NEKAJ 2 -stranskih tiskanih vezij, ki sem jih kdaj naredil. Raje bi naredil 2 ea enostranske in tekače. Če pa želite LED zaslon, potrebujete vsaj zgornji tiskani tiskalnik. Pri prenosu sem ločil postavitev.

PCB je za pro-mini z A4-A5 znotraj roba glave. V vsakem primeru preprosto povežite A4-A5 z glavnim A4-A5. Ne pozabite tudi na Vcc in Grounds.

2. korak: MNOGE NAPAKE

MNOGE NAPAKE
MNOGE NAPAKE

Zdaj za moje napake … Poskušal sem sprožiti sprožilce naenkrat (vsi povezani skupaj) in ta vrsta je dobro delovala, vendar je prišlo do nekaj interakcij. Tako zdaj vsi ECHOS gredo v mikro (8), TRIGGERS pa nastavi 595. Še trije zatiči (3). Kar zadeva LED diode, multipleksiranje ne bo delovalo. Za vsak led potrebujete polni čas ON. To pomeni, da mora vsaka vrstica s 7 LED diodami imeti lastno 595. Ko posodobite 595, svetleče diode svetijo do naslednje posodobitve. Kjer multipleksiranje LED sveti samo tisto desetinko sekunde. To dobro deluje pri mojih bralcih in potrebuje namenski mikro. Ni časa za skeniranje 8 zvočnih senzorjev in merjenje razdalj. Poskušal sem in dosegel zelo slabe rezultate. Multipleksiranje LED bo pomenilo tudi mrežo vrstic + stolpcev, kar pomeni, da bo na PCB -ju približno 64+ vnosov.

Uporabil sem le 7 izhodov iz 595 zaradi nereda na tiskanem vezju. Na daljavo ne morete ugotoviti, ali obstaja samo 7 ali 8 LED diod samo po njihovem gibanju. Morda vas bo zamikalo, da bi vse svetleče diode privezali na en upor in to deluje, vendar se svetlost matrike spreminja glede na količino svetlečih LED. Zato je najboljši en upor na LED. Obožujem 595, če pa bi samo premaknili Vcc in 0-izhodne nožice ali naredili 18-polni IC z VSI izhodi na isti strani … bi bilo tako enostavno povezati vseh osem izhodov. Toda potem se ne bi prodajal za manj kot 30 centov.

3. korak: MONTAŽA SENZORJEV

MONTAŽNI SENZORJI
MONTAŽNI SENZORJI
MONTAŽNI SENZORJI
MONTAŽNI SENZORJI
MONTAŽNI SENZORJI
MONTAŽNI SENZORJI
MONTAŽNI SENZORJI
MONTAŽNI SENZORJI

Prilepite zvočne senzorje na pokrov za kavo. moški priključek mora biti upognjen navznoter na vsakem senzorju. To deluje bolje, če upognete en zatič naenkrat. Uporabil sem 2 stranski penasti trak, samo da so vibracije manjše. Moji senzorji so preblizu in potrebujejo prostor 1/4 palca, da se bolje ujemajo s tiskanim vezjem. Že prej sem uporabljal zvočne senzorje, včasih pa jih ni mogoče natančno izmeriti, zato morate to upoštevati. Zato jih ne prilepite za vedno.

Pomaga tudi, če pred vsako uporabite hitri test razdalje. Dobim približno en senzor s slabim odčitkom v seriji 20. Ni slabo za ceno, ki sem jo plačal.

4. korak: HARD WIRE

TRDA ŽICA
TRDA ŽICA

Mislil sem, da bo od računalnika do prostora za vtičnice in vtiče

zvočni zatiči, vendar mi je zmanjkalo prostora. Tako sem trdo ožičil konec tiskane plošče in pravkar odmeval in sprožil žice z ženskimi vtičnicami (8ea). 8ea Vcc in 8ea ozemljitve senzorjev sem povezal skupaj, tako da sta bili z njimi povezani samo na PCB.

Z 8 senzorji in 8 595s tega uno ali pro-mini ne more napajati. V okviru tega projekta mora biti 5V reguliran vir. Moj robot ima preprost 7805 @ 1amp iz baterij. To je povezano z vsemi 5V Vcc za vse naprave. 7805 pade okoli volta, zato za napajanje potrebujete vsaj 6,5 voltov. To sta 2 litijevi bateriji pri 3.3V. Moj robot ima stare nikade iz rabljenih vrtalnih paketov in 8 nikad vodi tipičen kitajski motor z napetostjo 12 V v šasiji tipa 20 USD.

5. korak: Prenesite SONIC SKIC

Prenesite SONIC SKIC
Prenesite SONIC SKIC

Prenesite skico in jo namestite. Obstaja veliko načinov za pogovor

še eno uno, vendar mi je všeč I2c. zmeda naslavlja in master/ slave. Tako kot pri večini senzorjev (2. mini si zamislite kot senzor) se obrnete na senzor in zahtevate x količino bajtov. ista stvar tukaj. V drugem mini odložite x količino bajtov, ki jih želite poslati. Zmeda je, da imena niso pomembna. Pomaga vam le, če si delite imena. Torej v skici pošljem 8 meritev zvočne razdalje v cm kot sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Poveljnik dobi samo 8 bajtov podatkov in te bajte lahko pokličete karkoli želite. Prebral sem jih kot gotR1, gotR2, got….. Poslani vrstni red bajtov je enak. Tako da bajti A, B, C….. ne mislite, da vam bo sprememba imena dala različne podatke. In drugi ulov, lahko prejmete samo podatke, za katere je rečeno, da jih je treba poslati. Torej, če želite druge podatke, morate spremeniti oba master in slave.

6. korak: KOMUNIKACIJA

KOMUNIKACIJA
KOMUNIKACIJA

To lahko preskočite, če veste, kako nastaviti 2 Uno -ja za medsebojni pogovor. Na koncu imam nekaj informacij. Za lažjo uporabo bom poklical uno v robotski bazi M1 in zvočni senzor kot S2. Vcc, ozemljitev, A4, A5 povežite med seboj.

Na skici za S2 se začne z #include

Nato ustvarite 8 bajtov za pošiljanje. bajt R1, bajt R2, bajt L1 itd. Uno je 8 -bitna mikro, zato pošiljajo 1 bajt hkrati z uporabo "bajt" namesto "int" je pravilno.

V 'setup ()' add 'Wire.begin (naslov)' to pove I2c, katera naprava je to. Naslov je običajno katera koli številka, ki vam je všeč, od 4 do 200. velikosti enega bajta. Tukaj sem uporabil številko 10. Torej, za pogovor s tem senzorjem S2 mora mojster poklicati Wire.requestFrom (10, 8). To je naslov 10, 8 pa koliko bajtov želite. Tudi v 'setup ()' dodajte Wire.onRequest (isr anyName). Ko M1 pokliče zahtevo, senzor S2 reagira s prekinitvijo. To samo pokliče funkcijo anyName. Zato je treba ustvariti to funkcijo anyName. Oglejte si skico in si oglejte funkcijo 'sendThis ()' Tu se bajti dejansko pošljejo v M1. Samo bajti gredo in NE imena in v poslanem vrstnem redu. Tu se začne velikost in količina podatkov za pošiljanje. V tem enostavnem formatu bajtov se morata pošiljati in prejemati. Tu je 8 poslanih in 8 prejetih bajtov. Ena opomba tukaj je, da klicanje funkcije zahteva (). Tako kot delay (), millis (), Serial.print (). Pri uporabi ISR (rutine prekinitvenih storitev) klicanje funkcije izpusti (). Torej Wire.onRequest (sendThis) ne Wire.onRequest (sendThis ()).

Moja zmeda je bila stvar gospodar/suženj. Sprva sem mislil, da je mojster VEDNO mojster. V skici pa lahko preklopite glavnega/podrejenega na zahtevo od drugih mikro ali pošiljanje na druge mikro. Dokler ste sledili osnovni obliki, opisani zgoraj. Ne pozabite … delite SAMO dodeljene podatke.

Dva stenska posnetka. ISR prekinitev samo prekinja med vrsticami skice. Če ste zaprti v zanki 'while ali for', se nič ne zgodi, dokler zanka ne zapusti. NI nič hudega, saj to lahko traja nekaj mikrosekund in so podatki stari.

Druga težava je v tem, da je "znotraj" mikro 100% izračun brez napak. Vsaka "zunanja" (žična) komunikacija je podvržena napakam. Obstaja veliko načinov za preverjanje, ali so posredovani podatki brez napak in se ujemajo z virom. Najlažji način je s kontrolno vsoto. Samo dodajte vsote pošiljajočih bajtov (dejanske vrednosti) in jih pošljite, na sprejemnem koncu pa vsote in preverite, ali se ujemajo. Če se ujemajo ali vržejo ta niz podatkov, če se ne ujemajo. Seveda to vključuje pošiljanje celovite vrednosti in ne bajtov. Torej celo število razdelite na bajt HI in LO in pošljete kot ločene bajte. Nato sestavite skupaj s sprejemnikom.

Enostavno:

int x = 5696; (vsaka veljavna vrednost int, največ 65k ali 32k negativno)

bajt hi = x >> 8; (22)

bajt lo = x; (64)

pošljite bajte in združite na drugem koncu….

bajt hi = Wire.read ();

bajt lo = Wire.read ();

int newx = (hi << 8) + lo; (5696)

7. korak: ZAPRTO

ZAPRTO
ZAPRTO
ZAPRTO
ZAPRTO
ZAPRTO
ZAPRTO
ZAPRTO
ZAPRTO

Za zapiranje ta zvočni senzor v realnem času daje matični plošči surove podatke o razdalji. To sprosti mikro in naredi skico veliko manj zapleteno. Mikro se lahko zdaj na podlagi dobrih podatkov namesto naključnih ugibanj dobro odloči za upočasnitev, obračanje, ustavitev ali vzvratno vožnjo. Oglejte si mojo drugo objavo o bluetooth IDE, če želite naložiti skice brez žic in morate ves čas povezovati svojega robota samo za hitro spremembo skice. Hvala za ogled tega. oldmaninsc.

Priporočena: