Съдържание:

Boe-Bot с инфрачервени детектори: 12 стъпки (със снимки)
Boe-Bot с инфрачервени детектори: 12 стъпки (със снимки)

Видео: Boe-Bot с инфрачервени детектори: 12 стъпки (със снимки)

Видео: Boe-Bot с инфрачервени детектори: 12 стъпки (със снимки)
Видео: Очаквайте “МАГЬОСНИЦИ” Епизод 1 на 27-ми май в канала на Дени 2024, Юли
Anonim
Boe-Bot с инфрачервени детектори
Boe-Bot с инфрачервени детектори

Тази инструкция ще покаже как да се изгради и кодира Boe-Bot, който може да се движи в лабиринт с помощта на инфрачервени детектори, за да избегне препятствия. Това е лесно за следване ръководство, което позволява лесни модификации според вашите нужди. Това изисква основно разбиране на схемите и програмирането. За този проект ще трябва да имате софтуер BASIC Stamp IDE. Безплатно за изтегляне тук. Както и роботът Boe-Bot

Стъпка 1: Ресурси

Електронни компоненти

Boe -Bot с съединителен кабел Parallax Store - BoeBot Kit

5 Паралакс магазин за инфрачервени светодиоди - комплект за монтаж на IR предавател

5 инфрачервени щита

5 инфрачервени детектора Parallax Store - BoeBot IR приемник

Резистори

  • (2) 4,7 kΩ ABRA Electronics - 4,7 kΩ
  • (5) 220 Ω ABRA електроника - 220 Ω
  • (2) 1 kΩ ABRA Electronics - 1 kΩ
  • (5) 2 k ABRA Electronics - 2 kΩ

Разнообразно окабеляване ABRA Electronics - проводник 22 габарита

3 LED ABRA Electronics - 5 мм червен светодиод

поддържа

Компютър

BASIC Stamp Editor - (Безплатен софтуер)

Инструменти

Резачка за тел ABRA Electronics - Резачка за тел (по избор)

Маша за отстраняване на кабели ABRA Electronics - Машина за отстраняване на тел

Разни

Стени (за изграждане на лабиринт)

Стъпка 2: Разбиране как работи инфрачервеното откриване (по избор)

Разбиране как работи инфрачервеното откриване (по избор)
Разбиране как работи инфрачервеното откриване (по избор)

Инфрачервени фарове

Инфрачервената система за откриване на обекти, която ще изградим на Boe-Bot, е като фаровете на автомобила в няколко аспекта. Когато светлината от фаровете на колата се отразява от препятствията, очите ви откриват препятствията и мозъкът ви ги обработва и кара тялото ви да ръководи колата съответно. Boe-Bot ще използва инфрачервени светодиоди за фарове. Те излъчват инфрачервена връзка, а в някои случаи инфрачервената светлина отразява обектите и отскача обратно в посока Boe-Bot. Очите на Boe-Bot са инфрачервените детектори. Инфрачервените детектори изпращат сигнали, показващи дали откриват или не инфрачервена светлина, отразена от обект. Мозъкът на Boe-Bot, BASIC Stamp, взема решения и управлява серво моторите въз основа на този сензорен вход. Фигура 7-1 Откриване на обект с инфрачервени фарове ИЧ детекторите имат вградени оптични филтри, които пропускат много малко светлина, с изключение на инфрачервения 980 nm, който искаме да открием с неговия вътрешен фотодиоден сензор. Инфрачервеният детектор също има електронен филтър, който позволява само преминаване на сигнали около 38,5 kHz. С други думи, детекторът търси само инфрачервена връзка, която мига и изключва 38, 500 пъти в секунда. Това предотвратява IR смущенията от често срещани източници като слънчева светлина и вътрешно осветление. Слънчевата светлина е с постоянни смущения (0 Hz), а вътрешното осветление има тенденция да мига и изключва при 100 или 120 Hz, в зависимост от основния източник на захранване в региона. Тъй като 120 Hz е извън честотната лента на електронния филтър от 38,5 kHz, тя се игнорира напълно от инфрачервените детектори.

-Паралакс Студентско ръководство

Стъпка 3: Сглобяване на IR светодиоди

Сглобяване на IR светодиоди
Сглобяване на IR светодиоди

Поставете IR LED в по -голямата част на корпуса

Затворете прозрачната част на светодиода с по -малката част на корпуса

Стъпка 4: Тестване на инфрачервени двойки - Верига

Тестване на инфрачервени двойки - схема
Тестване на инфрачервени двойки - схема
Тестване на инфрачервени двойки - схема
Тестване на инфрачервени двойки - схема

Преди да навлезем твърде дълбоко в нещо, ще тестваме, за да се уверим, че инфрачервената двойка работи (един инфрачервен светодиод и един инфрачервен детектор).

Започнете, като изградите горната схема на макета, монтиран върху вашия Boe-Bot

Стъпка 5: Тестване на инфрачервени двойки - основен код

Разбира се, ще трябва да напишем код, за да работят нашите IR двойки

За да направи това, ще използва командата FREQOUT. Тази команда е предназначена за аудио тонове, но може да се използва за създаване на честоти в инфрачервения диапазон. За този тест ще използваме командата:

ЧЕСТОТО 8, 1, 38500

това ще изпрати 38,8 kHz честота, която продължава 1 ms до P8. Инфрачервената LED верига, свързана към P8, ще излъчва тази честота. Ако инфрачервената светлина се отрази обратно към Boe-Bot от обект по пътя си, инфрачервеният детектор ще изпрати BASIC Stamp сигнал, за да го уведоми, че отразената инфрачервена светлина е засечена.

Ключът към работата на IR двойката е да изпратите 1 ms от 38,5 kHz FREQOUT и незабавно да съхраните изхода на IR детектора в променлива.

Този пример показва съхраняване на стойността на IR детектора в битова променлива с име irDectectLeft

ЧЕСТОТО 8, 1, 38500

irDetectLeft = IN9

Изходното състояние на IR детектора, когато не вижда IR сигнал, е високо. Когато инфрачервеният детектор види хармониката от 38500 Hz, отразена от обект, изходът му е нисък. Изходът на инфрачервения детектор остава нисък само за част от милисекунда, след като командата FREQOUT е изпратена, изпращайки хармониката, така че е от съществено значение да съхранявате изхода на инфрачервения детектор в променлива веднага след изпращането на командата FREQOUT. Стойността, съхранена от променливата, може след това да се покаже в терминала за отстраняване на грешки или да се използва за навигационни решения от Boe-Bot.

Стъпка 6: Тестване на инфрачервени двойки - хардуер + софтуер

Тестване на инфрачервени двойки - хардуер + софтуер
Тестване на инфрачервени двойки - хардуер + софтуер

Сега, когато знаете основите, можем да съберем хардуера и софтуера заедно, за да тестваме една двойка заедно и да получим обратна връзка в реално време от това, което IR двойката открива

Можете да опитате да направите сами кода или да използвате кода по -долу

'{$ STAMP BS2}

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

  1. Оставете Boe-Bot свързан към серийния кабел, защото ще използвате терминала DEBUG, за да тествате вашата IR двойка.
  2. Поставете обект, като например ръката си или лист хартия, на около сантиметър от лявата инфрачервена двойка
  3. Проверете, че когато поставите обект пред инфрачервената двойка, терминалът за отстраняване на грешки показва 0, а когато премахнете обекта отпред инфрачервената двойка, той показва 1.
  4. Ако терминалът за отстраняване на грешки не показва очакваните стойности, опитайте стъпките в Стъпката за отстраняване на проблеми.

Стъпка 7: Отстраняване на проблеми (за проблеми с последната стъпка)

DEBUG Терминал, показващ неочаквани стойности

Проверете веригата за къси съединения, неправилно поставени или липсващи конектори, повредени компоненти, неправилни резистори или друг видим проблем

Проверете програмата от логически или синтаксични грешки - Ако сте използвали свой собствен код за последната стъпка, помислете за използването на предоставения код

Винаги получавайки 0, дори когато няма обекти, се поставя пред Boe-Bot

Проверете дали в близост има обекти, които отразяват инфрачервения сигнал. Масата пред Boe-Bot може да е причината. Преместете Boe-Bot в открито пространство, така че инфрачервеният светодиод и детекторът да не могат да отразяват близки обекти.

Четенето е 1 през повечето време, когато няма обект пред Boe-Bot, но мига до 0 от време на време

Възможно е да има смущения от близка флуоресцентна светлина; Изключете всички близки флуоресцентни лампи и повторете тестовете си. Ако проблемът продължава, стъпка 9 може да разкрие проблема

Стъпка 8: Втора IR двойка

Втора IR двойка
Втора IR двойка

Сега, когато имате програмата за лявата IR, е ваш ред да направите веригата и да програмирате правилната IR двойка

  1. Променете декларацията DEBUG, заглавието и коментарите, за да се обърнете към дясната IR двойка.
  2. Променете името на променливата от irDetectLeft на irDetectRight. Ще трябва да направите това на четири места в програмата.
  3. Променете аргумента Pin на командата FREQOUT от 8 на 2.
  4. Променете входния регистър, наблюдаван от променливата irDetectRight от IN9 на IN0.
  5. Повторете стъпките за тестване в тази дейност за дясната IR двойка; с веригата IR LED, свързана към P2 и детектора, свързан към P0.

Стъпка 9: Откриване на инфрачервени смущения (по избор)

Откриване на инфрачервени смущения (по избор)
Откриване на инфрачервени смущения (по избор)

Независимо дали изпитвате проблеми с откриването на сигнали, които не трябва да бъдат открити, или планирате да демонстрирате IR откриването си на друго място, може да искате да тествате за смущения.

Концепцията на тази програма за тестване е доста проста, откривате за инфрачервени сигнали, без да изпращате никакви.

Можете да използвате същата схема, но ще трябва да промените кода. можете да изберете да напишете свой собствен код, но можете да използвате предоставения код по -долу:

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR бит DO irDetectLeft = IN9 irDetectRight = IN0 АКО IN9 = 0 ИЛИ IN0 = 0 ТОГАВА ОТСТРАНЯВАНЕ "Смущения" ПАУЗА 100 LOOP

Ако все пак имате смущения, определете вероятния източник и го изключете/премахнете или преместете където работите с вашия Boe-Bot.

Стъпка 10: Добавяне на още IR двойки

Добавяне на още IR двойки
Добавяне на още IR двойки

Ако искате по-голяма точност в движението на вашия Boe-Bot, може да искате да добавите още IR двойки. 3 Значително подобрява производителността в сравнение с две; можете да използвате централна двойка, за да сканирате за директно препятствие, и да използвате две странични IR, за да определите колко да завъртите. Недостатъкът на дизайна на 3 IR двойки е, че може да знаете, когато се плъзгате по стена, защото централната IR двойка се използва за откриване на препятствия. За да разрешите този проблем, можете да добавите IR двойка към всяка страна с висока стойност на съпротивление-следователно и инфрачервеният сигнал ще бъде открит само ако Boe-Bot е близо до страната или стена под лек ъгъл.

Стъпка 11: Пет IR двойки - Верига

Пет IR двойки - схема
Пет IR двойки - схема

Бъдете внимателни, когато насочвате двата инфрачервени светодиода отстрани, тъй като усукването им може да доведе до докосване на проводниците и да причини късо съединение.

Стъпка 12: Пет IR двойки - код

Пет IR двойки - код
Пет IR двойки - код

Може да опитате да програмирате вашия Boe-Bot, преди да използвате този код:

'{$ STAMP BS2}' {$ PBASIC 2.5} 'Код за откриване на пет IR двойки' Matthew Shaw '8 май 2019 г. (Версия 7)' Откриване на обекти и основна логическа обработка за решаване на лабиринти

irDetectLeft VAR Bit 'Променлива за ляво

IrDetectCentre VAR бит "Променлива за центъра irDetectRight VAR бит" Променлива за дясна irDetectLSide VAR бит "Променлива за лявата страна irDetectRSide VAR бит" Променлива за дясна страна irDetectLSideFar VAR бит "Променлива за лявата страна ниско съпротивление irDetectRS

mLoop VAR Word

Lmotor PIN 15 'Левият двигател е свързан към щифт 14, тук преминават импулси

PIN на Rmotor 14 'вдясно = 15

'скоростите са-> 650-750-850

LFast CON 850 'Конастант за ляв мотор при пълна скорост RFast CON 650' Конастант за десен мотор при пълна скорост

LStop CON 750 'Conastant за ляв мотор при пълна скорост

RStop CON 650 'Conastant за десен мотор при пълна скорост

LMid CON 830 'Conastant за ляв мотор при средна скорост

RMid CON 700 'Conastant за десен мотор при средна скорост

LSlow CON 770 'Conastant за ляв мотор при минимална скорост

RSlow CON 730 'Conastant за десен мотор при минимална скорост

LRev CON 650 'Conastant за ляв мотор при пълна скорост на заден ход

RRev CON 850 'Conastant за ляв мотор при пълна скорост на заден ход

FREQOUT 7, 1, 38500 'лява страна

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'център

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'дясна страна

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Ляво затваряне

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'вдясно Затвори

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'дясна страна

irDetectRSideFar = IN0

IF irDetectLSide = 0 AND irDetectRSide = 0 THEN main 'STARTING COMMAND махайте с ръце покрай двата странични детектора за стартиране на програмата

Основен:

ПАУЗА 1000 DO

PULSOUT Lmotor, LFast 'левият мотор работи на пълна скорост

PULSOUT Rmotor, RFast 'Дясният двигател работи на пълна скорост

FREQOUT 6, 1, 38500 'център

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Ляво затваряне

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'дясна страна

irDetectRSide = IN0

АКО irDetectLSide = 0 И irDetectRSide = 1 ТОГАВА

Направете PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'център

irDetectCentre = IN5 АКО irDetectCentre = 0 ТОГАВА цента

FREQOUT 10, 1, 38500 'Ляво затваряне

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'дясна страна

irDetectRight = IN2

LOOP UNTIL irDetectLSide = 1 ИЛИ irDetectRSide = 0

ELSEIF irDetectLSide = 1 И irDetectRSide = 0 ТОГАВА

Направете PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'център

irDetectCentre = IN5 АКО irDetectCentre = 0 ТОГАВА цента

FREQOUT 10, 1, 38500 'Ляво затваряне

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'дясна страна

irDetectRight = IN2

LOOP UNTIL irDetectLSide = 0 ИЛИ irDetectRSide = 1

'ENDIF

АКО irDetectCentre = 0 ТОГАВА СТАРТ

FREQOUT 7, 1, 38500 'лява страна irDetectLeft = IN8

FREQOUT 6, 1, 38500 'център

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'пауза за показване на открит сигнал

IF (irDetectLeft = 1 AND irDetectRight = 0) THEN 'оценявайте продължителността

GOSUB turnLeft

ELSEIF (irDetectLeft = 0 И irDetectRight = 1) ТОГАВА

GOSUB turnRight

ELSEIF (irDetectLeft = 1 И irDetectRight = 1) ТОГАВА

GOSUB turnDecide

ДРУГО

GOSUB turnReverse

ENDIF

ENDIF 'END

LOOP

КРАЙ

завийте наляво:

DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP UNTIL IN0 = 1 ВРЪЩАНЕ

обърни се на дясно:

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

ВРЪЩАНЕ

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, 1, 4, 4, 38500 irDetectRight = IN0 LOOP ДО IN9 = 1

ВРЪЩАНЕ

turnDecide: 'използва по -ниско съпротивление, за да види по -нататък

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'дясна страна

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 И irDetectRSideFar = 0) ТОГАВА преценете продължителността

GOSUB turnLeft

ELSEIF (irDetectLSideFar = 0 И irDetectRSideFar = 1) ТОГАВА

GOSUB turnRight

ELSEIF (irDetectLSideFar = 1 И irDetectRSideFar = 1) ТОГАВА

GOSUB turnLeft

ДРУГО

GOSUB turnReverse

ENDIF

ВРЪЩАНЕ

Препоръчано: