Innehållsförteckning:

Boe-Bot med infraröda detektorer: 12 steg (med bilder)
Boe-Bot med infraröda detektorer: 12 steg (med bilder)

Video: Boe-Bot med infraröda detektorer: 12 steg (med bilder)

Video: Boe-Bot med infraröda detektorer: 12 steg (med bilder)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juli
Anonim
Boe-Bot med infraröda detektorer
Boe-Bot med infraröda detektorer

Denna instruerbara kommer att demonstrera hur man bygger och kodar en Boe-Bot som kan navigera i en labyrint med hjälp av infraröda detektorer för att undvika hinder. Detta är en lätt att följa guide som möjliggör enkla ändringar som passar dina behov. Detta kräver en grundläggande förståelse för kretsar och programmering. Du måste ha BASIC Stamp IDE -programvara för detta projekt. Gratis att ladda ner här. Samt Boe-Bot Robot

Steg 1: Resurser

Elektroniska komponenter

Boe -Bot med anslutningskabel Parallax Store - BoeBot Kit

5 Infraröda LED: s Parallax Store - monteringssats för IR -sändare

5 Infraröda sköldenheter

5 infraröda detektorer Parallax Store - BoeBot IR -mottagare

Motstånd

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

Diverse ledningar ABRA Electronics - 22 gauge Wire

3 lysdioder ABRA Electronics - 5 mm röd LED

Stöd

Dator

BASIC Stamp Editor - (freeware)

Verktyg

Wire Cutter ABRA Electronics - Wire Cutter (tillval)

Wire Stripper ABRA Electronics - Wire Stripper

Övrigt

Väggar (för att bygga labyrint)

Steg 2: Förstå hur infraröd detektion fungerar (valfritt)

Förstå hur infraröd detektion fungerar (tillval)
Förstå hur infraröd detektion fungerar (tillval)

Infraröda strålkastare

Det infraröda objektdetekteringssystemet vi kommer att bygga på Boe-Bot är som en bils strålkastare i flera avseenden. När ljuset från en bils strålkastare reflekterar från hinder, upptäcker dina ögon hindren och din hjärna bearbetar dem och får din kropp att styra bilen i enlighet därmed. Boe-Bot kommer att använda infraröda lysdioder för strålkastare. De avger infrarött, och i vissa fall reflekterar det infraröda objektet och studsar tillbaka i riktning mot Boe-Bot. Boe-Bots ögon är de infraröda detektorerna. De infraröda detektorerna sänder signaler som indikerar om de detekterar infrarött reflekterat från ett objekt eller inte. Boe-Bots hjärna, BASIC Stamp, fattar beslut och driver servomotorer baserat på denna sensoringång. Figur 7-1 Objektdetektering med IR-strålkastare IR-detektorerna har inbyggda optiska filter som tillåter mycket lite ljus utom 980 nm infrarött som vi vill detektera med sin interna fotodiodsensor. Den infraröda detektorn har också ett elektroniskt filter som bara tillåter signaler runt 38,5 kHz att passera. Med andra ord, detektorn letar bara efter infrarött som blinkar på och av 38, 500 gånger per sekund. Detta förhindrar IR -störningar från vanliga källor som solljus och inomhusbelysning. Solljus är DC -störning (0 Hz), och inomhusbelysning tenderar att blinka på och av antingen 100 eller 120 Hz, beroende på huvudströmkällan i regionen. Eftersom 120 Hz ligger utanför det elektroniska filtret 38,5 kHz bandpassfrekvens ignoreras det helt av IR -detektorerna.

-Paralax Studentguide

Steg 3: Montering av IR -lysdioder

Montering av IR -lysdioder
Montering av IR -lysdioder

Sätt i IR -lysdioden i den större delen av höljet

Omslut den tydliga delen av lysdioden med den mindre delen av höljet

Steg 4: Testa infraröda par - krets

Testa infraröda par - krets
Testa infraröda par - krets
Testa infraröda par - krets
Testa infraröda par - krets

Innan vi går för djupt in i någonting kommer vi att testa för att se till att IR -paret fungerar (En infraröd LED och en infraröd detektor).

Börja med att bygga ovanstående krets på panelen monterad ovanpå din Boe-Bot

Steg 5: Testa infraröda par - Grundkod

Naturligtvis måste vi skriva kod för att våra IR -par ska fungera

För att göra detta kommer kommandot FREQOUT att användas. Detta kommando är utformat för ljudtoner, men det kan användas för att producera frekvenser inom det infraröda området. För detta test använder vi kommandot:

FREQOUT 8, 1, 38500

detta kommer att skicka en 38,5 kHz frekvens som varar 1 ms till P8. Den infraröda LED -kretsen som är ansluten till P8 kommer att sända denna frekvens. Om det infraröda ljuset reflekteras tillbaka till Boe-Bot av ett föremål i dess väg, skickar den infraröda detektorn en BASIC-stämpel en signal för att meddela att det reflekterade infraröda ljuset har detekterats.

Nyckeln till att få ett IR -par att fungera är att skicka 1 ms 38,5 kHz FREQOUT och omedelbart lagra IR -detektorns utgång i en variabel.

Detta exempel visar lagring av IR -detektorvärdet i en bitvariabel som heter irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

IR -detektorns utgångsläge när den inte ser någon IR -signal är hög. När IR -detektorn ser harmoniken 38500 Hz reflekterad av ett objekt, är dess utgång låg. IR -detektorns utgång förblir bara låg i en bråkdel av en millisekund efter att FREQOUT -kommandot har skickats med harmoniken, så det är viktigt att lagra IR -detektorns utgång i en variabel omedelbart efter att FREQOUT -kommandot skickats. Värdet som lagras av variabeln kan sedan visas i Debug Terminal eller användas för navigationsbeslut av Boe-Bot.

Steg 6: Testa infraröda par - hårdvara + programvara

Testa infraröda par - hårdvara + programvara
Testa infraröda par - hårdvara + programvara

Nu när du känner till grunderna kan vi sätta ihop hårdvaran och programvaran för att testa ett par tillsammans och få feedback i realtid från vad IR-paret upptäcker

Du kan försöka skapa koden själv eller använda koden nedan

'{$ 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ämna Boe-Bot ansluten till seriekabeln, eftersom du kommer att använda DEBUG-terminalen för att testa ditt IR-par.
  2. Placera ett föremål, till exempel din hand eller ett pappersark, ungefär en tum från det vänstra IR -paret
  3. Kontrollera att när du placerar ett objekt framför IR -paret visar felsökningsterminalen en 0, och när du tar bort objektet från IR -paret visar det ett 1.
  4. Om felsökningsterminalen inte visar de förväntade värdena, prova stegen i felsökningssteget.

Steg 7: Felsökning (för problem med sista steget)

DEBUG Terminal som visar oväntade värden

Kontrollera kretsen för kortslutningar, felplacerade eller saknade kontakter, skadade komponenter, felaktiga motstånd eller andra synliga problem

Kontrollera programmet från logiska eller syntaxfel - Om du använde din egen kod för det sista steget, överväg att använda den angivna koden

Får alltid 0, även om det inte finns några föremål placeras framför Boe-Bot

Kontrollera om det finns några objekt i närheten som reflekterar den infraröda signalen. Bordet framför Boe-Bot kan vara orsaken. Flytta Boe-Bot till öppet utrymme så att IR-lysdioden och detektorn inte kan reflektera från föremål i närheten.

Läsning är 1 mestadels när det inte finns något föremål framför Boe-Bot, men flimrar till 0 ibland

Det kan finnas störningar från ett fluorescerande ljus i närheten; Släck alla lysrör i närheten och upprepa dina tester. Om problemet kvarstår kan steg 9 avslöja problemet

Steg 8: Andra IR -paret

Andra IR -paret
Andra IR -paret

Nu när du har programmet för vänster IR är det din tur att göra kretsen och programmera rätt IR -par

  1. Ändra DEBUG -satsen, rubriken och kommentarerna för att hänvisa till rätt IR -par.
  2. Ändra variabelnamnet från irDetectLeft till irDetectRight. Du måste göra detta på fyra platser i programmet.
  3. Ändra FREQOUT -kommandoets Pin -argument från 8 till 2.
  4. Ändra ingångsregistret som övervakas av variabeln irDetectRight från IN9 till IN0.
  5. Upprepa teststegen i denna aktivitet för rätt IR -par; med IR -LED -kretsen ansluten till P2 och detektorn ansluten till P0.

Steg 9: Upptäcka infraröd störning (tillval)

Upptäcka infraröd störning (tillval)
Upptäcka infraröd störning (tillval)

Oavsett om du upplever problem med att upptäcka signaler som inte bör upptäckas eller om du planerar att demonstrera din IR -detektion på en annan plats, kanske du vill testa störningar.

Konceptet med detta testprogram är ganska enkelt, du upptäcker för infraröda signaler utan att skicka ut några.

Du kan använda exakt samma krets men du måste ändra koden. du kan välja att skriva din egen kod, men du kan använda koden nedan:

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 OM IN9 = 0 ELLER IN0 = 0 Därefter DEBUG "Störning upptäckt" PAUSE 100 LOOP

Om du upplever störningar, bestäm den troliga källan och stäng av den/ta bort den eller flytta dit du använder din Boe-Bot.

Steg 10: Lägga till fler IR -par

Lägger till fler IR -par
Lägger till fler IR -par

Om du önskar mer noggrannhet i rörelsen av din Boe-Bot, kanske du vill lägga till fler IR-par. 3 Bättre prestanda jämfört med två; du kan använda ett mittpar för att söka efter ett direkt hinder och använda två sidor för att bestämma hur mycket du ska vända. Men undergången för 3 IR -parets design är att du kanske vet när du glider mot en vägg, eftersom mitt -IR -paret används för att upptäcka hinder. För att lösa detta problem kan du lägga till ett IR-par på varje sida med ett högt motståndsvärde-därför kommer infraröd signal bara att detekteras om Boe-Bot är nära sidan eller en vägg i en svag vinkel.

Steg 11: Fem IR -par - krets

Fem IR -par - krets
Fem IR -par - krets

Var försiktig när du riktar de två IR -lysdioderna på sidan eftersom vridning av dem kan orsaka att ledarna berörs och orsaka kortslutning.

Steg 12: Fem IR -par - kod

Fem IR -par - kod
Fem IR -par - kod

Du kanske vill prova att programmera din Boe-Bot innan du använder den här koden:

'{$ STAMP BS2}' {$ PBASIC 2.5} 'Five IR Pair Deatection Code' Matthew Shaw '8 maj 2019 (version 7)' Detektion för objekt och grundläggande logisk bearbetning för att lösa labyrinter

irDetectLeft VAR Bit 'Variabel för vänster

irDetectCentre VAR Bit 'Variable for center irDetectRight VAR Bit' Variable for right irDetectLSide VAR Bit 'Variable for left side irDetectRSide VAR Bit' Variable for right side irDetectLSideFar VAR Bit 'Variable for left side low resistance irDetectRSideFar VAR Bit' Variable for right side

mLoop VAR Word

Lmotor PIN 15 'Vänster motor är ansluten till pin 14, pulser går igenom här

Rmotor PIN 14 'höger = 15

'hastigheter är-> 650-750-850

LFast CON 850 'Conastant för vänster motor vid full hastighet RFast CON 650' Conastant för höger motor vid full hastighet

LStop CON 750 'Conastant för vänster motor vid full hastighet

RStop CON 650 'Conastant för höger motor vid full hastighet

LMid CON 830 'Conastant för vänster motor vid medelhastighet

RMid CON 700 'Conastant för höger motor vid medelhastighet

LSlow CON 770 'Conastant för vänster motor vid minsta varvtal

RSlow CON 730 'Conastant för höger motor vid minsta varvtal

LRev CON 650 'Conastant för vänster motor vid full hastighet i back

RRev CON 850 'Konastant för vänster motor vid full hastighet i back

FREQOUT 7, 1, 38500 'vänster sida

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centrum

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'höger sida

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Vänster Stäng

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'höger Stäng

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'höger sida

irDetectRSideFar = IN0

OM irDetectLSide = 0 OCH irDetectRSide = 0 DÅ viftar huvudstartkommandot med händerna förbi de två sidodetektorerna för att starta programmet

Huvud:

PAUSE 1000 DO

PULSOUT Lmotor, LFast vänster motor går på full hastighet

PULSOUT Rmotor, RFast 'Höger motor går på full hastighet

FREQOUT 6, 1, 38500 'centrum

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Vänster Stäng

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'höger sida

irDetectRSide = IN0

OM irDetectLSide = 0 OCH irDetectRSide = 1 DÅ

GÖR PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'centrum

irDetectCentre = IN5 IF irDetectCentre = 0 DÅ cent

FREQOUT 10, 1, 38500 'Vänster Stäng

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'höger sida

irDetectRight = IN2

LOOP TILL irDetectLSide = 1 ELLER irDetectRSide = 0

ELSEIF irDetectLSide = 1 OCH irDetectRSide = 0 DÅ

DO PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'centrum

irDetectCentre = IN5 IF irDetectCentre = 0 DÅ cent

FREQOUT 10, 1, 38500 'Vänster Stäng

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'höger sida

irDetectRight = IN2

LOOP TILL irDetectLSide = 0 ELLER irDetectRSide = 1

'ENDIF

OM irDetectCentre = 0 Därefter 'START

FREQOUT 7, 1, 38500 'vänster sida irDetectLeft = IN8

FREQOUT 6, 1, 38500 'centrum

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'paus för att visa signal upptäckt

IF (irDetectLeft = 1 AND irDetectRight = 0) utvärdera sedan varaktigheten

GOSUB turnVänster

ELSEIF (irDetectLeft = 0 OCH irDetectRight = 1) DÅ

GOSUB sväng höger

ELSEIF (irDetectLeft = 1 OCH irDetectRight = 1) DÅ

GOSUB turnDecide

ANNAN

GOSUB turnReverse

ENDIF

ENDIFS SLUT

SLINGA

SLUTET

sväng vänster:

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

sväng höger:

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

LÄMNA TILLBAKA

turnReverse:

FÖR mloop = 0 TILL 50 PULSOUT Rmotor, RRev PULSOUT Lmotor, LRev PAUSE 20 PULSOUT Lmotor, LRev PAUSE 20 NÄSTA PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, FREQOUT 5, 1, 38500 irDetectRight = IN0 LOOP TILL IN9 = 1

LÄMNA TILLBAKA

turnDecide: 'använder lägre motstånd för att se vidare

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'höger sida

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) Därefter utvärdera varaktighet

GOSUB turnVänster

ELSEIF (irDetectLSideFar = 0 AND irDetectRSideFar = 1) DÅ

GOSUB sväng höger

ELSEIF (irDetectLSideFar = 1 OCH irDetectRSideFar = 1) DÅ

GOSUB turnVänster

ANNAN

GOSUB turnReverse

ENDIF

LÄMNA TILLBAKA

Rekommenderad: