Программатор планировщика и автоматический активатор уборки в режиме "MAX" для iRobot Roomba
Представляю вашему вниманию финальную версию маленького, простого и супердешёвого устройства для настройки расписания автоматической уборки в любой Румбе 500-800-й серий. Т.е. с помошью него можно использовать в автоматическом режиме в т.ч. и младшие модели Roomba (510-539-е и 610,620,630-е).
Дополнительная функция - возможность запрограммировать автоматическую подмену обычной уборки на уборку в режиме "MAX" - уборку максимальной длительности до разряда батарей, аналогично Румбам 400-й серии.
Теория вопроса.
Как правило, iRobot разделяет модельные ряды на три ценовых сегмента.
В роботах дешёвого ценового сегмента (510-539-е и 610,620,630-е) предполагается "ручной" запуск на уборку, соответственно роботы не имеют кнопок для настройки времени/расписания_автоматической_уборки.
В роботах среднего ценового сегмента (550-569-е, 650-669-е и 760-779) есть возможность настроить время и расписание автоматической уборки.
Роботы из высшего ценового сегмента (580-599 и 780-799) вдобавок ко всему вышеописанному имеют возможность работать с навигационными маяками.
Пикантность ситуации состоит в том, что роботы из 500 и 600-х модельных рядов построены на единой "платформе" - т.е. платы внутри них имеют минимальные различия.
Соответственно, дешёвым роботам работать с расписанием мешает только отсутствие на плате кнопок и индикаторов, а за работу с навигационными маяками отвечает наличие радиомодуля на плате (см. Робот-уборщик Roomba Floor Vac (часть 3), #4537 ). Т.е. если бы существовал "безкнопочный" способ "загнать" в дешёвого Румбу расписание, то проблема была бы решена. И такой способ есть - через сервисный разъём Румба позволяет делать с собой практически всё, что угодно!
Переходим к практике.
Устройство реализовано на микроконтроллерах ATtiny13 и ATTiny2313 в двух версиях - внешней и встраиваемой. Различия в версиях - только в назначении функций на выводы микроконтроллера для удобства сборки.
Схема и реализация внешнего программатора Roomba:
Схема и реализация встроенного программатора на Roomba 5xx/6xx:
И на ATTiny2313:
Устройство позволяет запрограммировать одно из 7-ми расписаний, которое выбирается кнопками CLEAN, SPOT и DOCK - см.таблицу
Часы робота устанавливаются в зависимости от того, нажат ли бампер во время программирования. Если бампер не нажат - и часы, и время запланированных уборок устанавливаются на текущее время. Если нажата правая сторона бампера - время устанавливается на +12 часов относительно текущего. Если нажата левая сторона бампера - время устанавливается на +6 часов относительно текущего. Если нажаты обе стороны бампера - время устанавливается на -12 часов относительно текущего.
Установленное расписание можно удалить сбросом робота (нажать одновременно кнопки Dock и Spot и удерживать их в течение 15 сек.), после чего отпустить кнопки и больше их не нажимать.
Если программирование расписания производится на стоящем на полу роботе, режим уборки "MAX" использоваться не будет. Для задействования режима уборки "MAX" программирование расписания необходимо проводить на роботе со свободно висящими колёсами, например держать его на руках. При этом после программирования расписания робот издаст дополнительно два коротких "писка".
Работу устройства по включению режима "MAX" можно проконтролировать при запуске робота на уборку - во время первого прямолинейного участка движения робот остановится и через секунду вновь начнёт убирать, но при этом в отличие от обычного режима уборки подсветка кнопки "DOCK" будет гореть непрерывно.
Следует помнить №1 - для работы в режиме "MAX" устройство во внешнем исполнении должно быть вставлено в разъём робота ПОСТОЯННО.
Следует помнить №2 - устройство во встраиваемом исполнении может мешать работе других устройств, подключаемых в разъём робота!
Следует помнить №3 - расписание, часы и режим уборки "MAX" сбрасываются при вынимании батареи из робота и при полном разряде батареи. В таком случае надо заново запрограммировать расписание и использование режима "MAX".
ПОЛНЫЕ версии прошивок, подробные инструкции и прочие файлы проекта здесь - https://yadi.sk/d/c7nZtww1m5bYE
Тактовую частоту контроллера установить на 9,6МГц.
Видео (встроенное устройство, устанавливаем расписание №3, первый старт через минуту, режим "MAX" активирован и включается на 1:25 видео) - https://yadi.sk/i/90TgoEn4mVZJK