Оглавление:

Boe-Bot с инфракрасными детекторами: 12 шагов (с изображениями)
Boe-Bot с инфракрасными детекторами: 12 шагов (с изображениями)

Видео: Boe-Bot с инфракрасными детекторами: 12 шагов (с изображениями)

Видео: Boe-Bot с инфракрасными детекторами: 12 шагов (с изображениями)
Видео: IR Based tracking robot. 2024, Ноябрь
Anonim
Boe-Bot с инфракрасными детекторами
Boe-Bot с инфракрасными детекторами

Это руководство продемонстрирует, как создать и запрограммировать Boe-Bot, который может перемещаться по лабиринту с помощью инфракрасных детекторов, чтобы избегать препятствий. Это простое руководство, позволяющее легко вносить изменения в соответствии с вашими потребностями. Для этого требуется базовое понимание схемотехники и программирования. Для этого проекта вам понадобится программа BASIC Stamp IDE. Бесплатно скачать здесь. А также робот Boe-Bot

Шаг 1. Ресурсы

Электронные компоненты

Boe-Bot с соединительным кабелем Parallax Store - BoeBot Kit

Магазин Parallax Store с 5 инфракрасными светодиодами - комплект для сборки ИК-передатчика

5 узлов инфракрасного экрана

5 инфракрасных детекторов Parallax Store - ИК-приемник BoeBot

Резисторы

  • (2) 4,7 кОм ABRA Electronics - 4,7 кОм
  • (5) 220 Ом ABRA Electronics - 220 Ом
  • (2) 1 кОм ABRA Electronics - 1 кОм
  • (5) 2 кОм ABRA Electronics - 2 кОм

Ассорти из проводов ABRA Electronics - Провода калибра 22

3 светодиода 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 нм, которое мы хотим обнаруживать с помощью внутреннего фотодиодного датчика. Инфракрасный детектор также имеет электронный фильтр, который пропускает только сигналы около 38,5 кГц. Другими словами, детектор ищет только инфракрасный порт, который мигает 38 500 раз в секунду. Это предотвращает ИК-помехи от обычных источников, таких как солнечный свет и внутреннее освещение. Солнечный свет является помехой постоянного тока (0 Гц), а внутреннее освещение имеет тенденцию мигать с частотой 100 или 120 Гц, в зависимости от основного источника питания в регионе. Поскольку 120 Гц находится за пределами полосы пропускания электронного фильтра 38,5 кГц, ИК-детекторы полностью игнорируют его.

-Руководство для студентов Паралакса

Шаг 3: Сборка ИК-светодиодов

Сборка ИК-светодиодов
Сборка ИК-светодиодов

Вставьте ИК-светодиод в большую часть корпуса.

Закройте прозрачную часть светодиода меньшей частью корпуса.

Шаг 4: Тестирование инфракрасных пар - схема

Тестирование инфракрасных пар - схема
Тестирование инфракрасных пар - схема
Тестирование инфракрасных пар - схема
Тестирование инфракрасных пар - схема

Прежде чем мы углубимся во что-либо, мы проверим, что пара ИК-сигналов работает (один инфракрасный светодиод и один инфракрасный датчик).

Начните с сборки вышеуказанной схемы на макете, установленном на верхней части вашего Boe-Bot.

Шаг 5: Тестирование инфракрасных пар - базовый код

Конечно, нам нужно будет написать код, чтобы наши IR-пары работали.

Для этого воспользуемся командой FREQOUT. Эта команда была разработана для звуковых сигналов, однако ее можно использовать для создания частот в инфракрасном диапазоне. Для этого теста мы будем использовать команду:

FREQOUT 8, 1, 38500

это отправит частоту 38,5 кГц, которая длится 1 мс до P8. Инфракрасная светодиодная цепь, подключенная к P8, будет транслировать эту частоту. Если инфракрасный свет отражается обратно на Boe-Bot объектом, находящимся на его пути, инфракрасный детектор отправит BASIC Stamp сигнал, чтобы он знал, что отраженный инфракрасный свет был обнаружен.

Ключом к тому, чтобы пара ИК-сигналов работала, является отправка 1 мс частоты 38,5 кГц FREQOUT и немедленное сохранение выходного сигнала ИК-детектора в переменной.

В этом примере показано сохранение значения ИК-детектора в битовой переменной irDectectLeft.

FREQOUT 8, 1, 38500

irDetectLeft = IN9

Состояние выхода ИК-детектора, когда он не видит ИК-сигнала, является высоким. Когда ИК-детектор видит гармонику 38500 Гц, отраженную от объекта, его выходной сигнал низкий. Выходной сигнал ИК-детектора остается низким только в течение доли миллисекунды после того, как команда FREQOUT отправила гармонику, поэтому важно сохранить выходной сигнал ИК-детектора в переменной сразу после отправки команды FREQOUT. Значение, хранящееся в переменной, может затем отображаться в терминале отладки или использоваться Boe-Bot для принятия решений по навигации.

Шаг 6: Тестирование инфракрасных пар - оборудование + программное обеспечение

Тестирование инфракрасных пар - оборудование + программное обеспечение
Тестирование инфракрасных пар - оборудование + программное обеспечение

Теперь, когда вы знаете основы, мы можем собрать вместе оборудование и программное обеспечение, чтобы протестировать пару вместе и получить обратную связь в режиме реального времени о том, что обнаруживает ИК-пара.

Вы можете попробовать сделать код самостоятельно или использовать приведенный ниже код.

'{$ 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 для проверки своей ИК-пары.
  2. Поместите какой-либо предмет, например руку или лист бумаги, на расстоянии около дюйма от левой ИК-пары.
  3. Убедитесь, что, когда вы помещаете объект перед ИК-парой, терминал отладки отображает 0, а когда вы удаляете объект перед ИК-парой, он отображает 1.
  4. Если терминал отладки не отображает ожидаемые значения, попробуйте выполнить действия, описанные на этапе устранения неполадок.

Шаг 7: Устранение неполадок (для проблем с последним шагом)

Терминал DEBUG, отображающий неожиданные значения

Проверьте цепь на наличие коротких замыканий, неправильно установленных или отсутствующих разъемов, поврежденных компонентов, неправильных резисторов или любых других видимых проблем.

Проверить программу на наличие логических или синтаксических ошибок - если вы использовали свой собственный код на последнем шаге, рассмотрите возможность использования предоставленного кода.

Всегда получает 0, даже если перед Boe-Bot нет никаких объектов.

Проверьте, нет ли поблизости объектов, отражающих инфракрасный сигнал. Стол перед Бо-ботом мог быть причиной. Переместите Boe-Bot в открытое пространство, чтобы ИК-светодиод и детектор не отражались от ближайшего объекта.

Чтение составляет 1 большую часть времени, когда перед Boe-Bot нет объекта, но иногда мерцает до 0

Могут быть помехи от ближайшего люминесцентного света; Выключите все расположенные поблизости люминесцентные лампы и повторите тесты. Если проблема не исчезнет, шаг 9 может выявить проблему.

Шаг 8: Вторая ИК-пара

Вторая ИК-пара
Вторая ИК-пара

Теперь, когда у вас есть программа для левого ИК-порта, ваша очередь сделать схему и запрограммировать правую ИК-пару.

  1. Измените оператор DEBUG, заголовок и комментарии, чтобы они ссылались на правильную пару IR.
  2. Измените имя переменной с irDetectLeft на irDetectRight. Вам нужно будет сделать это в четырех местах программы.
  3. Измените аргумент Pin команды FREQOUT с 8 на 2.
  4. Измените входной регистр, контролируемый переменной irDetectRight, с IN9 на IN0.
  5. Повторите шаги тестирования в этом упражнении для правильной пары IR; со схемой ИК-светодиода, подключенной к P2, и детектором, подключенным к P0.

Шаг 9: Обнаружение инфракрасных помех (необязательно)

Обнаружение инфракрасных помех (необязательно)
Обнаружение инфракрасных помех (необязательно)

Если у вас возникли проблемы с обнаружением сигналов, которые не следует обнаруживать, или вы планируете продемонстрировать свое ИК-обнаружение в другом месте, вы можете проверить наличие помех.

Концепция этой тестовой программы довольно проста: вы обнаруживаете инфракрасные сигналы, не отправляя их.

Вы можете использовать ту же схему, но вам придется изменить код. вы можете написать свой собственный код, но вы можете использовать приведенный ниже код:

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 OR IN0 = 0 THEN DEBUG «Обнаружены помехи» PAUSE 100 LOOP

Если вы все же испытываете помехи, определите вероятный источник и выключите / удалите его или переместите туда, где вы используете свой Boe-Bot.

Шаг 10: добавление дополнительных ИК-пар

Добавление дополнительных пар IR
Добавление дополнительных пар IR

Если вы хотите большей точности движения вашего Boe-Bot, вы можете добавить больше IR-пар. 3 Значительно улучшает производительность по сравнению с двумя; вы можете использовать центральную пару для поиска прямого препятствия и использовать два боковых IR, чтобы определить, на сколько нужно повернуть. Однако недостатком дизайна с 3 парами ИК-сигналов является то, что вы можете знать, скользя по стене, потому что центральная пара ИК-сигналов используется для обнаружения препятствий. Чтобы решить эту проблему, вы можете добавить инфракрасную пару с каждой стороны с высоким значением сопротивления, поэтому инфракрасный сигнал будет обнаружен только в том случае, если Boe-Bot находится близко к стороне или стене под пологим углом.

Шаг 11: Пять ИК-пар - Схема

Пять ИК-пар - схема
Пять ИК-пар - схема

Будьте осторожны, направляя два ИК-светодиода сбоку, поскольку их скручивание может привести к соприкосновению проводов и вызвать короткое замыкание.

Шаг 12: Пять IR-пар - Код

Пять IR-пар - Код
Пять IR-пар - Код

Вы можете попробовать запрограммировать свой Boe-Bot перед использованием этого кода:

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

irDetectLeft VAR Bit 'Переменная для левого

irDetectCentre VAR Bit 'Переменная для центрального irDetectRight VAR Bit' Переменная для правого irDetectLSide VAR Bit 'Переменная для левой стороны irDetectRSide VAR Bit' Переменная для правой стороны irDetectLSideFar VAR Bit 'Переменная для левой стороны с низким сопротивлением

Слово VAR mLoop

Lmotor PIN 15 'Левый мотор подключен к контакту 14, здесь проходят импульсы

ПИН 14 'правый = 15 ротора

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

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

LStop CON 750 'Conastant для левого мотора на полной скорости

RStop CON 650 'Conastant для правого мотора на полной скорости

LMid CON 830 'Константа для левого мотора на средней скорости

RMid CON 700 'Conastant для правого мотора на средней скорости

LSlow CON 770 'Константа для левого мотора на минимальной скорости

RSlow CON 730 'Константа для правого мотора на минимальной скорости

LRev CON 650 'Константа для левого двигателя на полной скорости назад

RRev CON 850 'Константа для левого мотора на полной скорости назад

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

ЧАСТОТА 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'правая сторона

irDetectRSideFar = IN0

ЕСЛИ irDetectLSide = 0 И irDetectRSide = 0 ТОГДА главная 'ЗАПУСКНАЯ КОМАНДА машет руками мимо двух боковых детекторов, чтобы запустить программу.

Главный:

ПАУЗА 1000 ДО

PULSOUT Lmotor, L Быстрый левый двигатель работает на полной скорости

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, ТО

DO PULSOUT Lmotor, LFast

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

irDetectCentre = IN5 ЕСЛИ irDetectCentre = 0 ТОГДА цент

FREQOUT 10, 1, 38500 'Влево Закрыть

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'правая сторона

irDetectRight = IN2

Цикл ДО irDetectLSide = 1 ИЛИ irDetectRSide = 0

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

DO PULSOUT Rmotor, RFast

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

irDetectCentre = IN5 ЕСЛИ irDetectCentre = 0 ТОГДА цент

FREQOUT 10, 1, 38500 'Влево Закрыть

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'правая сторона

irDetectRight = IN2

ЗАПИСЬ ДО irDetectLSide = 0 ИЛИ irDetectRSide = 1

ENDIF

ЕСЛИ irDetectCentre = 0, ТО 'НАЧАТЬ

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

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

irDetectCentre = IN5

ЧАСТОТА 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'пауза для отображения обнаруженного сигнала

IF (irDetectLeft = 1 AND irDetectRight = 0) THEN 'оценить продолжительность

GOSUB поворот влево

ELSEIF (irDetectLeft = 0 И irDetectRight = 1) ТО

GOSUB поворот вправо

ELSEIF (irDetectLeft = 1 AND irDetectRight = 1) ТОГДА

GOSUB очередьDecide

ЕЩЕ

GOSUB поворот Обратный

ENDIF

ENDIF 'КОНЕЦ

ПЕТЛЯ

КОНЕЦ

Поверните налево:

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 RETURN

Поверните направо:

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

ВОЗВРАЩЕНИЕ

TurnReverse:

FOR mLoop = от 0 до 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 irD = IN9, 1, 38500, 38500 irDetectRight = ЦИКЛ IN0 ДО IN9 = 1

ВОЗВРАЩЕНИЕ

turnDecide: 'использует более низкое сопротивление, чтобы видеть дальше

ЧАСТОТА 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'правая сторона

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) THEN 'оценить продолжительность

GOSUB поворот влево

ELSEIF (irDetectLSideFar = 0 И irDetectRSideFar = 1) ТО

GOSUB поворот вправо

ELSEIF (irDetectLSideFar = 1 AND irDetectRSideFar = 1) ТОГДА

GOSUB поворот влево

ЕЩЕ

GOSUB поворот Обратный

ENDIF

ВОЗВРАЩЕНИЕ

Рекомендуемые: