Прочитав несколько статей о платформе Arduino и вдоволь наигравшись миганием светодиодов, я решил попробовать свои силы в робототехнике. Проект не претендует на уникальность, индуизм в быдлокоде зашкаливает, однако, если вас это не пугает…
Суть проекта проста: я сижу за компьютером, управляю роботом «от первого лица», в то же время люди, которые видят робота, видят так же и меня на экране планшета робота. Возможно, схема ниже поможет разобраться в происходящем:
Команды роботу подаются через COM-порт в виде строки символов, за видеосвязь в реальном времени отвечает скайп.
Аппаратная часть
За основу робота я взял четырёхколёсную платформу с удобно расположенными отверстиями для крепления плат и достаточным местом для размещения аккумулятора.
Размеры платформы: 200мм x 170мм x 105мм, масса: 660г.
Ёмкий аккумулятор- залог долгого путешествия без подзарядки. Я использовал 12-ти вольтовый аккумулятор, ёмкостью 6700мА*ч.
Как видно из фотографии, посадка аккумулятора прошла с натягом, поэтому пришлось немного доработать напильником кусачками крепления редукторов. Для передвижения платформы я использовал двигатели постоянного тока соединённые попарно параллельно.
В качестве «спинного»
Снизу «бутерброда» находится микроконтроллер, сверху- шилд для управления двигателями. Прямо на нас смотрят разъёмы 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-устройство.
Ну и на сладкое- видео:
Автор: kotapaulta