Obsah:
- Krok 1: Zdroje
- Krok 2: Pochopení toho, jak funguje infračervená detekce (volitelně)
- Krok 3: Sestavení IR LED diod
- Krok 4: Testování infračervených párů - obvod
- Krok 5: Testování infračervených párů - základní kód
- Krok 6: Testování infračervených párů - hardware + software
- Krok 7: Odstraňování problémů (problémy s posledním krokem)
- Krok 8: Druhý IR pár
- Krok 9: Detekce infračerveného rušení (volitelně)
- Krok 10: Přidání dalších IR párů
- Krok 11: Pět IR párů - obvod
- Krok 12: Pět IR párů - kód
Video: Boe-Bot s infračervenými detektory: 12 kroků (s obrázky)
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Tento instruktážní program předvede, jak postavit a kódovat Boe-Bot, který se dokáže pohybovat bludištěm pomocí infračervených detektorů, aby se vyhnul překážkám. Toto je snadno použitelný průvodce, který umožňuje snadné úpravy podle vašich potřeb. To vyžaduje základní znalosti obvodů a programování. Pro tento projekt budete potřebovat software BASIC Stamp IDE. Zdarma ke stažení zde. Stejně jako robot Boe-Bot
Krok 1: Zdroje
Elektronické komponenty
Boe -Bot s konektorovým kabelem Parallax Store - BoeBot Kit
5 Paralaxový obchod s infračervenými LED - montážní sada IR vysílače
5 sestav infračerveného štítu
5 infračervených detektorů Parallax Store - BoeBot IR přijímač
Rezistory
- (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Ω
Rozmanité zapojení ABRA Electronics - 22 Gauge Wire
3 LED ABRA Electronics - 5 mm červená LED
Podpěra, podpora
Počítač
ZÁKLADNÍ editor razítek - (freeware)
Nástroje
Ořezávač drátu ABRA Electronics - Ořezávač drátu (volitelně)
Odstraňovač drátů ABRA Electronics - Odstraňovač drátů
Různé
Zdi (stavět bludiště)
Krok 2: Pochopení toho, jak funguje infračervená detekce (volitelně)
Infračervené světlomety
Systém detekce infračervených objektů, který na Boe-Bot postavíme, je v několika ohledech jako světlomety automobilu. Když se světlo světlometů automobilu odráží od překážek, vaše oči překážky rozpoznají a váš mozek je zpracuje a přiměje vaše tělo, aby auto odpovídajícím způsobem vedlo. Boe-Bot bude pro světlomety používat infračervené LED diody. Vyzařují infračervené záření a v některých případech se infračervené záření odráží od předmětů a odráží se zpět ve směru Boe-Bot. Oči Boe-Bot jsou infračervené detektory. Infračervené detektory vysílají signály indikující, zda detekují infračervené záření odražené od objektu či nikoli. Mozek Boe-Bot, BASIC Stamp, rozhoduje a provozuje servomotory na základě tohoto vstupu senzoru. Obrázek 7-1 Detekce objektů pomocí infračervených světlometů IR detektory mají vestavěné optické filtry, které propouštějí velmi málo světla kromě 980 nm infračerveného záření, které chceme detekovat pomocí jeho interního fotodiodového senzoru. Infračervený detektor má také elektronický filtr, který umožňuje procházet pouze signály kolem 38,5 kHz. Jinými slovy, detektor hledá pouze infračervené záření, které bliká a zhasíná 38 500krát za sekundu. Tím se zabrání infračervenému rušení z běžných zdrojů, jako je sluneční světlo a vnitřní osvětlení. Sluneční světlo je stejnosměrné rušení (0 Hz) a vnitřní osvětlení má tendenci blikat a vypínat buď na 100 nebo 120 Hz, v závislosti na hlavním zdroji energie v dané oblasti. Protože 120 Hz je mimo pásmovou frekvenci pásma 38,5 kHz elektronického filtru, jsou IR detektory zcela ignorovány.
-Paralax Student Guide
Krok 3: Sestavení IR LED diod
Vložte IR LED do větší části skříně
Čirou část diody LED uzavřete menší částí pouzdra
Krok 4: Testování infračervených párů - obvod
Než se dostaneme příliš hluboko do čehokoli, otestujeme, abychom se ujistili, že IR pár funguje (jedna infračervená LED a jeden infračervený detektor).
Začněte tím, že postavíte výše uvedený obvod na prkénko namontované na horní části vašeho Boe-Bot
Krok 5: Testování infračervených párů - základní kód
Aby naše IR páry fungovaly, budeme samozřejmě muset napsat kód
K tomu použije příkaz FREQOUT. Tento příkaz byl navržen pro zvukové tóny, ale lze jej použít k vytváření frekvencí v infračerveném rozsahu. Pro tento test použijeme příkaz:
FREQOUT 8, 1, 38500
na P8 bude odeslána frekvence 38,5 kHz, která trvá 1 ms. Infračervený obvod LED připojený k P8 bude vysílat tuto frekvenci. Pokud se infračervené světlo odráží zpět na Boe-Bot objektem v jeho cestě, infračervený detektor vyšle BASIC Stampu signál, aby věděl, že bylo odražené infračervené světlo detekováno.
Klíčem k tomu, aby IR pár fungoval, je odeslat 1 ms 38,5 kHz FREQOUT a okamžitě uložit výstup IR detektoru do proměnné.
Tento příklad ukazuje uložení hodnoty IR detektoru do bitové proměnné s názvem irDectectLeft
FREQOUT 8, 1, 38500
irDetectLeft = IN9
Výstupní stav infračerveného detektoru, když nevidí žádný IR signál, je vysoký. Když infračervený detektor uvidí 38500 Hz harmonickou odraženou objektem, je jeho výstup nízký. Výstup infračerveného detektoru zůstane nízký pouze zlomek milisekundy poté, co příkaz FREQOUT odešle harmonickou, takže je důležité uložit výstup IR detektoru do proměnné bezprostředně po odeslání příkazu FREQOUT. Hodnota uložená proměnnou pak může být zobrazena v Debug Terminal nebo použita pro navigační rozhodnutí Boe-Bot.
Krok 6: Testování infračervených párů - hardware + software
Nyní, když znáte základy, můžeme dát dohromady hardware a software, abychom společně otestovali pár a získali zpětnou vazbu v reálném čase z toho, co IR Pair detekuje
Můžete si zkusit vytvořit kód sami, nebo použít níže uvedený kód
'{$ STAMP BS2}
VAR bit '{$ PBASIC 2.5} irDetectLeft DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft =", BIN1 irDetectLeft PAUSE 100 LOOP
- Nechejte Boe-Bot připojený k sériovému kabelu, protože k testování IR páru budete používat DEBUG Terminal.
- Umístěte předmět, například ruku nebo list papíru, asi palec od levého IR páru
- Ověřte, že když umístíte objekt před IR pár, ladicí terminál zobrazí 0 a když objekt odstraníte před IR párem, zobrazí 1.
- Pokud terminál ladění nezobrazuje očekávané hodnoty, vyzkoušejte kroky v kroku Řešení potíží.
Krok 7: Odstraňování problémů (problémy s posledním krokem)
DEBUG Terminal zobrazující neočekávané hodnoty
Zkontrolujte obvod, zda není zkratovaný, nemá správně umístěné nebo chybějící konektory, poškozené součásti, nesprávné odpory nebo jiný viditelný problém
Kontrola logických nebo syntaxových chyb programu - Pokud jste v posledním kroku použili vlastní kód, zvažte použití poskytnutého kódu
Před Boe-Bot je vždy umístěno 0, i když nejsou žádné předměty
Zkontrolujte, zda v blízkosti nejsou nějaké objekty, které odrážejí infračervený signál. Příčinou může být stůl před Boe-Botem. Přesuňte Boe-Bot do otevřeného prostoru, aby IR LED a detektor nemohly odrážet žádný blízký předmět.
Čtení je 1 většinu času, když před Boe-Botem není žádný předmět, ale občas bliká na 0
Může dojít k rušení blízkým fluorescenčním světlem; Vypněte okolní zářivky a opakujte testy. Pokud problém přetrvává, krok 9 může problém odhalit
Krok 8: Druhý IR pár
Nyní, když máte program pro levé IR, je řada na vás, abyste vytvořili obvod a naprogramovali správný IR pár
- Změňte příkaz DEBUG, název a komentáře tak, aby odkazovaly na správný IR pár.
- Změňte název proměnné z irDetectLeft na irDetectRight. Budete to muset udělat na čtyřech místech programu.
- Změňte argument Pin příkazu FREQOUT z 8 na 2.
- Změňte vstupní registr monitorovaný proměnnou irDetectRight z IN9 na IN0.
- Opakujte kroky testování v této aktivitě pro správný IR pár; s obvodem IR LED připojeným k P2 a detektorem připojeným k P0.
Krok 9: Detekce infračerveného rušení (volitelně)
Ať už máte problémy s detekcí signálů, které by neměly být detekovány, nebo máte v plánu předvést vaši IR detekci na alternativním místě, možná budete chtít vyzkoušet rušení.
Koncept tohoto testovacího programu je velmi jednoduchý, detekujete infračervené signály, aniž byste je museli odesílat.
Můžete použít úplně stejný obvod, ale budete muset změnit kód. můžete se rozhodnout napsat svůj vlastní kód, ale můžete použít níže uvedený kód:
'{$ STAMP BS2}
Bit VAR „{$ PBASIC 2.5} irDetectLeft DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 NEBO IN0 = 0 PAK ODBLOKUJTE„ Interference detekována “PAUZA 100 SLOČEK
Pokud dojde k rušení, určete pravděpodobný zdroj a vypněte jej/odeberte nebo přemístěte, kde provozujete Boe-Bot.
Krok 10: Přidání dalších IR párů
Pokud toužíte po větší přesnosti v pohybu vašeho Boe-Bot, můžete přidat více IR párů. 3 Ve srovnání se dvěma výrazně zlepšuje výkon; pomocí středového páru můžete vyhledat přímou překážku a pomocí dvou bočních infračervených infračervených paprsků určit, jak moc se otočit. Pád designu 3 IR párů je však ten, že možná víte, kdy kloužete proti zdi, protože středový IR pár slouží k detekci překážek. Chcete-li tento problém vyřešit, můžete na každou stranu přidat infračervený pár s vysokou hodnotou odporu-a proto bude infračervený signál detekován pouze v případě, že se Boe-Bot bude nacházet v blízkosti strany nebo zdi pod mírným úhlem.
Krok 11: Pět IR párů - obvod
Při nasměrování dvou infračervených LED diod na boku buďte opatrní, protože jejich zkroucení může způsobit dotyky vodičů a zkrat.
Krok 12: Pět IR párů - kód
Před použitím tohoto kódu můžete zkusit naprogramovat Boe-Bot:
'{$ STAMP BS2}' {$ PBASIC 2.5} 'Five IR Pair Deatection Code' Matthew Shaw '8. května 2019 (verze 7)' Detekce objektů a základní logické zpracování pro řešení bludišť
IrDetectLeft VAR bit 'Proměnná pro levé
Bit VAR irDetectCentre 'Proměnná pro střed irDetectRight VAR bit' Proměnná pro pravý irDetectLSide VAR bit 'Proměnná pro levou stranu irDetectRide VAR bit' Proměnná pro pravou stranu irDetectLSideFar VAR bit 'Proměnná pro levý boční nízký odpor irDetectRSideFar bitový VAR' Proměnný pro pravý
mLoop VAR Word
Lmotor PIN 15 'Levý motor je připojen na pin 14, zde procházejí impulsy
PIN motoru 14 'vpravo = 15
'rychlosti jsou-> 650-750-850
LFast CON 850 'Conastant pro levý motor při plných otáčkách RFast CON 650' Conastant pro pravý motor při plné rychlosti
LStop CON 750 'Conastant pro levý motor při plné rychlosti
RStop CON 650 'Conastant pro pravý motor při plné rychlosti
LMid CON 830 'Conastant pro levý motor při středních otáčkách
RMid CON 700 'Conastant pro pravý motor při středních otáčkách
LSlow CON 770 'Conastant pro levý motor při minimálních otáčkách
RSlow CON 730 'Conastant pro pravý motor při minimálních otáčkách
LRev CON 650 'Conastant pro levý motor při plné rychlosti při couvání
RRev CON 850 'Conastant pro levý motor při plné rychlosti při couvání
FREQOUT 7, 1, 38500 'levá strana
irDetectLeft = IN8
Střed FREQOUT 6, 1, 38500 '
irDetectCentre = IN5
FREQOUT 3, 1, 38500 'pravá strana
irDetectRight = IN2
FREQOUT 10, 1, 38500 'vlevo zavřeno
irDetectLSide = IN11
FREQOUT 1, 1, 38500 'vpravo Zavřít
irDetectRSide = IN0
FREQOUT 9, 1, 38500
irDetectLSideFar = IN11
FREQOUT 4, 1, 38500 'pravá strana
irDetectRSideFar = IN0
IF irDetectLSide = 0 AND irDetectRSide = 0 THEN main 'STARTING COMMAND mávnutím rukou kolem dvou bočních detektorů spustíte program
Hlavní:
PAUZA 1 000 DO
PULSOUT Lmotor, LFast 'levý motor běží na plné otáčky
PULSOUT Rmotor, RFast 'Pravý motor běží na plné otáčky
Střed FREQOUT 6, 1, 38500 '
irDetectCentre = IN5
FREQOUT 10, 1, 38500 'vlevo zavřeno
irDetectLSide = IN11
FREQOUT 1, 1, 38500 'pravá strana
irDetectRSide = IN0
IF irDetectLSide = 0 AND irDetectRSide = 1 THEN
VYJMĚTE Lmotor, LFast
Střed FREQOUT 6, 1, 38500 '
irDetectCentre = IN5 IF irDetectCentre = 0 THEN cent
FREQOUT 10, 1, 38500 'vlevo zavřeno
irDetectLSide = IN11
FREQOUT 3, 1, 38500 'pravá strana
irDetectRight = IN2
SLUČTE, dokud irDetectLSide = 1 NEBO irDetectRSide = 0
ELSEIF irDetectLSide = 1 AND irDetectRSide = 0 POTOM
DO PULSOUT Rmotor, RFast
Střed FREQOUT 6, 1, 38500 '
irDetectCentre = IN5 IF irDetectCentre = 0 THEN cent
FREQOUT 10, 1, 38500 'vlevo zavřeno
irDetectLSide = IN11
FREQOUT 3, 1, 38500 'pravá strana
irDetectRight = IN2
SLUČTE, dokud irDetectLSide = 0 NEBO irDetectRSide = 1
„ENDIF
KDYŽ irDetectCentre = 0, PAK ZAČNĚTE
FREQOUT 7, 1, 38500 'levá strana irDetectLeft = IN8
Střed FREQOUT 6, 1, 38500 '
irDetectCentre = IN5
FREQOUT 3, 1, 38500
irDetectRight = IN2
PAUSE 1000 'pauza pro zobrazení detekovaného signálu
IF (irDetectLeft = 1 AND irDetectRight = 0) PAK vyhodnoťte trvání
Otočit GOSUB Vlevo
ELSEIF (irDetectLeft = 0 AND irDetectRight = 1) PAK
GOSUB turnRight
ELSEIF (irDetectLeft = 1 AND irDetectRight = 1) PAK
GOSUB turnDecide
JINÝ
Turn GOSUB Reverse
ENDIF
KONEC KONEC
SMYČKA
KONEC
odbočit vlevo:
DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP DO IN0 = 1 NÁVRAT
odbočit vpravo:
DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP DO IN9 = 1
VRÁTIT SE
turnReverse:
FOR 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, 1, 385, 38500 irDetectRight = IN0 Smyčka DO IN9 = 1
VRÁTIT SE
turnDecide: 'používá nižší odpor k dalšímu vidění
FREQOUT 9, 1, 38500
irDetectLSideFar = IN11
FREQOUT 4, 1, 38500 'pravá strana
irDetectRSideFar = IN0
IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) PAK „vyhodnoťte dobu trvání
Otočit GOSUB Vlevo
ELSEIF (irDetectLSideFar = 0 AND irDetectRSideFar = 1) PAK
GOSUB turnRight
ELSEIF (irDetectLSideFar = 1 AND irDetectRSideFar = 1) PAK
Otočit GOSUB Vlevo
JINÝ
Turn GOSUB Reverse
ENDIF
VRÁTIT SE