Wi-Fi робот с видеотрансляцией в реальном времени, обнаружением препятствий

В данной статье описывается проект изготовления робота-машинки, которой можно управлять с любого компьютера без проводов при помощи связи по Wi-Fi. Видео в реальном времени передается на компьютер при помощи этой же сети. Камера, с которой ведется трансляция, поворачивается на 360°. Также робот умеет обнаруживать препятствия и реагировать на свет.
Обычно роботы с дистанционным управлением используют радиосвязь,  которая затухает, дает помехи и имеет очень ограниченное рабочее расстояние. В этом проекте используется Wi-Fi стандарта 802.11g для отправки управляющих сигналов через TCP/IP протокол, который управляет потоком данных. Это дает бесперебойную и надежную передачу управляющих сигналов роботу.  Wi-Fi поддерживает высокую скорость передачи данных, что позволяет осуществить передачу высококачественного видеосигнала в реальном времени. Вращение камеры осуществляется путем установки её на редукторный двигатель, управляемый при помощи мостовой схемы. Обнаружение препятствий сделано при помощи ультразвуковых датчиков, которые работают по принципу эхолота. Реакция на свет добавлена роботу для гибкости его работы и сделана при помощи фоторезисторов.

Этот робот способен двигаться со скоростью 12 км/ч на расстояние до 200м от управляющего компьютера. Его аккумуляторные батареи дают 1,5 часа полноценной работы. Wi-Fi Link позволяет использовать точку доступа между роботом и компьютером, что позволяет увеличить рабочую дистанцию в несколько раз. Это может применяться в туннелях, трубопроводах и на охраняемых территориях, куда невозможно проникнуть из-за большого риска.

Предполагаемая конструкция и особенности

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

Этот робот-машинка имеет следующие особенности:
— Беспроводное управление при помощи ноутбука по Wi-Fi сети.
— GUI разработанный в Visual Basic 6.0, через который можно управлять роботом.
— Функция обнаружения препятствий, благодаря которой робот, увидев препятствие, останавливается.
— Передача видео в реальном времени по Wi-Fi  на контролирующий ноутбук или компьютер.
— Поворот камеры на 360 градусов
— Реакция на свет, что позволяет включать подсветку в темноте.
— Встроенный звуковой сигнал.
— Возможность увеличения дальности связи с помощью точки доступа.

Наброски проекта

Этот рисунок дает краткий ответ на вопрос «КАК ЭТО РАБОТАЕТ?» Управляющий компьютер и роутер(роутер WRT серии) установленный на роботе связаны по TCP/IP. Маршрутизатор получает и отправляет управляющие сигналы и общается с микроконтроллером через последовательную связь. Камера подключена к роутеру и также установлена на роботе. В качестве камеры используется IP-камера, которая поворачивается на 360′ по и против часовой стрелки.

Этот проект был разработан в несколько этапов:

   Создание Wi-Fi сети:
— Хак роутера (добавление последовательного порта).
— Обновление прошивки.
— Тестирование добавленного последовательного порта.
— Разработка сервера машинки (написание и установка в роутер).
— Разработка графического интерфейса пользователя (GUI).

   Обнаружение препятствий:
— Ультразвуковой метод.
— ИК-метод.

Реакция на свет.
Создание и настройка видеотрансляции.
Вращение камеры.
Создание источника питания.
Объединение модулей.
Тестирование расстояния, скорости и мощности.

Wi-Fi соединение

Для Wi-Fi сети мы использовали  Linksys WRT54GL v1.1. Этот роутер работает как сервер и взаимодействует с управляющим ноутбуком. Причиной использования данного роутера является то, что он очень легок для хака. Это роутер с открытыми исходниками, что позволяет работать со сторонними производителями и делать множественные хаки. Мы сделали на роутере последовательный порт, так что он может общаться с микроконтроллером, присутствующим на машинке.

Как добавить последовательный порт к роутеру

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

Так как пайка в этой модификации не очень сложная, она подходит для начинающих, которые хотят получить некоторый опыт. Электронная часть не такая и сложная, но полученный результат может быть очень полезен для управления внешней электроникой или в качестве последовательной консоли. В этой модификации меняется корпус, что делает её немного сложнее, чем простую пайку проекта.

Разборка:
Удалите гарантийную наклейку! Отвинтите две Wi-Fi антенны. Передняя синяя лицевая панель является отдельной частью корпуса и держится на защелках. Для того, чтобы отделить её, необходимо приложить некоторое усилие. Поместите пальцы на защелки синей панели, и удерживая черный корпус, нажмите на панель, чтобы разделить их.
После того, как корпус удален, отвинтите винты, крепящие плату к пластиковому дну, чтобы освободить её.

Пайка разъема JP2:
Найдите разъем JP2 на плате роутера. Его распиновка:

Pin 1: 3.3V
Pin 2: 3.3V
Pin 3: Tx (ttyS1)
Pin 4: Tx (ttyS0)
Pin 5: Rx (ttyS1)
Pin 6: Rx (ttyS0)
Pin 7: NC
Pin 8: NC
Pin 9: GND
Pin 10: GND

Изменения в схемотехнике:
В роутере используются 3.3В/GND в качестве последовательных уровней сигнала. Нам нужно использовать конвертер уровней сигнала, который преобразует 3.3В/GND в +/-12В, стандартное для последовательной связи RS232 напряжение. Технически, в этом проекте правильно использовать микросхему MAX3232, но я использовал микросхемы MAX232 и MAX233 и они прекрасно работают. Вы можете использовать любую из этих 3 микросхем. MAX233 хорош тем, что не требует внешних конденсаторов.

MAX232:

MAX233:

Пайка:

Прошивка для данного хака

В описанном здесь процессе будут проверяться последовательные порты используя X-WRT, дистрибутив Линукс для WRT54GL, имеющий хороший веб-интерфейс. Что бы знать, как установить прошивку на роутер смотрите раздел ‘Обновление прошивки’ ниже. Эти порты должны нормально работать и на других дистрибутивах.

После установки прошивки, вы получаете доступ к веб-интерфейсу (по умолчанию http://192.168.1.1/). На первом экране вас попросят установить новый пароль. Установите и запомните его!

Тестирование TTYS/0 (Консольный порт/мама DB9):
1. Подключите последовательный кабель с разъемом «мама» DB9 к компьютеру. Обычно такой кабель в магазинах называют кросс-кабель.
2. Создайте связь в HyperTerminal с использованием показанных параметров (115200,8 N1)
3. Перезагрузите роутер.
4. Вы должны увидеть кучу сообщений ядра. Нажмите Enter на терминале, и вы увидите экран, показанный ниже.

Тестирование TTYS/1 (Порт, который мы будем использовать/папа DB9):
1. Подключите нуль-модемный кабель между TTS / 1 разъем DB9 и ПК.
2. Создайте связь в HyperTerminal с использованием показанных параметров (9600,8 N1).
3. Подключитесь по SSH к роутеру (имя пользователя «root», пароль тот, который вы поставили раньше.) PUTTY хорошая программа для SSH подключения в Windows.
4. Введите команду:    echo «hello world» > /dev/tts/1
5. Если вы видите «hello world» в последовательной консоли HyperTerminal, это значит, что хак прекрасно работает. Посмотрите на эти фотографии для помощи.

Схема с микроконтроллером

В этом проекте используется микроконтроллер PIC16F628A. Это легкодоступный, простой в использовании и дешевый микроконтроллер. Микроконтроллер связан с роутером, и когда роутер получает управляющий сигнал, он передает его на МК, который далее обрабатывает его. Микроконтроллер сравнивает полученное значение с уже записанными в нем значениями и выполняет соответствующее действие. К примеру, если он получает значение 8, он дает ‘1’ на контакт, отвечающий за движение робота вперед.

Для тестирования, 3.3В идущие от роутера, были преобразованы в 12В и теперь этот сигнал нельзя напрямую подавать на микроконтроллер, необходимо преобразовать его обратно, для чего снова используется max232 и разъем «папа» DB9, как показано на схеме выше.

Микросхема приемника машинки

Компьютер подключается к роутеру, роутер подключается к микроконтроллеру, а микроконтроллер подключается к микросхеме приемника машинки и дает на неё команды.  Разберите машинку и найдите микросхему приемника. Обычно для этого используется микросхема Realtek. Найдите в интернете документацию на свою микросхему и найдите на ней выводы ВПЕРЕД НАЗАД ВПРАВО ВЛЕВО. Вот цоколевка микросхемы из моей машинки:

Подключите четыре контакта (вперед, назад, вправо, влево) микроконтроллера к соответствующим выводам этой микросхемы.

Обновление прошивки

Linksys позволяет обновить прошивку и установить неоригинальную прошивку, что дает нам дополнительные возможности, но после установки неоригинальной прошивки теряется гарантия. Мы использовали графическое расширение X-WRT для OPENWRT white Russian v0.9. Для установки этой прошивки зайдите на эту страницу. Вы можете загрузить файл образа X-WRT отсюда.

Почему используется неоригинальная прошивка? Ответом на этот вопрос является то, что лишь неоригинальная прошивка позволяет установить нужный код в память роутера, и, таким образом сделать его пригодным для наших целей. Во-вторых, для использования последовательного порта было необходимо внести некоторые изменения в загрузочный файл, используемый роутером, для чего был использован openwrt-xwrt.

Создание сервера машинки

Для работы машинки нам понадобится следующее ПО: VB6 Клиент WiFi робота (работает на Windows), сервер машинки, который работает на роутере под управлением X-WRT и прошивка микроконтроллера.

Установка сервера машинки в роутер:
Для начала, роутер должен быть подключен для выполнения этой операции, поэтому первым делом подключитесь к интернету.

Подключитесь по SSH к роутеру с помощью PUTTY: (Не пишите хэш#)
# cd /tmp
# wget www.jbprojects.net/projects/wifirobot/carserver_1_mipsel.ipk
# ipkg install ./carserver_1_mipsel.ipk

Получение рабочего последовательного порта:
Теперь нам необходимо настроить разъем «папа» DB9 или TTS/1 разъем, который мы используем. Соединитесь с роутером через SSH при помощи PUTTY и напишите следующее для установки соответствующего пакета последовательного порта в роутер:
# ipkg upgrade
# ipkg install setserial
# cd /usr/sbin
# wget http://www.jbprojects.net/projects/wifirobot/stty.tgz
# tar -zxvf stty.tgz
# chmod 755 stty

В настройках X-WRT по адресу 192.168.1.1, перейдите на страницу CUSTOM USER STARTUP (или /etc/init.d/custom-user-startup) и добавьте следующие строки, чтобы сделать последовательный порт работающим при запуске роутера и автоматического запуска сервера машинки.
/user/sbin/setserial/dev/tts/1 irq 3
/usr/sbin/stty -F /dev/tts/1 raw speed 9600
/bin/carserver &

Разработка интерфейса для ПК

Компьютерный интерфейс выполнен в Visual Basic 6.0. Он использует TCP/IP связь для передачи управляющих сигналов роутеру. Я использовал не UDP, потому что в нем нет контроля потока данных, а также потому, что TCP является стандартным протоколом для Wi-Fi. Добавлены дополнительные функции последовательной связи для того, чтобы контролировать движение камеры.

Клиент также предоставляет опцию вращения камеры, о чем будет написано в соответствующем разделе.

Обнаружение препятствий

Мы реализовали два разных метода, ультразвуковой и инфракрасный. Оба метода имеют свои плюсы и минусы.

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

Разработанный нами детектор препятствий работает на частоте 40кГц. Он использует два специально изготовленных ультразвуковых датчика: один датчик излучает звук 40кГц, а другой принимает звук 40кГц и преобразует его в изменяющийся электрический ток с той же частотой.

Два tx rx ультразвуковых динамика похожих на эти с частотой 40кГц, доступны в магазине.

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

Инфракрасный метод обнаружения препятствий:
Приемник состоит из интегрального таймера 555 работающего в качестве генератора с частотой около 38 кГц (также работает на частоте от 36кГц до 40кГц), которая должна быть отрегулирована с помощью переменного резистора 10кОм. В качестве приемника используется ИК-модуль sharp. Когда ИК-луч от передатчика падает на ИК-модуль, на выходе появляется напряжение, реле замыкается, а когда луч попадает на препятствие, оно размыкается.

Контакты реле могут быть использованы для подачи микроконтроллеру прерывания, включения освещения и т.д. Переменный резистор 10кОм должен подстраиваться, пока ИК-приемник не увидит ИК-луч.  Когда перед ними ничего нет, ИК-луч не отражается на ИК-модуль, и схема не срабатывает. Но когда робот приближается к объекту, луч отражается и попадает на ИК-модуль, и схема срабатывает.

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

Вращение камеры

Поворот камеры — это тоже функциональная возможность этого проекта, как и обнаружение препятствий и реакция на свет. Вы можете просто купить подвижную  IP-камеру, чтобы иметь такую возможность, но они немного дороже, поэтому я придумал, как использовать  радио передатчик и приемник для передачи и приема сигналов вращения и давать эти сигналы мотору, на котором закреплена камера.
Вот блок-схема, на которой показано, что необходимо делать для вращения камеры:

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

Вам понадобится микроконтроллер, я использовал Atmel 89C51, с прошивкой. Подключите микроконтроллер к COM порту компьютера, для чего понадобится использовать конвертер уровней сигнала MAX232, как мы делали это ранее с PIC16F628A.
Клиент машинки имеет все элементы управления для последовательной связи с микроконтроллером. Теперь подключите 2 выхода микроконтроллера к 2 контактам на плате из пульта от игрушечной машинки. Паяйте к тем контактам, которые замыкаются, когда вы нажимаете кнопки. Раскрутите пульт, и вы поймете, о чем я говорю.

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

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

Схема Н-моста

-ve и +ve контакты аккумулятора 12В.
Два блока — реле 6В.
Электропривод — Двигатель постоянного тока.
COM провод должен быть подключен к GND схемы приемника и игрушечной машинки.
Присоедините два провода (которые раньше присоединялись к моторам машинки) от схемы к двум катушками.
Установите камеру на этот двигатель. Стоит отметить, что шнур камеры должен быть достаточно длинным, потому что она поворачивается. Теперь ваш H-мост работает!

Питание

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

Маршрутизатор
12В 1.2A акумулятор
Для IP камеры
2 аккумулятора (5В 1.2A)
соединенных параллельно для получения 5В и 2.5A
Схема обнаружения препятствий и поворот камеры
9В батарейка типа кроны
Схема управления двигателями
В моем случае это 9.6В аккумулятор. У вашей машинки может быть другое питание
DC двигателя
12В аккумулятор, такой же как и для маршрутизатора
Питание ИК схемы
12В аккумулятор маршрутизатора
Возможные усовершенствования в будущем

Существуют различные усовершенствования, которые можно добавить в этот проект в будущем. Они не лишь увеличивают его функционал, но и расширяют сферу его применения.

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

Точка доступа:
С использованием точки доступа рабочее расстояние этого робота может быть увеличено до любого желаемого, это будет очень хорошо при использовании робота в исследовательских целях.

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

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

Обработка изображений (распознавание лиц):
Робот передает видео в реальном времени, поэтому можно сделать обработку изображений полученного видео для выявления лиц или мест с помощью алгоритмов MATLAB. Это позволит использовать этого робота для поиска и идентификации подозреваемых. Эта функция расширяет возможности этого робота.

Веб-интерфейс:
Благодаря веб-интерфейсу, роботом можно будет управлять через Интернет, также, в нем используется IP-камера, таким образом можно сделать трансляцию в интернете, что будет очень полезно для использования этого робота в целях видеонаблюдения.

Результаты и выводы

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

Максимальная скорость:
Мы провели тест скорости между двумя определенными точками и засекли время, потраченное роботом, чтобы покрыть это расстояние было рассчитано. Расстояние было 5м метров и роботу потребовалось 0.8с.
Скорость=расстояние/время
Скорость=3м/0.9с = 3,3м/с или 12 км/ч

Рабочее расстояние:
Мы протестировали этого робота в открытом поле для оценки максимального рабочего расстояния. Оно равно ~200м, после этого расстояния связь с роботом теряется и команды нельзя отправлять

Оригинал статьи

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.