Cuprins:

Boe-Bot cu detectoare cu infraroșu: 12 pași (cu imagini)
Boe-Bot cu detectoare cu infraroșu: 12 pași (cu imagini)

Video: Boe-Bot cu detectoare cu infraroșu: 12 pași (cu imagini)

Video: Boe-Bot cu detectoare cu infraroșu: 12 pași (cu imagini)
Video: Boe-Bot - Mine clearing 2024, Iulie
Anonim
Boe-Bot cu detectoare cu infraroșu
Boe-Bot cu detectoare cu infraroșu

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)

Înțelegerea modului în care funcționează detectarea în infraroșu (opțional)
Î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

Asamblarea LED-urilor IR
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

Testarea perechilor cu infraroșu - Circuit
Testarea perechilor cu infraroșu - Circuit
Testarea perechilor cu infraroșu - Circuit
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

Testarea perechilor cu infraroșu - Hardware + Software
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

  1. Lăsați Boe-Bot conectat la cablul serial, deoarece veți utiliza terminalul DEBUG pentru a testa perechea IR.
  2. Plasați un obiect, cum ar fi mâna sau o foaie de hârtie, la aproximativ un centimetru de perechea IR stângă
  3. 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.
  4. 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

A doua pereche IR
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ă

  1. Schimbați declarația DEBUG, titlul și comentariile pentru a vă referi la perechea IR potrivită.
  2. Schimbați numele variabilei din irDetectLeft în irDetectRight. Va trebui să faceți acest lucru în patru locuri din program.
  3. Schimbați argumentul Pin al comenzii FREQOUT de la 8 la 2.
  4. Schimbați registrul de intrare monitorizat de variabila irDetectRight de la IN9 la IN0.
  5. 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)

Detectarea interferențelor cu infraroșu (opțional)
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

Adăugarea mai multor perechi IR
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

Cinci perechi IR - Circuit
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

Cinci perechi IR - Cod
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: