Taula de continguts:

Boe-Bot amb detectors d'infrarojos: 12 passos (amb imatges)
Boe-Bot amb detectors d'infrarojos: 12 passos (amb imatges)

Vídeo: Boe-Bot amb detectors d'infrarojos: 12 passos (amb imatges)

Vídeo: Boe-Bot amb detectors d'infrarojos: 12 passos (amb imatges)
Vídeo: Boebot- the line following AGV 2024, Juliol
Anonim
Boe-Bot amb detectors d'infrarojos
Boe-Bot amb detectors d'infrarojos

Aquesta instrucció demostrarà com construir i codificar un Boe-Bot que pugui navegar per un laberint mitjançant detectors d'infrarojos per evitar obstacles. Aquesta és una guia fàcil de seguir que permet modificacions fàcils segons les vostres necessitats. Això requereix una comprensió bàsica dels circuits i la programació. Haureu de tenir el programari BASIC Stamp IDE per a aquest projecte. Descàrrega gratuïta aquí. Així com el robot Boe-Bot

Pas 1: recursos

Components electrònics

Boe-Bot amb cable de connexió Parallax Store - Kit BoeBot

Parallax Store de 5 infrarrojos LED: kit de muntatge de transmissors IR

5 conjunts d’escuts infrarojos

Botiga Parallax de 5 detectors d'infrarojos: receptor IR BoeBot

Resistències

  • (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Ω

Assortiment de cablejat ABRA Electronics - Cable de calibre 22

Electrònica ABRA de 3 LED: LED vermell de 5 mm

Suport

Ordinador

BASIC Stamp Editor - (Programari gratuït)

Eines

Tallador de cables ABRA Electronics - Tallador de cables (opcional)

Filferro ABRA Electronics - Filferro

Misc

Parets (per construir laberint)

Pas 2: entendre com funciona la detecció d'infrarojos (opcional)

Descripció del funcionament de la detecció d'infrarojos (opcional)
Descripció del funcionament de la detecció d'infrarojos (opcional)

Fars d'infrarojos

El sistema de detecció d’objectes d’infrarojos que construirem al Boe-Bot és com els fars d’un cotxe en diversos aspectes. Quan la llum dels fars d’un cotxe es reflecteix en els obstacles, els teus ulls detecten els obstacles i el cervell els processa i fa que el teu cos guii el cotxe en conseqüència. El Boe-Bot utilitzarà LED d'infrarojos per als fars. Emeten infrarojos i, en alguns casos, els infrarojos reflecteixen els objectes i reboten en la direcció del Boe-Bot. Els ulls del Boe-Bot són els detectors d’infrarojos. Els detectors d'infrarojos envien senyals que indiquen si detecten o no l'infraroig reflectit en un objecte. El cervell del Boe-Bot, el BASIC Stamp, pren decisions i fa servir els servomotors en funció d’aquesta entrada del sensor. Figura 7-1 Detecció d'objectes amb fars IR Els detectors IR tenen filtres òptics incorporats que permeten molt poca llum excepte l'infraroig de 980 nm que volem detectar amb el seu sensor de fotodiode intern. El detector d'infrarojos també té un filtre electrònic que només permet passar senyals al voltant de 38,5 kHz. Dit d’una altra manera, el detector només busca infrarojos que s’encenguin i s’apagin 38, 500 vegades per segon. D’aquesta manera s’eviten interferències d’IR procedents de fonts habituals com la llum solar i la il·luminació interior. La llum del sol és una interferència de CC (0 Hz) i la il·luminació interior tendeix a parpellejar a 100 o 120 Hz, depenent de la font d’energia principal de la regió. Atès que 120 Hz es troba fora de la freqüència de pas de banda de 38,5 kHz del filtre electrònic, els detectors d’IR ignoren completament.

-Paralax Guia de l’alumne

Pas 3: Muntatge de LEDs IR

Muntatge de LEDs IR
Muntatge de LEDs IR

Introduïu el LED IR a la part més gran de la carcassa

Incloeu la part clara del LED amb la part més petita de la carcassa

Pas 4: Prova de parells infrarojos: circuit

Prova de parells infrarojos: circuit
Prova de parells infrarojos: circuit
Prova de parells infrarojos: circuit
Prova de parells infrarojos: circuit

Abans d’aprofundir en res, provarem per assegurar-nos que el parell IR funciona (un LED d’infrarojos i un detector d’infrarojos).

Comenceu construint el circuit anterior a la placa de suport muntada a la part superior del vostre Boe-Bot

Pas 5: provar parells d'infrarojos: codi bàsic

Per descomptat, haurem d’escriure codi perquè funcionin els nostres parells d’IR

Per fer-ho, s'utilitzarà l'ordre FREQOUT. Aquesta ordre va ser dissenyada per a tons d'àudio, però es pot utilitzar per produir freqüències en el rang d'infrarojos. Per a aquesta prova utilitzarem l'ordre:

FREQOUT 8, 1, 38500

això enviarà una freqüència de 38,5 kHz que dura 1 ms a P8. El circuit LED d'infrarojos connectat a P8 emetrà aquesta freqüència. Si un objecte al seu pas reflecteix la llum infraroja cap al Boe-Bot, el detector d'infrarojos enviarà al senyal BASIC un senyal per fer-li saber que s'ha detectat la llum infraroja reflectida.

La clau per fer funcionar un parell d’IR és enviar 1 ms de FREQOUT a 38,5 kHz i emmagatzemar immediatament la sortida del detector d’IR en una variable.

Aquest exemple mostra com emmagatzemar el valor del detector d’IR en una variable de bit anomenada irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

L’estat de sortida del detector IR quan no veu cap senyal IR és alt. Quan el detector IR veu reflectit l’harmònic de 38500 Hz per un objecte, la seva sortida és baixa. La sortida del detector IR només es manté baixa durant una fracció de mil·lisegon després que s’hagi fet l’ordre FREQOUT enviant l’harmònic, de manera que és essencial emmagatzemar la sortida del detector IR en una variable immediatament després d’enviar l’ordre FREQOUT. El valor emmagatzemat per la variable es pot mostrar al terminal de depuració o utilitzar-lo per a les decisions de navegació del Boe-Bot.

Pas 6: provar parells d'infrarojos: maquinari i programari

Proves de parells infrarojos: maquinari i programari
Proves de parells infrarojos: maquinari i programari

Ara que ja coneixeu els conceptes bàsics, podem unir el maquinari i el programari per provar un parell i obtenir comentaris en temps real del que detecta el parell IR

Podeu provar de crear el codi vosaltres mateixos o utilitzar el codi següent

{$ STAMP BS2}

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

  1. Deixeu el Boe-Bot connectat al cable sèrie, ja que utilitzeu el terminal DEBUG per provar el vostre parell IR.
  2. Col·loqueu un objecte, com ara la mà o un full de paper, a aproximadament una polzada del parell IR esquerre
  3. Verifiqueu que, quan col·loqueu un objecte davant del parell IR, el terminal de depuració mostri un 0 i, quan traieu l’objecte del davant del parell IR, mostri un 1.
  4. Si el terminal de depuració no mostra els valors esperats, proveu els passos del pas de resolució de problemes.

Pas 7: Resolució de problemes (per a problemes amb l'últim pas)

Terminal DEBUG que mostra valors inesperats

Comproveu el circuit per si hi ha curtcircuits, connectors que no es troben o no, components danyats, resistències incorrectes o qualsevol altre problema visible

Comproveu si hi ha errors lògics o de sintaxi del programa: si heu utilitzat el vostre propi codi per a l'últim pas, penseu a utilitzar el codi proporcionat

Sempre es posa 0, fins i tot quan no hi ha objectes, es col·loca davant del Boe-Bot

Comproveu si hi ha objectes propers que reflecteixin el senyal d'infrarojos. La taula davant del Boe-Bot podria ser la causa. Moveu el Boe-Bot a un espai obert de manera que el LED IR i el detector no puguin reflectir cap objecte proper.

La lectura és 1 la majoria de les vegades quan no hi ha cap objecte davant del Boe-Bot, però parpelleja a 0 de tant en tant

Pot haver-hi interferències a partir d’una llum fluorescent propera; Apagueu els llums fluorescents propers i repetiu les proves. Si el problema continua, el pas 9 pot revelar-lo

Pas 8: segon parell IR

Segon parell IR
Segon parell IR

Ara que teniu el programa per a la IR esquerra, us ha tocat fer el circuit i programar el parell IR correcte

  1. Canvieu la declaració DEBUG, el títol i els comentaris per referir-vos al parell IR adequat.
  2. Canvieu el nom de la variable d'irDetectLeft a irDetectRight. Haureu de fer-ho en quatre llocs del programa.
  3. Canvieu l'argument Pin de l'ordre FREQOUT de 8 a 2.
  4. Canvieu el registre d'entrada supervisat per la variable irDetectRight d'IN9 a IN0.
  5. Repetiu els passos de prova d'aquesta activitat per al parell IR adequat; amb el circuit LED IR connectat a P2 i el detector connectat a P0.

Pas 9: Detecció d'interferències d'infrarojos (opcional)

Detecció d'interferències infraroges (opcional)
Detecció d'interferències infraroges (opcional)

Tant si teniu problemes amb la detecció de senyals que no s’haurien de detectar com si voleu demostrar la vostra detecció d’IR en una ubicació alternativa, és possible que vulgueu provar interferències.

El concepte d’aquest programa de proves és bastant senzill, detecteu senyals infrarojos sense enviar-ne cap.

Podeu utilitzar exactament el mateix circuit, però haureu d’alterar el codi. podeu escriure el vostre propi codi, però podeu utilitzar el codi que es proporciona a continuació:

{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 O IN0 = 0 LLAVORS DEBUG "Interferència detectada" PAUSA 100 LOOP

Si experimenta interferències, determineu la font probable i apagueu-la / traieu-la o traslladeu-la a la ubicació del vostre Boe-Bot.

Pas 10: afegir més parells IR

Addició de més parells IR
Addició de més parells IR

Si voleu més precisió en el moviment del vostre Boe-Bot, és possible que vulgueu afegir més parells IR. 3 Millora molt el rendiment en comparació amb dos; podeu utilitzar un parell central per cercar un obstacle directe i utilitzar dos IR laterals per determinar quant gireu. Tanmateix, la caiguda del disseny de 3 parells IR és que potser sabreu quan esteu lliscant contra una paret, perquè el parell IR central s’utilitza per detectar obstacles. Per resoldre aquest problema, podeu afegir un parell IR a cada costat amb un valor de resistència elevat; per tant, el senyal d'infrarojos només es detectarà si el Boe-Bot està a prop del costat o una paret amb un angle suau.

Pas 11: cinc parells IR: circuit

Cinc parells IR: circuit
Cinc parells IR: circuit

Aneu amb compte a l’hora de dirigir els dos LED d’IR de costat, ja que girar-los pot provocar el contacte dels cables i un curtcircuit.

Pas 12: cinc parells IR: codi

Cinc parells IR: codi
Cinc parells IR: codi

És possible que vulgueu provar de programar el vostre Boe-Bot abans d’utilitzar aquest codi:

"{$ STAMP BS2}" {$ PBASIC 2.5} "Codi de detecció de cinc parells IR" Matthew Shaw "8 de maig de 2019 (versió 7)" Detecció d'objectes i processament lògic bàsic per resoldre laberints

irDetectLeft VAR Bit 'Variable per a l'esquerra

irDetectCentre VAR Bit 'Variable per al centre irDetectRight VAR Bit' Variable per la dreta irDetectLSide VAR Bit 'Variable per al costat esquerre irDetectRSide VAR Bit' Variable per al costat dret irDetectLSideFar VAR Bit 'Variable per al costat esquerre baixa resistència irDetectRSideFar VAR Bit'

mLoop VAR Word

Lmotor PIN 15 'El motor esquerre està connectat al pin 14, els impulsos passen per aquí

Rmotor PIN 14 'dret = 15

'velocitats són -> 650-750-850

LFast CON 850 'Conastant per al motor esquerre a tota velocitat RFast CON 650' Conastant per al motor dret a tota velocitat

LStop CON 750 'Conastant per a motor esquerre a tota velocitat

RStop CON 650 'Conastant per a motor dret a tota velocitat

LMid CON 830 'Conastant per a motor esquerre a velocitat mitjana

RMid CON 700 'Conastant per a motor dret a velocitat mitjana

LSlow CON 770 'Conastant per a motor esquerre a velocitat mínima

RSlow CON 730 'Conastant per a motor dret a velocitat mínima

LRev CON 650 'Conastant per al motor esquerre a tota velocitat al revés

RRev CON 850 'Conastant per al motor esquerre a tota velocitat al revés

FREQOUT 7, 1, 38500 'costat esquerre

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centre

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'costat dret

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Esquerra Tanca

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'dreta Tancar

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'costat dret

irDetectRSideFar = IN0

IF irDetectLSide = 0 I irDetectRSide = 0 LLAVORS main 'STARTAND COMMAND agita les mans més enllà dels dos detectors laterals per iniciar el programa

Principal:

PAUSA 1000 FER

PULSOUT Lmotor, el motor esquerre de LFast funciona a tota velocitat

PULSOUT Rmotor, el motor dret de RFast funciona a tota velocitat

FREQOUT 6, 1, 38500 'centre

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Esquerra Tanca

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'costat dret

irDetectRSide = IN0

SI irDetectLSide = 0 I irDetectRSide = 1 DESPRÉS

FER PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'centre

irDetectCentre = IN5 SI irDetectCentre = 0 THEN cent

FREQOUT 10, 1, 38500 'Esquerra Tanca

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'costat dret

irDetectRight = IN2

LOOP FINS A irDetectLSide = 1 O irDetectRSide = 0

ELSEIF irDetectLSide = 1 I irDetectRSide = 0 DESPRÉS

FER PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'centre

irDetectCentre = IN5 SI irDetectCentre = 0 THEN cent

FREQOUT 10, 1, 38500 'Esquerra Tanca

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'costat dret

irDetectRight = IN2

LOOP FINS A irDetectLSide = 0 O irDetectRSide = 1

'ENDIF

IF irDetectCentre = 0 THEN 'START

FREQOUT 7, 1, 38500 'costat esquerre irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centre

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSA 1000 'pausa per mostrar el senyal detectat

IF (irDetectLeft = 1 I irDetectRight = 0) DESPRÉS 'avaluar la durada

GOSUB turnLeft

ELSEIF (irDetectLeft = 0 I irDetectRight = 1) DESPRÉS

GOSUB turnRight

ELSEIF (irDetectLeft = 1 I irDetectRight = 1) DESPRÉS

GOSUB turnDecide

ALTRES

GOSUB turnReverse

ENDIF

ENDIF 'END

LOOP

FINAL

giri a l'esquerra:

FER PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP FINS A IN0 = 1 RETORN

giri a la dreta:

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

TORNAR

turnReverse:

PER mLoop = 0 a 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 FINS A IN9 = 1

TORNAR

turnDecide: 'utilitza una resistència més baixa per veure més enllà

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'costat dret

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 I irDetectRSideFar = 0) DESPRÉS 'avaluar la durada

GOSUB turnLeft

ELSEIF (irDetectLSideFar = 0 I irDetectRSideFar = 1) DESPRÉS

GOSUB turnRight

ELSEIF (irDetectLSideFar = 1 I irDetectRSideFar = 1) DESPRÉS

GOSUB turnLeft

ALTRES

GOSUB turnReverse

ENDIF

TORNAR

Recomanat: