Расширенный многофункциональный планировщик для iRobot

Расширенный многофункциональный планировщик для iRobot

Сообщение Serge_ISA » 18 дек 2017, 12:45

Общеизвестно, что "младшие" модели Румб, а все Скубы и подавно, не имеют функции автоматического запуска по расписанию (планировщика). Описываемая ниже поделка призвана устранить этот недостаток, а в случае со "старшими" моделями значительно расширить функционал штатного планировщика. Причем, на мой взгляд, огромный плюс устройства в том, что оно может быть исполнено в самом разнообразном конструктиве - встроено в родной ИК-пульт, в базу, в виртуальную стену или прямо в робота; в виде самодельного ИК-пульта с функцией планировщика или полнофункционального автономного устройства с клавиатурой и ЖК-дисплеем. (Скубы 3-й серии запустить с помощью этого планировщика не удастся, т.к. через некоторое время после включения они уходят в спящий режим и перестают реагировать на ИК-команды. Со Скубами 4хх работать должно, но проверить я не могу).

Программирование расписания автоматического запуска робота выполняется через последовательный интерфейс на компьютере или смартфоне в терминальной программе. При подключении к планировщику BlueTooth-Serial-адаптера это можно делать на расстоянии без проводов. При исполнении устройства в варианте с кнопками, все его функции доступны с кнопок.
Планировщик позволяет сохранить до 100 "автостартов" (технически возможно увеличить до 250, но, по моему мнению, смысла в этом нет) в формате "День_недели:Часы:Минуты". Запланированные "автостарты" записываются во внутреннюю флэш-память и при отключении питания планировщика не теряются.
Команды роботу планировщик передаёт посредством инфракрасного светодиода, аналогично родному ИК-пульту. В варианте, когда планировщик встраивается в родной ИК-пульт, используется ИК-светодиод пульта. Т.е. для нормальной работы планировщика требуется располагать его в прямой видимости робота.

Блок-схема планировщика:
Изображение

"Мозг" устройства - микроконтроллер AVR ATMega8/ATMega8A. Остальные "модули" могут присутствовать или отсутствовать, что и будет определять итоговую функциональность планировщика.

Модуль "Serial interface" - основное средство "общения" с планировщиком, поэтому отсутствовать может только в варианте планировщика с клавиатурой и ЖК-дисплеем. Скорость передачи данных - 115200 бод. Посредством этого интерфейса можно подключить планировщик к компьютеру через COM-порт (не напрямую (!), потребуется адаптер COM<->TTL_serial), через USB-порт (потребуется адаптер USB<->TTL_serial) или (на мой взгляд самый удобный вариант) через BlueTooth (потребуется адаптер BlueTooth<->TTL_serial).

Модуль "Keyboard" - клавиатура из пяти кнопок: SCHEDULE/CLEAN, CLOCK/DOCK, MINUTE/RIGHT, HOUR/FORWARD и DAY/LEFT. В варианте планировщика с ЖК-дисплеем кнопки могут работать в двух режимах - управления планировщиком и ИК-пульта (переключение через терминал или одновременным нажатием кнопок DAY+HOUR+MINUTE). В варианте без ЖК-дисплея - только в режиме ИК-пульта. По уровню сигнала на 24-й ножке контроллер определяет режим работы кнопок.

Модуль "IR_transmitting_LED" - ИК-светодиод с усилителем. Посредством этого модуля и происходит собственно управление роботом. Отсутствовать может только в варианте для встраивания в оригинальный Румбовский ИК-пульт - в этом случае используется ИК-светодиод самого пульта. По уровню сигнала на 6-й ножке контроллер определяет наличие светодиода.

Модуль "Adapter for IR RC" - схема сопряжения с оригинальным Румбовским ИК-пультом. Понятно, что нужна только в варианте для встраивания в Румба-пульт.

Модуль "Battery_Voltage_Sensor" - схема контроля напряжения питания. Автоматически настраивается на работу с литиевым аккумулятором (3,6В) или двумя 1,5 Вольтовыми батарейками (3В) и предупреждает о разряде ниже допустимого уровня. Если не планируется использовать контроль напряжения батареи, нужно подключить 23-ю ножку контроллера к "+" питания.

Модуль "LCD_Display" - стандартный ЖК-дисплей 2-строки по 16 символов, желательно с подсветкой. Его отсутствие автоматически приводит к невозможности пользоваться "планировочными" функциями клавиатуры. В первой строке дисплея отображается текущее время в формате ЧАСЫ:МИНУТЫ и текущий день недели. Во второй строке отображается статусная информация о текущем режиме работы планировщика и информация "автозапусков" при её просмотре и редактировании.

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

Простая схема планировщика для встраивания в оригинальный Румбовский ИК-пульт:
Изображение

В этом варианте программирование "автозапусков" возможно только через терминал посредством последовательного интерфейса (COM- , USB-порты или BlueTooth). Управление роботом осуществляется путём эмуляции нажатия на кнопку "Clean" на пульте. Режим работы планировщика можно отслеживать по светодиоду пульта, который отключается от оригинальной схемы и подключается к планировщику. Контроль батареи - по желанию.

Простая схема автономного планировщика без кнопок:
Изображение

Такой вариант может быть реализован в виде отдельной "коробки" с батарейным питанием или встроен в базу, в виртуальную стену или прямо в робота (или подключен к его разъёму). В этом варианте программирование "автозапусков" так же возможно только через последовательный интерфейс. Управление роботом осуществляется путём передачи ИК-команд "своим" ИК-светодиодом. Режим работы планировщика можно отслеживать по светодиоду, но можно его и не подключать. Контроль батареи - по желанию.

схема самодельного ИК-пульта дистанционного управления с функцией планировщика:
Изображение

Функциональность в качестве ИК-пульта полностью аналогична оригинальному Румбовскому ИК-пульту. Команда SPOT посылается при одновременном нажатии на кнопки CLEAN и DOCK. В остальном функциональность аналогична предыдущему варианту.

Схема максимально функционального варианта планировщика:
Изображение

Такой вариант напрашивается на реализацию в виде отдельной "коробки" с батарейным или сетевым питанием, хотя можно попытаться встроить его и в базу по примеру китайских роботов-пылесосов. Программирование "автозапусков" возможно как через последовательный интерфейс, так и кнопками (или только кнопками). Кнопки можно переключить в режим работы ИК-пульта и обратно в режим планировщика (через терминал или одновременным нажатием кнопок DAY+HOUR+MINUTE). На дисплее отображается текущее время и день недели, статусная информация и информация "автозапусков".



Переходим к практике

Плата оригинального Румбовского ИК-пульта и точки подключения:
Изображение

Мой вариант реализации планировщика по схеме рис.2.

Планировщик, внедрённый в Румба-пульт:
Изображение

Разъём планировщика для подключения BlueTooth-адаптера:
Изображение

Подключенный на момент программирования BlueTooth-адаптер:
Изображение

Как видно на фотографиях, в Румба пульт прекрасно влезает контроллер даже в DIP-корпусе.
Потребление пульта после внедрения планировщика возрастает с 0,07мА до 2,6мА - хороших батареек будет хватать примерно на пару месяцев, увы. При периодической надобности в планировщике можно установить выключатель питания для него.


Вариант планировщика, встроенный в док Румбы:

Контроллер с BlueTooth-адаптером на плате дока:
Изображение

ИК-Светодиод планировщика:
Изображение

"Окошко" ИК-светодиода планировщика:
Изображение

Контрольный светодиод планировщика (красный) на плате:
Изображение

Контрольный светодиод планировщика (красный):
Изображение



"Максимальный" вариант планировщика.:
Изображение

Выглядит непрезентабельно, ибо отладочный прототип.




Функции текущей версии.

Светодиод, подключенный к 28-ножке контроллера, позволяет контролировать работу планировщика.

Каждые 20 сек. светодиод производит серию коротких вспышек.
1 вспышка - нормальная работа планировщика, в памяти есть запланированные "автозапуски", напряжение батареи в норме.
2 вспышки - память планировщика пуста, напряжение батареи в норме.
3 вспышки - в памяти есть запланированные "автозапуски", низкое напряжение на батарее.
4 вспышки - память планировщика пуста, низкое напряжение на батарее.
5 вспышeк - в памяти есть запланированные "автозапуски", батарея сильно разряжена.
6 вспышeк - память планировщика пуста, батарея сильно разряжена.

Работа через последовательный интерфейс.

Помощь по командам и текущий статус планировщика:
Изображение

При включении планировщика на терминал выводится информация о версии прошивки, помощи по доступным командам (их состав зависит от варианта исполнения), текущее время/день недели, режим работы клавиатуры, напряжение батареи, и запланированные "автостарты" из флэш-памяти. Информация о версии прошивки и помощи по доступным командам выводится в ответ на ввод любой неподдерживаемой команды.
При (пере)подключении питания время будет сброшено на 00:00_первый_день_недели. Флэш-память при первом включении естественно будет пуста.

Ввод текущего времени:
Изображение

Команда "t" - ввод текущего времени. Будут последовательно запрошены день недели, часы и минуты. Введённая информация будет выведена на терминал для контроля.

Ввод времени "автозапусков" планировщика:
Изображение

Команда "i" - ввод времени "автозапусков" планировщика. Предыдущие "автозапуски", если они были, будут стёрты (т.е. всю информацию надо вводить за один сеанс, из терминала произвольное редактирование ячеек не предусмотрено). Будут последовательно запрошены день недели, часы и минуты для каждой из 100 ячеек. Если нет потребности во вводе всех 100 ячеек, ввод можно завершить, введя вместо дня недели "0" или нажав "Enter".
Вводить время "автозапусков" можно в произвольном порядке (не по возрастанию), контроль ввода одинаковых не производится, из нескольких одинаковых "сработает" тот, что хранится в ячейке с меньшим номером.

Текущее время, статус и заполненные ячейки планировщика:
Изображение

Команда "p" - вывод на терминал текущего времени, статуса и заполненных ячеек планировщика.

Переключение режима работы кнопок:
Изображение

Команда "r" - переключение режима работы кнопок Планировщик/Пульт_ДУ. В терминал будет выведено соответствующее сообщение

Передача команд роботу:
Изображение

Команды "c", "s", "d" и клавиши управления курсором "Вверх", "Влево", "Вправо" - передача команд роботу аналогично пульту ДУ. В терминал будет выведено соответствующее подтверждение (см.рис.6)



Работа с кнопками и ЖК-дисплеем.

Результат всех действий в терминале отображается и на ЖК-дисплее.

Установка текущего дня недели и времени:
Изображение

При включении планировщика в первую строку выводится текущее время и день недели (первый_день_недели_00:00), во вторую - состояние памяти планировщика. Сообщение "Sсhedule empty" в данном случае означает, что память планировщика пуста.
Удерживая кнопку "CLOCK" и нажимая кнопки "DAY", "Hour" и "Minute" можно установить текущие день недели и время.

Выбор ячейки планировщика:
Изображение

Удерживая кнопку "SCHEDULE" и нажимая кнопки "CLOCK", "DAY", "Hour" и "Minute" можно запрограммировать планировщик. При этом кнопкой "CLOCK" выбирается ячейка памяти планировщика (её трёхзначный номер отображается в первых позициях второй строки дисплея), пустые ячейки отображаются как "empty".

Программирование ячейки планировщика:
Изображение

Кнопками "DAY", "Hour" и "Minute" устанавливаются день недели и время "автозапусков"
Для удаления времени "автозапуска" из ячейки нужно выбрать кнопкой "DAY" значение "empty". Порядок заполнения и редактирования ячеек планировщика произвольный.

Режим планировщика:
Изображение

Если в памяти планировщика есть хоть один запрограммированный "автостарт", во второй строке дисплея будет выведен статус "Mode: Sсheduler"

Режим ИК-пульта:
Изображение

При переключении режима работы кнопок в режим "Пульт_ДУ" через терминал или нажатием одновременно кнопок "DAY", "Hour" и "Minute", во второй строке дисплея будет выведен статус "Mode: IR remote"

Так-же во вторую (статусную) строку дисплея может выводится информация о разряженной батарее и о сработавшем "автозапуске".
Подсветка дисплея включается после нажатия любой из кнопок и работает ещё 10 сек. после отпускания последней нажатой кнопки. Подсветка так-же включается при смене статуса планировщика.


Проект написан на Bascom-AVR 2.0.7.5.
Ссылка на прошивки и прочие файлы проекта - https://yadi.sk/d/NdyIeAjdbf6Ap

Установка фьюзов:
Изображение

Спасибо за внимание.
Serge_ISA
 
Сообщения: 54
Зарегистрирован: 21 май 2014, 11:43
Откуда: SPb
прог. языки: Bascom AVR

Вернуться в Роботы-пылесосы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron