Общеизвестно, что "младшие" модели Румб, а все Скубы и подавно, не имеют функции автоматического запуска по расписанию (планировщика). Описываемая ниже поделка призвана устранить этот недостаток, а в случае со "старшими" моделями значительно расширить функционал штатного планировщика. Причем, на мой взгляд, огромный плюс устройства в том, что оно может быть исполнено в самом разнообразном конструктиве - встроено в родной ИК-пульт, в базу, в виртуальную стену или прямо в робота; в виде самодельного ИК-пульта с функцией планировщика или полнофункционального автономного устройства с клавиатурой и ЖК-дисплеем. (Скубы 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
Установка фьюзов:
Спасибо за внимание.