Cuprins:
- Pasul 1: Resurse
- Pasul 2: Înțelegerea modului în care funcționează detectarea în infraroșu (opțional)
- Pasul 3: Asamblarea LED-urilor IR
- Pasul 4: Testarea perechilor cu infraroșu - Circuit
- Pasul 5: Testarea perechilor cu infraroșu - Cod de bază
- Pasul 6: Testarea perechilor cu infraroșu - Hardware + Software
- Pasul 7: Depanare (pentru probleme cu ultimul pas)
- Pasul 8: A doua pereche IR
- Pasul 9: detectarea interferențelor cu infraroșu (opțional)
- Pasul 10: Adăugarea mai multor perechi IR
- Pasul 11: Cinci perechi IR - Circuit
- Pasul 12: Cinci perechi IR - Cod
Video: Boe-Bot cu detectoare cu infraroșu: 12 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Acest instructable va demonstra cum să construiască și să codeze un Boe-Bot care poate naviga într-un labirint folosind detectoare cu infraroșu pentru a evita obstacolele. Acesta este un ghid ușor de urmat, care permite modificări ușoare pentru a se potrivi nevoilor dumneavoastră. Acest lucru necesită o înțelegere de bază a circuitelor și a programării. Va trebui să aveți software BASE Stamp IDE pentru acest proiect. Descărcare gratuită aici. La fel ca și robotul Boe-Bot
Pasul 1: Resurse
Componente electronice
Boe-Bot cu cablu de conectare Parallax Store - BoeBot Kit
Magazin Parallax cu 5 LED-uri cu infraroșu - Kit de asamblare a emițătorului IR
5 ansambluri de scuturi cu infraroșu
5 detectoare cu infraroșu Parallax Store - receptor IR BoeBot
Rezistențe
- (2) 4,7 kΩ ABRA Electronics - 4,7 kΩ
- (5) 220 Ω ABRA Electronics - 220 Ω
- (2) 1 kΩ ABRA Electronics - 1 kΩ
- (5) 2 k ABRA Electronics - 2 kΩ
Cablare asortată ABRA Electronics - Sârmă cu ecartament 22
3 LED-uri ABRA Electronics - LED roșu de 5 mm
A sustine
Calculator
BASIC Stamp Editor - (Freeware)
Instrumente
Tăietor de sârmă ABRA Electronics - Tăietor de sârmă (opțional)
Decapant de sârmă ABRA Electronics - Decapant de sârmă
Diverse
Pereți (pentru a construi labirint)
Pasul 2: Înțelegerea modului în care funcționează detectarea în infraroșu (opțional)
Faruri cu infraroșu
Sistemul de detectare a obiectelor în infraroșu pe care îl vom construi pe Boe-Bot este ca farurile unei mașini în mai multe privințe. Când lumina din farurile unei mașini reflectă obstacolele, ochii tăi detectează obstacolele și creierul le procesează și îți face corpul să ghideze mașina în consecință. Boe-Bot va folosi LED-uri cu infraroșu pentru faruri. Ele emit infraroșu și, în unele cazuri, infraroșul reflectă obiectele și revine în direcția Boe-Bot. Ochii Boe-Bot sunt detectoarele cu infraroșu. Detectoarele cu infraroșu trimit semnale care indică dacă detectează sau nu infrarosu reflectat de pe un obiect. Creierul Boe-Bot, BASIC Stamp, ia decizii și operează servomotorii pe baza acestei intrări a senzorului. Figura 7-1 Detectarea obiectelor cu farurile IR Detectoarele IR au filtre optice încorporate care permit foarte puțină lumină, cu excepția infraroșului de 980 nm pe care dorim să îl detectăm cu senzorul său de fotodiodă intern. Detectorul cu infraroșu are, de asemenea, un filtru electronic care permite trecerea doar a semnalelor în jur de 38,5 kHz. Cu alte cuvinte, detectorul caută doar infraroșu care să aprindă și să oprească intermitent de 38, de 500 de ori pe secundă. Acest lucru previne interferența IR de la surse comune, cum ar fi lumina soarelui și iluminatul interior. Lumina soarelui este o interferență de curent continuu (0 Hz), iar iluminatul interior tinde să se aprindă sau să se stingă fie la 100, fie la 120 Hz, în funcție de sursa principală de alimentare din regiune. Deoarece 120 Hz se află în afara frecvenței de trecere a benzii de 38,5 kHz a filtrului electronic, acesta este complet ignorat de detectoarele IR.
-Ghid pentru elevi Paralax
Pasul 3: Asamblarea LED-urilor IR
Introduceți LED-ul IR în partea mai mare a carcasei
Închideți partea clară a LED-ului cu partea mai mică a carcasei
Pasul 4: Testarea perechilor cu infraroșu - Circuit
Înainte de a intra prea adânc în ceva, vom testa pentru a ne asigura că perechea IR funcționează (un LED cu infraroșu și un detector cu infraroșu).
Începeți prin a construi circuitul de mai sus pe panoul montat deasupra Boe-Botului dvs.
Pasul 5: Testarea perechilor cu infraroșu - Cod de bază
Desigur, va trebui să scriem cod pentru ca perechile noastre IR să funcționeze
Pentru a face acest lucru, va folosi comanda FREQOUT. Această comandă a fost concepută pentru tonuri audio, însă poate fi utilizată pentru a produce frecvențe în domeniul infraroșu. Pentru acest test vom folosi comanda:
FREQOUT 8, 1, 38500
aceasta va trimite o frecvență de 38,5 kHz care durează 1 ms până la P8. Circuitul cu infraroșu LED conectat la P8 va transmite această frecvență. Dacă lumina infraroșie este reflectată înapoi către Boe-Bot de către un obiect aflat pe calea sa, detectorul infraroșu va trimite ștampilei BASIC un semnal pentru a-i anunța că lumina infraroșie reflectată a fost detectată.
Cheia pentru ca o pereche IR să funcționeze este să trimiteți 1 ms de FREQOUT de 38,5 kHz și să stocați imediat ieșirea detectorului IR într-o variabilă.
Acest exemplu arată stocarea valorii detectorului IR într-o variabilă de biți numită irDectectLeft
FREQOUT 8, 1, 38500
irDetectLeft = IN9
Starea de ieșire a detectorului IR atunci când nu vede semnal IR este ridicată. Când detectorul IR vede armonica de 38500 Hz reflectată de un obiect, ieșirea sa este redusă. Ieșirea detectorului IR rămâne scăzută doar o fracțiune de milisecundă după ce comanda FREQOUT este terminată, trimitând armonica, deci este esențial să stocați ieșirea detectorului IR într-o variabilă imediat după trimiterea comenzii FREQOUT. Valoarea stocată de variabilă poate fi apoi afișată în terminalul de depanare sau utilizată pentru deciziile de navigare de către Boe-Bot.
Pasul 6: Testarea perechilor cu infraroșu - Hardware + Software
Acum, că știți elementele de bază, putem pune împreună hardware-ul și software-ul pentru a testa împreună o pereche și pentru a obține feedback în timp real din ceea ce detectează perechea IR.
Puteți încerca să creați singur codul sau să utilizați codul de mai jos
„{$ STAMP BS2}
'{$ PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft =", BIN1 irDetectLeft PAUSE 100 LOOP
- Lăsați Boe-Bot conectat la cablul serial, deoarece veți utiliza terminalul DEBUG pentru a testa perechea IR.
- Plasați un obiect, cum ar fi mâna sau o foaie de hârtie, la aproximativ un centimetru de perechea IR stângă
- Verificați faptul că, atunci când plasați un obiect în fața perechii IR, terminalul de depanare afișează un 0, iar când eliminați obiectul din fața perechii IR, acesta afișează un 1.
- Dacă Terminalul de depanare nu afișează valorile așteptate, încercați pașii din Pasul de depanare.
Pasul 7: Depanare (pentru probleme cu ultimul pas)
Terminalul DEBUG afișează valori neașteptate
Verificați circuitul pentru scurte, conectori greși sau lipsă, componente deteriorate, rezistențe incorecte sau orice altă problemă vizibilă
Verificați programul de erori logice sau de sintaxă - Dacă ați folosit propriul cod pentru ultimul pas, luați în considerare utilizarea codului furnizat
Obținerea întotdeauna a 0, chiar și atunci când nu există obiecte este plasată în fața Boe-Bot
Verificați dacă există obiecte în apropiere care reflectă semnalul infraroșu. Masa din fața Boe-Bot ar putea fi cauza. Mutați Boe-Bot în spațiu deschis, astfel încât LED-ul IR și detectorul să nu poată reflecta asupra niciunui obiect din apropiere.
Citirea este 1 de cele mai multe ori când nu există obiect în fața Boe-Bot, dar pâlpâie la 0 ocazional
Poate exista interferență de la o lumină fluorescentă din apropiere; Opriți luminile fluorescente din apropiere și repetați testele. Dacă problema persistă, pasul 9 poate dezvălui problema
Pasul 8: A doua pereche IR
Acum că ai programul pentru IR stânga, este rândul tău să faci circuitul și să programezi perechea IR dreaptă
- Schimbați declarația DEBUG, titlul și comentariile pentru a vă referi la perechea IR potrivită.
- Schimbați numele variabilei din irDetectLeft în irDetectRight. Va trebui să faceți acest lucru în patru locuri din program.
- Schimbați argumentul Pin al comenzii FREQOUT de la 8 la 2.
- Schimbați registrul de intrare monitorizat de variabila irDetectRight de la IN9 la IN0.
- Repetați pașii de testare din această activitate pentru perechea IR potrivită; cu circuitul LED IR conectat la P2 și detectorul conectat la P0.
Pasul 9: detectarea interferențelor cu infraroșu (opțional)
Indiferent dacă aveți probleme cu detectarea semnalelor care nu ar trebui detectate sau intenționați să demonstrați detectarea IR într-o locație alternativă, vă recomandăm să testați interferența.
Conceptul acestui program de testare este destul de simplu, detectați semnalele în infraroșu fără a trimite niciun mesaj.
Puteți utiliza exact același circuit, dar va trebui să modificați codul. puteți alege să scrieți propriul cod, dar puteți utiliza codul furnizat mai jos:
„{$ STAMP BS2}
'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 OR IN0 = 0 THEN DEBUG "Interferență detectată" PAUSE 100 LOOP
Dacă întâmpinați interferențe, determinați sursa probabilă și opriți-o / îndepărtați-o sau mutați-vă în locul în care operați Boe-Bot.
Pasul 10: Adăugarea mai multor perechi IR
Dacă doriți mai multă acuratețe în mișcarea Boe-Botului dvs., poate doriți să adăugați mai multe perechi IR. 3 Îmbunătățește foarte mult performanța în comparație cu două; puteți utiliza o pereche centrală pentru a căuta un obstacol direct și puteți utiliza două IR-uri laterale pentru a determina cât de mult se întoarce. Cu toate acestea, căderea designului cu 3 perechi IR este că este posibil să știți când alunecați pe un perete, deoarece perechea IR centrală este utilizată pentru a detecta obstacolele. Pentru a rezolva această problemă, puteți adăuga o pereche IR pe fiecare parte cu o valoare de rezistență ridicată - prin urmare, și semnalul infraroșu va fi detectat numai dacă Boe-Bot este aproape de lateral sau de un perete cu un unghi delicat.
Pasul 11: Cinci perechi IR - Circuit
Aveți grijă atunci când direcționați cele două LED-uri IR pe lateral, deoarece răsucirea lor poate provoca atingerea cablurilor și poate provoca un scurtcircuit.
Pasul 12: Cinci perechi IR - Cod
Poate doriți să încercați să vă programați Boe-Bot înainte de a utiliza acest cod:
„{$ STAMP BS2}” {$ PBASIC 2.5} „Cod de detecție a cinci perechi IR„ Matthew Shaw”8 mai 2019 (versiunea 7)„ Detecție pentru obiecte și procesare logică de bază pentru rezolvarea labirintelor
irDetectLeft VAR Bit 'Variabilă pentru stânga
irDetectCentre VAR Bit 'Variabilă pentru centru irDetectRight VAR Bit' Variabilă pentru dreapta irDetectLSide VAR Bit 'Variabilă pentru partea stângă irDetectRSide VAR Bit' Variabilă pentru partea dreaptă irDetectLSideFar VAR Bit 'Variabilă pentru partea stângă rezistență scăzută irDetectRSideFar VAR Bit
mLoop VAR Word
Lmotor PIN 15 'Motorul din stânga este conectat la pinul 14, impulsurile trec aici
Rmotor PIN 14 'dreapta = 15
viteza este -> 650-750-850
LFast CON 850 'Conastant pentru motorul stâng la viteză maximă RFast CON 650' Conastant pentru motorul drept la viteză maximă
LStop CON 750 'Conastant pentru motorul stâng la viteză maximă
RStop CON 650 'Conastant pentru motorul corect la viteză maximă
LMid CON 830 'Conastant pentru motor stâng la viteză medie
RMid CON 700 'Conastant pentru motor dreapta la turație medie
LSlow CON 770 'Conastant pentru motorul stâng la viteză minimă
RSlow CON 730 'Conastant pentru motorul drept la viteza minimă
LRev CON 650 'Conastant pentru motorul stâng la viteză maximă în sens invers
RRev CON 850 'Conastant pentru motorul stâng la viteză maximă în sens invers
FREQOUT 7, 1, 38500 'partea stângă
irDetectLeft = IN8
FREQOUT 6, 1, 38500 'centru
irDetectCentre = IN5
FREQOUT 3, 1, 38500 'partea dreaptă
irDetectRight = IN2
FREQOUT 10, 1, 38500 'Stânga Închidere
irDetectLSide = IN11
FREQOUT 1, 1, 38500 'dreapta Închide
irDetectRSide = IN0
FREQOUT 9, 1, 38500
irDetectLSideFar = IN11
FREQOUT 4, 1, 38500 'partea dreaptă
irDetectRSideFar = IN0
IF irDetectLSide = 0 ȘI irDetectRSide = 0 THEN main 'STARTING COMMAND fluturați mâinile pe lângă cele două detectoare laterale pentru a porni programul
Principal:
PAUSE 1000 DO
PULSOUT Lmotor, motorul stâng al LFast funcționează la viteză maximă
PULSOUT Rmotor, RFast 'Motorul drept funcționează cu viteză maximă
FREQOUT 6, 1, 38500 'centru
irDetectCentre = IN5
FREQOUT 10, 1, 38500 'Stânga Închidere
irDetectLSide = IN11
FREQOUT 1, 1, 38500 'partea dreaptă
irDetectRSide = IN0
IF irDetectLSide = 0 ȘI irDetectRSide = 1 THEN
FĂ PULSOUT Lmotor, LFast
FREQOUT 6, 1, 38500 'centru
irDetectCentre = IN5 IF irDetectCentre = 0 THEN cent
FREQOUT 10, 1, 38500 'Stânga Închidere
irDetectLSide = IN11
FREQOUT 3, 1, 38500 'partea dreaptă
irDetectRight = IN2
LOOP Până la irDetectLSide = 1 SAU irDetectRSide = 0
ELSEIF irDetectLSide = 1 ȘI irDetectRSide = 0 THEN
FĂ PULSOUT Rmotor, RFast
FREQOUT 6, 1, 38500 'centru
irDetectCentre = IN5 IF irDetectCentre = 0 THEN cent
FREQOUT 10, 1, 38500 'Stânga Închidere
irDetectLSide = IN11
FREQOUT 3, 1, 38500 'partea dreaptă
irDetectRight = IN2
LOOP Până la irDetectLSide = 0 SAU irDetectRSide = 1
'ENDIF
IF irDetectCentre = 0 THEN 'START
FREQOUT 7, 1, 38500 'partea stângă irDetectLeft = IN8
FREQOUT 6, 1, 38500 'centru
irDetectCentre = IN5
FREQOUT 3, 1, 38500
irDetectRight = IN2
PAUSE 1000 'pauză pentru a arăta semnalul detectat
IF (irDetectLeft = 1 AND irDetectRight = 0) THEN 'evaluează durata
GOSUB turnLeft
ELSEIF (irDetectLeft = 0 ȘI irDetectRight = 1) THEN
GOSUB turnRight
ELSEIF (irDetectLeft = 1 ȘI irDetectRight = 1) THEN
GOSUB turnDecide
ALTE
GOSUB turnReverse
ENDIF
ENDIF 'END
BUCLĂ
SFÂRȘIT
Viraj la stânga:
DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP Până la IN0 = 1 RETURN
Obligatoriu Dreapta:
DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP Până la IN9 = 1
ÎNTOARCERE
turnReverse:
FOR mLoop = 0 TO 50 PULSOUT Rmotor, RRev PULSOUT Lmotor, LRev PAUSE 20 PULSOUT Lmotor, LRev PAUSE 20 NEXT DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, IR9 FREQOUT, 38500 irDetectRight = IN0 LOOP PÂNĂ LA IN9 = 1
ÎNTOARCERE
turnDecide: „folosește rezistență mai mică pentru a vedea mai departe
FREQOUT 9, 1, 38500
irDetectLSideFar = IN11
FREQOUT 4, 1, 38500 'partea dreaptă
irDetectRSideFar = IN0
IF (irDetectLSideFar = 1 ȘI irDetectRSideFar = 0) ATUNCI 'evaluați durata
GOSUB turnLeft
ELSEIF (irDetectLSideFar = 0 ȘI irDetectRSideFar = 1) THEN
GOSUB turnRight
ELSEIF (irDetectLSideFar = 1 ȘI irDetectRSideFar = 1) THEN
GOSUB turnLeft
ALTE
GOSUB turnReverse
ENDIF
ÎNTOARCERE
Recomandat:
Player infraroșu controlat MP3: 6 pași (cu imagini)
Player cu control infraroșu MP3: construiți un player MP3 cu telecomandă în infraroșu pentru aproximativ 10 USD (USD). Are caracteristicile obișnuite: redare, pauză, redare următoare sau anterioară, redare a unei singure melodii sau a tuturor melodiilor. De asemenea, are variații ale egalizatorului și control al volumului. Toate controlabile printr-un r
Utilizarea senzorului infraroșu cu Arduino: 8 pași (cu imagini)
Utilizarea senzorului cu infraroșu cu Arduino: Ce este un senzor cu infraroșu (aka IR)? Un senzor IR este un instrument electronic care scanează semnale IR în intervale de frecvență specifice definite de standarde și le convertește în semnale electrice pe pinul de ieșire (numit de obicei pin de semnal) . Semnalul IR
Termometru cu infraroșu cu laser Arduino: 7 pași (cu imagini)
Termometru cu infraroșu cu laser Arduino: În acest proiect vă voi arăta cum să construiți un termometru cu laser digital cu infraroșu cu o carcasă tipărită 3D personalizată
Carcasă pentru termometru cu infraroșu Arduino MDF: 4 pași (cu imagini)
Arduino Infrared Thermometer Gun MDF Case: Acest proiect este destinat fabricării termometrului cu infraroșu cu Arduino, circuitul este pus în carcasă din MDF care arată ca un termometru medical cu infraroșu pe piață. Termometrul cu senzor cu infraroșu GY-906 este utilizat pentru a măsura temperatura obiectului fără contact, se poate măsura
Cameră cu infrarosu cu imagini termice DIY: 3 pași (cu imagini)
Cameră cu infrarosu cu imagini termice DIY: Bună ziua! Caut mereu proiecte noi pentru lecțiile mele de fizică. Acum doi ani am dat peste un raport despre senzorul termic MLX90614 de la Melexis. Cel mai bun cu doar 5 ° FOV (câmp vizual) ar fi potrivit pentru o cameră termică făcută de sine. Pentru a citi