Cuprins:

FEEDBACK LED SONIC: 7 pași (cu imagini)
FEEDBACK LED SONIC: 7 pași (cu imagini)

Video: FEEDBACK LED SONIC: 7 pași (cu imagini)

Video: FEEDBACK LED SONIC: 7 pași (cu imagini)
Video: Sony a7IV - Review pentru fotografi 2024, Decembrie
Anonim
FEEDBACK LED SONIC
FEEDBACK LED SONIC
FEEDBACK LED SONIC
FEEDBACK LED SONIC
FEEDBACK LED SONIC
FEEDBACK LED SONIC

Buna din nou, Urăști că robotul tău dă peste tot? Aceasta va remedia problema. Cu 8 senzori sonici acest lucru pare complicat … dar de fapt am făcut acest lucru foarte ușor. Încerc să postez proiecte care vă ajută să aflați despre Arduino și să arăt un concept „în afara cutiei”. Această postare vă va ajuta să înțelegeți comutarea 595, pro-minis ca senzor programabil și utilizarea pe scară largă a feedback-ului condus în timp real. Dacă vă place Arduino ca „copiere și lipire și plug-in”, s-ar putea să ignorați acest lucru.

Îmi place să folosesc pro-mini-uri. Acestea sunt de aproximativ 2,50 USD, funcționează ca unul complet, iar instalarea anteturilor le face foarte flexibile. Folosit ca senzor micro, îl poți face „să faci ce vrei” în loc de ceea ce dictează un senzor achiziționat. Cu I2C folosind doar 2 fire, acestea pot fi legate împreună pe toate pe o singură linie. Deci, treceți peste MEGA. Pot avea 4 minis care rulează 4 linii separate de cod, toate în același timp, la doar 10,00 USD. Aici folosesc un mini pentru a trece senzorii sonici printr-un 595 și pentru a afișa distanța condusă în timp real. Apoi, trebuie doar să partajați 8 biți de date cu placa de bază. Acest lucru scoate sarcina de pe placa de bază și face codul ei foarte simplu.

Există o problemă cu senzorii sonici … fără feedback vizual. Nu știi niciodată dacă senzorul este doar greutate sau funcționează! Cred că cine a venit vreodată cu „BLINK” este mai inteligent decât Einstine. Doar un LED și o lume a informațiilor sunt transmise prin clipire. Deci, un senzor sonic are nevoie de feedback în timp real. Aici am folosit o serie de led-uri pentru a monitoriza fiecare senzor. Nu aveți nevoie de ele, faceți senzorii fără leduri. Dar este util să aveți led-uri pe PCB.

Pasul 1: Faceți PCB

FACE PCB
FACE PCB
FACE PCB
FACE PCB
FACE PCB
FACE PCB
FACE PCB
FACE PCB

face PCB și populează. ATENȚIE … Am făcut o greșeală la PCB la conexiunile cu 4 pini pentru conectarea senzorilor sonici. ECHO și TRIGGER Vcc și terenurile urmau să se conecteze la PCB. Nu există suficient spațiu pentru conectori, așa că tocmai am făcut PCB-ul cu pin-out-uri. Deci, puteți lipi un conector de sârmă pe PCB și conectați-l la senzorii sonici reali. În ceea ce privește ledurile, am pus leduri galbene la marginea interioară și roșu la exterior. acest lucru vă ajută să vedeți la distanță dacă senzorii măsoară corect.

Acesta este unul dintre puținele PCB 2side pe care le-am făcut vreodată. Aș prefera să fac 2 părți unice și să alerg jumperi. Dar pentru a obține afișajul cu LED-uri aveți nevoie cel puțin de PCB-ul de sus. Am separat aspectul în descărcare.

PCB este pentru un pro-mini cu A4-A5 în interiorul antetului de margine. Oricum, conectați A4-A5 la Master A4-A5. Nu uitați și Vcc și Grounds.

Pasul 2: MULTE GREȘE

MULTE GRESELI
MULTE GRESELI

Acum, pentru greșelile mele … Am încercat să deschid declanșatoarele dintr-o dată (toate legate împreună) și acest fel a funcționat bine, dar au avut loc unele interacțiuni. Deci, acum toate ECHOS merg la micro (8), iar TRIGGERS sunt setate de un 595. Încă trei pini (3). În ceea ce privește ledurile, multiplexarea nu va funcționa. Aveți nevoie de un timp de pornire complet pentru fiecare led. Aceasta înseamnă că fiecare rând de 7 led-uri trebuie să aibă propriul 595. Odată ce actualizați 595, led-urile rămân aprinse până la următoarea actualizare. În cazul în care multiplexarea ledurilor se aprinde numai pentru acea zecime de secundă. Acest lucru funcționează bine în cititorii mei și are nevoie de un micro dedicat. Nu este timp pentru scanarea a 8 senzori sonori și măsurarea distanțelor. Am încercat și am obținut rezultate foarte slabe. Multiplexarea led-urilor va însemna, de asemenea, o rețea de rând + coloană și asta înseamnă aproximativ 64+ treceri de alimentare în PCB.

Am folosit doar 7 ieșiri din 595 din cauza dezordinii de pe PCB. La distanță nu se poate spune dacă există 7 sau 8 led-uri doar mișcarea lor. S-ar putea să fiți tentați să legați toate led-urile la un singur rezistor și acest lucru funcționează, dar luminozitatea matricei se modifică cu cantitatea de led-uri care sunt mici. Deci, un rezistor pe led este cel mai bun. Îmi place 595, dar dacă ar muta doar pinii Vcc și 0-out sau ar face un pin cu 18 pini cu TOATE ieșirile pe aceeași parte … conectarea celor opt ieșiri ar fi atât de ușoară. Dar atunci nu s-ar vinde cu mai puțin de 30 de cenți.

Pasul 3: MONTAȚI SENZORII

SENZORI DE MONTARE
SENZORI DE MONTARE
SENZORI DE MONTAJ
SENZORI DE MONTAJ
SENZORI DE MONTARE
SENZORI DE MONTARE
SENZORI DE MONTAJ
SENZORI DE MONTAJ

Lipiți senzori sonici pe capacul cafelei. cricul de sex masculin trebuie să fie îndoit spre fiecare senzor. Acest lucru funcționează mai bine dacă îndoiți câte un știft odată. Am folosit 2 benzi laterale de spumă, astfel încât vibrațiile să fie mai mici. Senzorii mei sunt prea aproape și au nevoie de un spațiu de 1/4 inch pentru a se potrivi mai bine cu PCB. Am folosit anterior senzori sonori și uneori unul nu reușește să măsoare cu precizie și trebuie să țineți cont de acest lucru. Deci, nu le lipiți pe toate permanent.

De asemenea, vă ajută să efectuați un test rapid la distanță pe fiecare înainte de a le utiliza. Primesc aproximativ un senzor cu o citire slabă într-un lot de 20. Nu este rău pentru prețul pe care l-am plătit.

Pasul 4: Sârmă HARD

Sârmă dură
Sârmă dură

Am crezut că va fi loc pentru mufe și prize de la PC la

pini sonori dar am rămas fără cameră. Așa că am conectat extrem de mult capătul PCB și tocmai am făcut ecou și am declanșat fire cu mufe de sex feminin (8ea). Am legat terenurile 8ea Vcc și 8ea ale senzorilor, astfel încât acest lucru a făcut doar 2 conexiuni la PCB pentru ei.

Cu 8 senzori și 8 595s un uno sau pro-mini NU POATE alimenta acest lucru. Trebuie să existe o sursă de 5V reglementată ca parte a acestui proiect. Robotul meu are un 7805 @ 1amp simplu de la baterii. Acest lucru se leagă de toate cele 5V Vcc pentru toate dispozitivele. 7805 scade aproximativ un volt, deci aveți nevoie de cel puțin 6,5 volți pentru al alimenta. Adică 2 baterii litiu la 3.3v. Robotul meu are nicad-uri vechi din pachete de burghiu second-hand și 8 nicad-uri rulează motorul tipic cu 12v din China, cu șasiu de tip rezervor de 20 USD.

Pasul 5: DESCARCĂ SONIC SKETCH

DESCĂRCAȚI SONIC SKETCH
DESCĂRCAȚI SONIC SKETCH

Descărcați schița și instalați. Există multe modalități de a vorbi

încă unul, dar îmi place I2c. confuzia se adresează și stăpân / sclav. Ca și în cazul majorității senzorilor (gândiți-vă la al doilea mini ca senzor), vă adresați senzorului și solicitați x cantitatea de octeți. același lucru aici. În al 2-lea mini, puneți deoparte x cantitatea de octeți pe care doriți să îi trimiteți. Confuzia este că numele nu contează. Vă ajută să vă amintiți doar dacă împărtășiți numele. Deci, în schiță, trimit cele 8 măsurători ale distanței sonore în cm ca sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Maestrul primește doar 8 octeți dacă sunt date și puteți apela acești octeți oricum doriți. Le-am citit ca gotR1, gotR2, got ….. Ordinea trimisă de octeți este aceeași. Deci octetul A, B, C ….. nu credeți că schimbarea numelui vă va oferi date diferite. Și cealaltă captură, puteți primi doar date despre care se spune că vor fi trimise. Deci, dacă doriți alte date, trebuie să schimbați ambele master și slave.

Pasul 6: COMUNICARE

COMUNICARE
COMUNICARE

Puteți sări peste asta dacă știți cum să configurați 2 Uno pentru a vorbi între ei. Am la final câteva informații. Pentru a fi mai ușor, voi numi uno din baza robotului M1 și senzorul sonic ca S2. Conectați Vcc, masă, A4, A5 între ele.

În schița pentru S2 începe cu #include

Apoi creați cei 8 octeți de trimis. octetul R1, octetul R2, octetul L1 etc. Uno este un micro de 8 biți, așa că trimit câte 1 octeți folosind „octeți” în loc de „int” este corect.

În „setup ()” adăugați „Wire.begin (address)”, acesta îi spune lui I2c ce dispozitiv este acesta. Adresa este de obicei orice număr doriți între 4 - 200. dimensiunea unui octet. Aici am folosit numărul 10. Deci, pentru a vorbi cu acest senzor S2, masterul trebuie să sune la Wire.requestFrom (10, 8). Aceasta este adresa 10, iar 8 este numărul de octeți dorit. De asemenea, în „setup ()” adăugați Wire.onRequest (isr anyName). Când M1 apelează solicitarea, senzorul S2 reacționează cu întreruperea. Aceasta apelează doar funcția anyName. Deci, această funcție anyName trebuie creată. Uită-te la schiță și vezi funcția 'sendThis ()' Aici sunt de fapt trimiși octeții către M1. Numai octeții merg și NU numele și ordinea trimisă. De aici începe dimensiunea și cantitatea de date de trimis. În acest format ușor de octeți, trimiterea și primirea ar trebui să se potrivească. Aici 8 octeți trimiși și 8 octeți primiți. O notă aici este că apelarea unei funcții necesită (). Ca întârziere (), milis (), Serial.print (). Când utilizați un ISR (întrerupere rutină de serviciu), apelarea funcției renunță la (). Deci Wire.onRequest (sendThis) nu Wire.onRequest (sendThis ()).

Confuzia pe care o aveam era chestia stăpân / sclav. La început am crezut că stăpânul este ÎNTOTDEAUNA stăpânul. Dar în schiță puteți comuta master / slave pentru a solicita de la alți micros sau pentru a trimite la alți micros. Atâta timp cât ați urmat formatul de bază descris mai sus. Amintiți-vă … împărtășiți DOAR datele care au fost atribuite.

Două bucăți de perete. Întreruperea ISR întrerupe doar între liniile de schiță. Dacă sunteți blocat într-o buclă „în timp ce sau pentru”, nu se întâmplă nimic până când bucla nu iese. NU este mare lucru deoarece acestea pot fi de câteva microsecunde și datele sunt vechi.

Cealaltă problemă este că „în interiorul” unui micro există un calcul 100% fără erori. Orice comunicare „exterioară” (fire) este supusă erorilor. Există multe modalități de a verifica dacă datele livrate nu conțin erori și se potrivesc cu sursa. Cel mai simplu mod este cu suma de control. Doar adăugați totalurile octeților de trimitere (valori reale) și trimiteți totalurile și la capătul de recepție adăugați totalurile și vedeți dacă se potrivesc. Dacă se potrivesc ok sau aruncă setul de date dacă nu. Desigur, aceasta implică trimiterea unei valori întregi și nu a octeților. Deci, pur și simplu împărțiți întregul în octetul HI și octetul LO și trimiteți ca octeți separați. Apoi puneți împreună la receptor.

UŞOR:

int x = 5696; (orice valoare int valabilă, max este de 65k sau 32k negativ)

octet hi = x >> 8; (22)

octet lo = x; (64)

trimiteți octeții și combinați la celălalt capăt …

octet hi = Wire.read ();

byte lo = Wire.read ();

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

Pasul 7: ÎNCHIDERE

ÎNCHIDERE
ÎNCHIDERE
ÎNCHIDERE
ÎNCHIDERE
ÎNCHIDERE
ÎNCHIDERE
ÎNCHIDERE
ÎNCHIDERE

Pentru a închide, acest senzor sonic oferă placa de bază date brute despre distanță în timp real. Acest lucru eliberează micro și face schița mult mai puțin complicată. Micro-ul poate lua acum o decizie bună de a încetini, roti, opri sau inversa pe baza unor date bune în loc de presupuneri aleatorii. Vedeți cealaltă postare despre Bluetooth IDE pentru a încărca schițe fără fire și a fi nevoit să vă conectați robotul tot timpul pentru doar o schimbare rapidă în schița dvs. Vă mulțumim pentru vizionare. oldmaninsc.

Recomandat: