SONIC LED POVRATNA LISTA: 7 koraka (sa slikama)
SONIC LED POVRATNA LISTA: 7 koraka (sa slikama)
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

Bok opet, Mrzite što vaš robot naleti na sve? To će riješiti taj problem. S 8 zvučnih senzora ovo izgleda komplicirano … ali zapravo sam to jako olakšao. Pokušavam objaviti projekte koji vam pomažu naučiti o Arduinu i pokazati koncept 'izvan okvira'. Ovaj će vam post pomoći da razumijete 595 prebacivanje, pro-minis kao programabilni senzor i veliko korištenje povratnih informacija u stvarnom vremenu. Ako uživate u Arduinu kao "kopiraj i zalijepi i dodatak", ovo možeš jednostavno preskočiti.

Volim koristiti pro-mini. Koštaju oko 2,50 USD, rade kao potpuni uno, a instaliranje zaglavlja čini ih vrlo fleksibilnima. Koristeći se kao senzorski mikrofon, možete imati "radi što želite" umjesto onoga što nalaže kupljeni senzor. S I2C -om koji koristi samo 2 žice, oni se mogu povezati zajedno na jednu liniju. Dakle, pređite na MEGA -u, mogu imati 4 minisa koji istovremeno izvode 4 zasebna retka koda, za samo 10,00 USD. Ovdje koristim mini za prolaz zvučnih senzora kroz 595 i prikaz LED udaljenosti u stvarnom vremenu. Zatim samo podijelite 8 bita podataka s matičnom pločom. To skida opterećenje s matične ploče i čini njezin kod vrlo jednostavnim.

Postoji problem sa zvučnim senzorima … nema vizualnih povratnih informacija. Nikad ne znate je li senzor samo mrtva težina ili radi! Vjerujem da je tko god je smislio 'BLINK' pametniji od Einstine. Samo JEDAN vodi i svijet informacija prenosi se treptanjem. Dakle, zvučni senzor treba povratnu informaciju u stvarnom vremenu. Ovdje sam koristio niz LED dioda za nadzor svakog senzora. Ne trebaju vam, samo napravite senzore bez LED dioda. No, imati LED diode na PCB -u je od pomoći.

Korak 1: NAPRAVITE PCB

NAPRAVITE PCB
NAPRAVITE PCB
NAPRAVITE PCB
NAPRAVITE PCB
NAPRAVITE PCB
NAPRAVITE PCB
NAPRAVITE PCB
NAPRAVITE PCB

napraviti PCB i napuniti. OPREZ … Pogriješio sam na PCB -u pri 4 -polnim priključcima za uključivanje zvučnih senzora. ECHO i TRIGGER Vcc i podlozi namjeravali su se priključiti na PCB. Nema dovoljno mjesta za konektore pa sam upravo napravio tiskanu ploču s utičnicama. Tako možete lemiti žičani konektor na PCB i priključiti na stvarne zvučne senzore. Što se tiče LED dioda, na unutarnji rub stavljam žute LED diode, a na vanjske crvene. ovo vam pomaže da vidite na daljinu da li senzori ispravno mjere.

Ovo je jedan od NEKOLIKO dvostranih PCB -a koje sam ikada napravio. Radije bih napravio 2 ea jednostruke i trkačke skakače. No da biste dobili LED zaslon, trebate barem gornju ploču. U preuzimanju sam odvojio izgled.

PCB je za pro-mini s A4-A5 unutar rubnog zaglavlja. U svakom slučaju samo povežite A4-A5 s glavnim A4-A5. Ne zaboravite ni Vcc i Grounds.

Korak 2: MNOGE GREŠKE

MNOGE GREŠKE
MNOGE GREŠKE

Što se tiče mojih grešaka … Pokušao sam aktivirati Okidače odjednom (svi povezani) i ova vrsta je dobro funkcionirala, ali došlo je do nekih interakcija. Tako sada svi ECHOS -i idu na mikro (8), a TRIGGERS su postavljeni na 595. Još tri pina (3). Što se tiče LED dioda, multipleksiranje neće raditi. Za svaki LED diod potrebno vam je potpuno vrijeme uključivanja. To znači da svaki red od 7 LED dioda mora imati vlastiti 595. Kad ažurirate 595, LED diode ostaju upaljene do sljedećeg ažuriranja. Gdje multipleksiranje LED -a svijetli samo tu desetinku sekunde. To dobro funkcionira kod mojih čitatelja i potreban mu je namjenski mikrofon. Nema vremena za skeniranje 8 zvučnih senzora i mjerenje udaljenosti. Pokušao sam i dobio sam vrlo loše rezultate. Multipleksiranje LED dioda također će značiti mrežu redaka + stupaca, a to znači oko 64+ prolaza kroz PCB.

Koristio sam samo 7 izlaza s 595 zbog nereda na PCB -u. Na daljinu se ne može vidjeti postoji li 7 ili 8 LED dioda samo njihovim kretanjem. Možda ćete doći u napast da sve LED diode povežete za jedan otpornik i to funkcionira, ali svjetlina niza mijenja se s količinom lakih LED dioda. Dakle, jedan otpornik po LED diodi je najbolji. Obožavam 595, ali ako su samo premjestili Vcc i 0-izlazne pinove ili napravili 18-polni ic sa SVIM izlazima na istoj strani … povezivanje svih osam izlaza bilo bi tako jednostavno. Ali tada se ne bi prodavao za manje od 30 centi.

Korak 3: UGRADNJA SENZORA

MONTAŽNI OSJETNICI
MONTAŽNI OSJETNICI
MONTAŽNI OSJETNICI
MONTAŽNI OSJETNICI
MONTAŽNI OSJETNICI
MONTAŽNI OSJETNICI
MONTAŽNI OSJETNICI
MONTAŽNI OSJETNICI

Zalijepite zvučne senzore na poklopac kave. muški utikač treba saviti prema unutra na svakom senzoru. Ovo bolje funkcionira ako savijate jednu iglu odjednom. Koristio sam 2 bočne trake od pjene samo da bi vibracije bile manje. Moji su senzori preblizu i treba im 1/4 inča prostora kako bi bolje odgovarali PCB -u. Prije sam koristio zvučne senzore, a ponekad se ne uspije točno mjeriti i morate to imati na umu. Zato ih ne lijepite trajno.

Također vam pomaže da provedete brzi test udaljenosti na svakoj prije nego što ih upotrijebite. Dobivam otprilike jedan senzor sa lošim očitanjem u seriji od 20. Nije loše za cijenu koju sam platio.

Korak 4: ČVRSTA ŽICA

Tvrda žica
Tvrda žica

Mislio sam da će biti mjesta za utičnice i utikače od računala do

zvučne igle, ali ponestalo mi je mjesta. Pa sam čvrsto ožičio kraj PCB -a i upravo napravio žice za odjek i okidač sa ženskim utičnicama (8ea). Povezao sam uzemljivače 8ea Vcc i 8ea senzora zajedno tako da su to za njih učinile samo 2 veze s PCB -om.

S 8 senzora i 8 595s ovo uno ili pro-mini NE MOŽE napajati. U sklopu ovog projekta mora postojati 5V regulirani izvor. Moj robot ima jednostavno 7805 @ 1 amper iz baterija. To je povezano sa svim 5v Vcc za sve uređaje. 7805 pada oko volta pa vam je potrebno najmanje 6,5 volti za napajanje. To su 2 litijske baterije na 3.3v. Moj robot ima stare nicade iz rabljenih paketa bušilica, a 8 nicada pokreće tipični kineski motor s 12v pogonom u šasiji od 20 USD.

Korak 5: PREUZMITE SONIC SKICU

PREUZMI SONIC SKICU
PREUZMI SONIC SKICU

Preuzmite skicu i instalirajte. Postoji mnogo načina za razgovor

još jedno uno ali sviđa mi se I2c. zabuna je adresiranje i master/ slave. Kao i kod većine senzora (zamislite 2. mini kao senzor) obraćate se senzoru i tražite x količinu bajtova. ista stvar i ovdje. U drugom mini izdvojite x količinu bajtova koje želite poslati. Zabuna je što imena nisu važna. Samo vam pomaže da se sjetite ako podijelite imena. Dakle, u skici šaljem 8 mjerenja zvučne udaljenosti u cm kao sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Master samo dobiva 8 bajtova podataka i te bajtove možete nazvati kako god želite. Čitao sam ih kao gotR1, gotR2, got ….. Poslani red bajtova je isti. Dakle, bajtovi A, B, C ….. nemojte misliti da ćete promjenom imena dati različite podatke. A drugi ulov, možete primati samo podatke za koje je rečeno da se šalju. Dakle, ako želite druge podatke morate promijeniti OBA master i slave.

Korak 6: KOMUNIKACIJA

KOMUNIKACIJA
KOMUNIKACIJA

Ovo možete preskočiti ako znate postaviti 2 Uno -a za međusobno razgovaranje. Imam par sitnica na kraju. Kako bih olakšao, nazvat ću uno u bazi robota M1 i zvučni senzor kao S2. Spojite Vcc, uzemljenje, A4, A5 jedan s drugim.

Na skici za S2 počinje s #include

Zatim stvorite 8 bajtova za slanje. bajt R1, bajt R2, bajt L1 itd. Uno je 8 -bitni mikro pa šalju 1 bajt odjednom koristeći 'byte' umjesto 'int' je točno.

U 'setup ()' add 'Wire.begin (address)' ovo govori I2c o kojem se uređaju radi. Adresa je obično bilo koji broj koji vam se sviđa između 4 - 200. veličine jednog bajta. Ovdje sam upotrijebio broj 10. Dakle, za razgovor s ovim senzorom S2, gospodar mora pozvati Wire.requestFrom (10, 8). Ovo je adresa 10, a 8 je koliko bajtova je potrebno. Također u 'setup ()' dodajte Wire.onRequest (isr anyName). Kada M1 pozove zahtjev, senzor S2 reagira s prekidom. Ovo samo poziva funkciju anyName. Dakle, ovu funkciju anyName treba stvoriti. Pogledajte skicu i pogledajte funkciju 'sendThis ()' Ovdje se bajtovi zapravo šalju u M1. Idu samo bajtovi, a NE imena i poslani redoslijed. Tu počinje veličina i količina podataka za slanje. U ovom jednostavnom formatu bajtova slanje i primanje bi se trebali podudarati. Ovdje je poslano 8 i primljeno 8 bajtova. Jedna napomena ovdje je da pozivanje funkcije zahtijeva (). Kao i delay (), millis (), Serial.print (). Prilikom korištenja ISR -a (rutine prekida usluga) pozivanje funkcije ispušta (). Dakle Wire.onRequest (sendThis) ne Wire.onRequest (sendThis ()).

Zbunjenost koju sam imao bila je stvar gospodar/rob. Isprva sam mislila da je majstor Uvijek gospodar. No unutar skice možete prebaciti master/slave na zahtjev od drugih mikro ili poslati na druge mikro. Sve dok ste slijedili osnovni format naveden gore. Zapamtite … dijelite SAMO dodijeljene podatke.

Dva bita sa zida. Isr prekid samo prekida između redaka skice. Ako ste zaključani u petlji 'while ili for', ništa se ne događa dok petlja ne izađe. Ništa strašno jer ovo može potrajati nekoliko mikrosekundi i podaci su stari.

Drugi problem je što 'unutar' mikro računala postoji 100% izračun bez pogrešaka. Svaka "vanjska" (žičana) komunikacija podložna je pogreškama. Postoji mnogo načina za provjeru jesu li isporučeni podaci bez grešaka i odgovaraju li izvoru. Najjednostavniji način je s kontrolnim zbrojem. Samo dodajte ukupne iznose slanja bajtova (stvarne vrijednosti) i pošaljite zbrojeve, a na kraju primatelja dodajte zbroje i provjerite odgovaraju li. Ako se slažu u redu ili bacite taj skup podataka ako se ne slažu. Naravno to uključuje slanje cjelobrojne vrijednosti, a ne bajtova. Dakle, samo podijelite cijeli broj na HI bajt i LO bajt i pošaljite kao zasebne bajte. Zatim sastavite prijemnik.

LAKO:

int x = 5696; (bilo koja važeća vrijednost int, max je 65k ili 32k negativno)

bajt hi = x >> 8; (22)

bajt lo = x; (64)

pošaljite bajtove i kombinirajte na drugom kraju….

bajt hi = Wire.read ();

bajt lo = Wire.read ();

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

Korak 7: ZATVARANJE

ZATVARANJE
ZATVARANJE
ZATVARANJE
ZATVARANJE
ZATVARANJE
ZATVARANJE
ZATVARANJE
ZATVARANJE

Za zatvaranje, ovaj zvučni senzor daje matičnoj ploči neobrađene podatke o udaljenosti u stvarnom vremenu. To oslobađa mikro i čini skicu mnogo manje kompliciranom. Mikro sada može donijeti dobru odluku o usporavanju, okretanju, zaustavljanju ili obrnutom hodu na temelju dobrih podataka umjesto slučajnih nagađanja. Pogledajte moj drugi post o bluetooth IDE -u za postavljanje skica bez žica i stalno povezivanje vašeg robota samo radi brze izmjene u skici. Hvala što ste ovo pogledali. oldmaninsc.