Создание робота телеприсутствия

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

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

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

Аппаратная часть

За основу робота я взял четырёхколёсную платформу с удобно расположенными отверстиями для крепления плат и достаточным местом для размещения аккумулятора.
Размеры платформы: 200мм x 170мм x 105мм, масса: 660г.

Ёмкий аккумулятор- залог долгого путешествия без подзарядки. Я использовал 12-ти вольтовый аккумулятор, ёмкостью 6700мА*ч.


Как видно из фотографии, посадка аккумулятора прошла с натягом, поэтому пришлось немного доработать напильником кусачками крепления редукторов. Для передвижения платформы я использовал двигатели постоянного тока соединённые попарно параллельно.

В качестве «спинного» мозга был выбран микроконтроллер Arduino с платой расширения для двигателей постоянного тока Motor Shield.

Снизу «бутерброда» находится микроконтроллер, сверху- шилд для управления двигателями. Прямо на нас смотрят разъёмы USB и питания МК.

Программное обеспечение

ПО состоит из двух частей:
1.Программа на ПК под Windows, отвечающая за пользовательский интерфейс и за передачу команд по COM-порту на микроконтроллер.
2.Скетч на микроконтроллере, который принимает команды с ПК и в соответствии с ними выставляет режимы двигателей.

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


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

Список Id команд:

  • 001 – Левый двигатель вперёд
  • 002 – Левый двигатель назад
  • 003 – Правый двигатель вперёд
  • 004 – Правый двигатель назад
  • 005 – Оба двигателя вперёд
  • 006 – Оба двигателя назад
  • 255 – Запуск тестовой программы робота

Передаваемое значение параметра должно лежать в диапазоне от 000 до 255, и в конечном счёте оно влияет на частоту вращения двигателей. Если передать значение 000, то произойдет остановка двигателей. После запуска программы необходимо открыть COM-порт для передачи данных. По умолчанию идет открытие COM10. Если порт занят, будет показана предупреждающая надпись.
Команды можно передавать как с помощью кнопок, расположенных на форме, так и при помощи комбинации чисел. Например, команда «005200» означает, что робот поедет вперёд с условной «скоростью» 200. При нажатии на кнопку Up по COM-порту передается строка «006200», а при отпускании кнопки «000000».

Основная задача скетча в моём проекте – разбиение входящего потока символов с COM-порта на группы по 6 цифр, анализ и исполнение соответствующих команд.

Заключение

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

Данное устройство не является конечной реализацией моей идеи. Впоследствии я планирую отказаться от USB-кабеля в пользу связки Wi-Fi – Планшетный ПК – Bluetooth – микроконтроллер. Для этого придётся написать приложение под ОС Android и использовать Bluetooth модуль на контроллере. Так же для удобства и обеспечения кроссплатформенности я планирую перейти от Delphi-приложения к Web-интерфейсу с сервером для хранения, обработки и передачи команд на Android-устройство.

Ну и на сладкое- видео:

ссылка на оригинал статьи http://habrahabr.ru/post/165745/

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *