Sommario:

Boe-Bot con rilevatori di infrarossi: 12 passaggi (con immagini)
Boe-Bot con rilevatori di infrarossi: 12 passaggi (con immagini)

Video: Boe-Bot con rilevatori di infrarossi: 12 passaggi (con immagini)

Video: Boe-Bot con rilevatori di infrarossi: 12 passaggi (con immagini)
Video: Barriera Laser DIY - ulteriori test ed evoluzioni sempre con Shelly 1 2024, Luglio
Anonim
Boe-Bot Con Rivelatori Infrarossi
Boe-Bot Con Rivelatori Infrarossi

Questo tutorial dimostrerà come costruire e codificare un Boe-Bot in grado di navigare in un labirinto utilizzando rilevatori a infrarossi per evitare gli ostacoli. Questa è una guida facile da seguire che consente facili modifiche in base alle proprie esigenze. Ciò richiede una conoscenza di base dei circuiti e della programmazione. Avrai bisogno del software BASIC Stamp IDE per questo progetto. Gratuito per il download qui. Così come il robot Boe-Bot

Passaggio 1: risorse

Componenti elettronici

Boe-Bot con cavo di connessione Parallax Store - BoeBot Kit

5 LED a infrarossi Parallax Store - Kit di montaggio del trasmettitore IR

5 gruppi di schermi a infrarossi

5 rilevatori a infrarossi Parallax Store - Ricevitore IR BoeBot

resistori

  • (2) 4,7 kΩ Elettronica ABRA - 4,7 kΩ
  • (5) 220 Elettronica ABRA - 220
  • (2) 1 kΩ Elettronica ABRA - 1 kΩ
  • (5) Elettronica ABRA 2k - 2kΩ

Cablaggi assortiti ABRA Electronics - Cavo calibro 22

3 LED ABRA Electronics - LED rosso da 5 mm

Supporto

Computer

Editor del BASIC Stamp - (gratuito)

Utensili

Tagliafili ABRA Electronics - Tagliafili (opzionale)

Spelafili ABRA Electronics - Spelafili

Varie

Muri (per costruire labirinto)

Passaggio 2: capire come funziona il rilevamento a infrarossi (opzionale)

Comprensione del funzionamento del rilevamento a infrarossi (opzionale)
Comprensione del funzionamento del rilevamento a infrarossi (opzionale)

Fari Infrarossi

Il sistema di rilevamento di oggetti a infrarossi che costruiremo sul Boe-Bot è come i fari di un'auto sotto diversi aspetti. Quando la luce dei fari di un'auto riflette gli ostacoli, i tuoi occhi rilevano gli ostacoli e il tuo cervello li elabora e fa in modo che il tuo corpo guidi l'auto di conseguenza. Il Boe-Bot utilizzerà LED a infrarossi per i fari. Emettono infrarossi e, in alcuni casi, gli infrarossi si riflettono sugli oggetti e rimbalzano indietro nella direzione del Boe-Bot. Gli occhi del Boe-Bot sono i rilevatori di infrarossi. I rilevatori a infrarossi inviano segnali che indicano se rilevano o meno gli infrarossi riflessi da un oggetto. Il cervello del Boe-Bot, il BASIC Stamp, prende decisioni e aziona i servomotori in base a questo ingresso del sensore. Figura 7-1 Rilevamento di oggetti con fari IR I rilevatori IR hanno filtri ottici incorporati che consentono pochissima luce tranne l'infrarosso a 980 nm che vogliamo rilevare con il suo sensore a fotodiodo interno. Il rilevatore a infrarossi dispone anche di un filtro elettronico che consente il passaggio solo di segnali intorno a 38,5 kHz. In altre parole, il rilevatore cerca solo gli infrarossi che si accendono e si spengono 38.500 volte al secondo. Ciò impedisce l'interferenza IR da fonti comuni come la luce solare e l'illuminazione interna. La luce solare è un'interferenza CC (0 Hz) e l'illuminazione interna tende a lampeggiare a 100 o 120 Hz, a seconda della fonte di alimentazione principale nella regione. Poiché 120 Hz è al di fuori della frequenza di banda passante di 38,5 kHz del filtro elettronico, viene completamente ignorato dai rilevatori IR.

-Guida dello studente Paralax

Passaggio 3: assemblaggio dei LED IR

Assemblaggio dei LED IR
Assemblaggio dei LED IR

Inserire il LED IR nella parte più grande dell'involucro

Racchiudere la parte trasparente del LED con la parte più piccola dell'involucro

Passaggio 4: test delle coppie a infrarossi - Circuito

Test di coppie a infrarossi - Circuito
Test di coppie a infrarossi - Circuito
Test di coppie a infrarossi - Circuito
Test di coppie a infrarossi - Circuito

Prima di approfondire qualsiasi cosa, testeremo per assicurarci che la coppia IR funzioni (un LED a infrarossi e un rilevatore a infrarossi).

Inizia costruendo il circuito sopra sulla breadboard montata sopra il tuo Boe-Bot

Passaggio 5: test delle coppie di infrarossi - Codice di base

Ovviamente, dovremo scrivere il codice per far funzionare le nostre coppie IR

Per fare ciò, utilizzerà il comando FREQOUT. Questo comando è stato progettato per i toni audio, tuttavia può essere utilizzato per produrre frequenze nella gamma dell'infrarosso. Per questo test utilizzeremo il comando:

FREQUENZA 8, 1, 38500

questo invierà una frequenza di 38,5 kHz che dura 1 ms a P8. Il circuito LED a infrarossi collegato a P8 trasmetterà questa frequenza. Se la luce infrarossa viene riflessa al Boe-Bot da un oggetto sul suo percorso, il rivelatore di infrarossi invierà al BASIC Stamp un segnale per fargli sapere che la luce infrarossa riflessa è stata rilevata.

La chiave per far funzionare una coppia IR è inviare 1 ms di FREQOUT a 38,5 kHz e memorizzare immediatamente l'uscita del rilevatore IR in una variabile.

Questo esempio mostra la memorizzazione del valore del rilevatore IR in una variabile di bit denominata irDectectLeft

FREQUENZA 8, 1, 38500

irDetectLeft = IN9

Lo stato di uscita del rilevatore IR quando non rileva alcun segnale IR è alto. Quando il rilevatore IR vede l'armonica a 38500 Hz riflessa da un oggetto, la sua uscita è bassa. L'uscita del rilevatore IR rimane bassa solo per una frazione di millisecondo dopo che il comando FREQOUT ha terminato di inviare l'armonica, quindi è essenziale memorizzare l'uscita del rilevatore IR in una variabile subito dopo aver inviato il comando FREQOUT. Il valore memorizzato dalla variabile può quindi essere visualizzato nel Terminale di Debug o utilizzato per le decisioni di navigazione dal Boe-Bot.

Passaggio 6: test delle coppie di infrarossi - Hardware + Software

Test di coppie a infrarossi - Hardware + Software
Test di coppie a infrarossi - Hardware + Software

Ora che conosci le basi, possiamo mettere insieme l'hardware e il software per testare una coppia e ottenere un feedback in tempo reale da ciò che sta rilevando la coppia IR

Puoi provare a creare il codice da solo o utilizzare il codice qui sotto

' {$STAMP BS2}

' {$PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft = ", BIN1 irDetectLeft PAUSE 100 LOOP

  1. Lascia il Boe-Bot collegato al cavo seriale, perché utilizzerai il Terminale DEBUG per testare la tua coppia IR.
  2. Posiziona un oggetto, come la tua mano o un foglio di carta, a circa un pollice dalla coppia IR sinistra
  3. Verificare che quando si posiziona un oggetto davanti alla coppia IR, il terminale di debug visualizza uno 0 e quando si rimuove l'oggetto davanti alla coppia IR, viene visualizzato un 1.
  4. Se il terminale di debug non visualizza i valori previsti, provare i passaggi nella fase di risoluzione dei problemi.

Passaggio 7: risoluzione dei problemi (per problemi con l'ultimo passaggio)

Terminale di DEBUG che mostra valori imprevisti

Controllare il circuito per cortocircuiti, connettori fuori posto o mancanti, componenti danneggiati, resistori errati o qualsiasi altro problema visibile

Controlla il programma da errori logici o di sintassi - Se hai utilizzato il tuo codice per l'ultimo passaggio, considera l'utilizzo del codice fornito

Prendendo sempre 0, anche quando non ci sono oggetti viene piazzato davanti al Boe-Bot

Controllare se ci sono oggetti vicini che riflettono il segnale a infrarossi. Il tavolo davanti al Boe-Bot potrebbe essere la causa. Spostate il Boe-Bot in uno spazio aperto in modo che il LED IR e il rilevatore non possano riflettersi su alcun oggetto vicino.

La lettura è 1 la maggior parte delle volte quando non ci sono oggetti davanti al Boe-Bot, ma lampeggia a 0 occasionalmente

Potrebbero esserci interferenze da una luce fluorescente vicina; Spegni le luci fluorescenti nelle vicinanze e ripeti i test. Se il problema persiste, il passaggio 9 potrebbe rivelare il problema

Passaggio 8: seconda coppia IR

Seconda coppia IR
Seconda coppia IR

Ora che hai il programma per l'IR sinistro, tocca a te creare il circuito e programmare la coppia IR destra

  1. Modificare l'istruzione DEBUG, il titolo e i commenti per fare riferimento alla coppia IR corretta.
  2. Modificare il nome della variabile da irDetectLeft a irDetectRight. Dovrai farlo in quattro punti del programma.
  3. Modificare l'argomento Pin del comando FREQOUT da 8 a 2.
  4. Modificare il registro di ingresso monitorato dalla variabile irDetectRight da IN9 a IN0.
  5. Ripetere i passaggi di test in questa attività per la coppia IR corretta; con circuito LED IR collegato a P2 e rivelatore collegato a P0.

Passaggio 9: rilevamento dell'interferenza a infrarossi (opzionale)

Rilevamento dell'interferenza a infrarossi (opzionale)
Rilevamento dell'interferenza a infrarossi (opzionale)

Sia che tu stia riscontrando problemi con il rilevamento di segnali che non dovrebbero essere rilevati o che tu abbia intenzione di dimostrare il tuo rilevamento IR in una posizione alternativa, potresti voler testare l'interferenza.

Il concetto di questo programma di test è piuttosto semplice, si rilevano segnali a infrarossi senza inviarne alcuno.

Puoi usare lo stesso identico circuito ma dovrai modificare il codice. puoi scegliere di scrivere il tuo codice, ma puoi utilizzare il codice fornito di seguito:

' {$STAMP BS2}

' {$PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 OR IN0 = 0 THEN DEBUG "Rilevata interferenza" PAUSE 100 LOOP

Se si verificano interferenze, determinare la probabile fonte e spegnerla/rimuoverla o riposizionarsi dove si utilizza il Boe-Bot.

Passaggio 10: aggiunta di più coppie IR

Aggiunta di più coppie IR
Aggiunta di più coppie IR

Se desiderate una maggiore precisione nel movimento del vostro Boe-Bot, potreste voler aggiungere più Coppie IR. 3 Migliora notevolmente le prestazioni rispetto a due; puoi usare una coppia centrale per cercare un ostacolo diretto e usare due IR laterali per determinare quanto girare. Tuttavia, l'inconveniente del design a 3 coppie IR è che potresti sapere quando stai scivolando contro un muro, perché la coppia IR centrale viene utilizzata per rilevare gli ostacoli. Per risolvere questo problema, potete aggiungere una coppia IR ad ogni lato con un alto valore di resistenza, quindi il segnale infrarosso sarà rilevato solo se il Boe-Bot è vicino al lato o ad una parete con un'angolazione dolce.

Passaggio 11: cinque coppie IR - Circuito

Cinque coppie IR - Circuito
Cinque coppie IR - Circuito

Fare attenzione quando si dirigono i due LED IR sul lato poiché torcendoli può causare il contatto dei cavi e causare un cortocircuito.

Passaggio 12: cinque coppie IR - Codice

Cinque coppie IR - Codice
Cinque coppie IR - Codice

Potresti provare a programmare il tuo Boe-Bot prima di usare questo codice:

' {$STAMP BS2}' {$PBASIC 2.5} 'Codice di rilevamento di cinque coppie IR 'Matthew Shaw '8 maggio 2019 (versione 7) 'Rilevamento di oggetti ed elaborazione logica di base per risolvere labirinti

irDetectLeft VAR Bit 'Variabile per sinistra

irDetectCentre VAR Bit 'Variabile per il centro irDetectRight VAR Bit' Variabile per il lato destro irDetectLSide VAR Bit' Variabile per il lato sinistro irDetectRSide VAR Bit' Variabile per il lato destro irDetectLSideFar VAR Bit' Variabile per il lato sinistro a bassa resistenza irDetectRSideFarable VAR Bit per il destro a bassa resistenza'V

mlloop VAR Word

Lmotor PIN 15 'Il motore sinistro è collegato al pin 14, gli impulsi passano da qui

Rmotore PIN 14' destro = 15'

'le velocità sono -> 650-750-850

LFast CON 850 'Costante per motore sinistro a tutta velocità RFast CON 650 'Costante per motore destro a tutta velocità

LStop CON 750 'Costante per motore sinistro a tutta velocità

RStop CON 650 'Costante per motore destro a piena velocità

LMid CON 830 'Costante per motore sinistro a media velocità

RMid CON 700 'Costante per motore destro a media velocità

LSlow CON 770 'Costante per motore sinistro alla minima velocità

RSlow CON 730 'Costante per motore destro alla minima velocità

LRev CON 650 'Costante per motore sinistro a tutta velocità in retromarcia

RRev CON 850 'Costante per motore sinistro a tutta velocità in retromarcia

FREQOUT 7, 1, 38500 'lato sinistro

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'lato destro

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Sinistra Chiudi

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'destra Chiudi

irDetectRSide = IN0

FREQUENZA 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'lato destro

irDetectRSideFar = IN0

SE irDetectLSide = 0 AND irDetectRSide = 0 ALLORA COMANDO PRINCIPALE DI AVVIO muovi le mani oltre i due rilevatori laterali per avviare il programma

Principale:

PAUSA 1000 DO

PULSOUT Lmotor, Lfast 'il motore sinistro gira a piena velocità'

PULSOUT Rmotor, RFast 'Il motore destro gira a piena velocità

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Sinistra Chiudi

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'lato destro

irDetectRSide = IN0

SE irDetectLSide = 0 AND irDetectRSide = 1 ALLORA

DO PULSOUT Lmotore, LFast

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5 SE irDetectCentre = 0 ALLORA cent

FREQOUT 10, 1, 38500 'Sinistra Chiudi

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'lato destro

irDetectRight = IN2

LOOP FINO A irDetectLSide = 1 OPPURE irDetectRSide = 0

ELSEIF irDetectLSide = 1 AND irDetectRSide = 0 THEN

DO PULSOUT Rmotore, RFast

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5 SE irDetectCentre = 0 ALLORA cent

FREQOUT 10, 1, 38500 'Sinistra Chiudi

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'lato destro

irDetectRight = IN2

LOOP FINO A irDetectLSide = 0 OPPURE irDetectRSide = 1

'FINISCI SE

SE irDetectCentre = 0 ALLORA 'START

FREQOUT 7, 1, 38500 'lato sinistro irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centro

irDetectCentre = IN5

FREQUENZA 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'pausa per mostrare il segnale rilevato

IF (irDetectLeft = 1 AND irDetectRight = 0) THEN 'valuta la durata

GOSUB svolta a sinistra

ELSEIF (irDetectLeft = 0 AND irDetectRight = 1) THEN

GOSUB gira a destra

ELSEIF (irDetectLeft = 1 AND irDetectRight = 1) THEN

GOSUB turnDecide

ALTRO

GOSUB turnReverse

FINISCI SE

ENDIF 'END

CICLO CONTINUO

FINE

Girare a sinistra:

DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP FINO A IN0 = 1 RETURN

Girare a destra:

DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP FINO A IN9 = 1

RESTITUZIONE

girare in retromarcia:

FOR mLoop = da 0 A 50 PULSOUT Rmotore, RRev PULSOUT Lmotore, LRev PAUSA 20 PULSOUT Lmotore, LRev PAUSA 20 NEXT DO PULSOUT Rmotore, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP FINO A IN9 = 1

RESTITUZIONE

turnDecide: "usa una resistenza inferiore per vedere oltre"

FREQUENZA 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'lato destro

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) THEN ' valuta la durata

GOSUB svolta a sinistra

ELSEIF (irDetectLSideFar = 0 AND irDetectRSideFar = 1) THEN

GOSUB gira a destra

ELSEIF (irDetectLSideFar = 1 AND irDetectRSideFar = 1) THEN

GOSUB svolta a sinistra

ALTRO

GOSUB turnReverse

FINISCI SE

RESTITUZIONE

Consigliato: