Irobot scooba 390 ремонт своими руками

roboforum.ru

Технический форум по робототехнике.

  • Список форумовТематические разделыРоботы-пылесосы
  • Изменить размер шрифта
  • Версия для печати
  • Магазин
  • Правила
  • Wiki
  • FAQ
  • Регистрация
  • Вход

Восстановление iRobot Scooba 230 — самодельный контроллер

Восстановление iRobot Scooba 230 — самодельный контроллер

Serge_ISA » 21 авг 2014, 22:41

Вместо предисловия.
В мае месяце попросил я у многоуважаемого yak-40 прошивку и исходники к его проекту «Робот пылесос на базе RV-2» http://roboforum.ru/forum88/topic4951-180.html
В результате я ими не воспользовался, хотя кое-какие идеи почерпнул. Но, чувствуя некоторую ответственность, выкладываю результаты своего труда.

Итак.
Имея за плечами некоторый опыт восстановления Roomba и Scooba 3xx, я думал, что неплохо знаю продукцию iRobot.
Как я ошибался! Знал бы я какое количество «гемороя» меня ждёт, когда покупал по дешёвке неисправную Scooba 230!
Но по-порядку.
Как-то, увидев объявление о продаже неисправной Scooba 230, я не особо раздумывая её приобрёл — ведь такой зверушки в моей коллекции ещё не водилось.
Если бы сначала почитал форумы, я бы не поступил столь опрометчиво. Ведь оказалось, что Scooba 230 — аппарат АБСОЛЮТНО НЕРЕМОНТОПРИГОДНЫЙ!
Да, их не ремонтируют, их просто заменяют по гарантии или выбрасывают! Это, кстати, объясняет и столь высокую цену на них.

Но мне терять было уже нечего, поэтому решено было сделать из ЭТОГО хоть что-то полезное.
У купленной мной Скубы оказалось две проблемы. Первая — она не включалась и вообще не подавала никаких признаков жизни.
Вторая — та самая, из-за которой большинство 230-х Скуб сдаётся в сервис-центр — дырявый «пузырь» для чистой воды.
Здесь будет история про восстановление контроллера. Ремонт пузыря — это отдельная история.

Попытка отремонтировать контроллер окончилась полным провалом (см. фото 1-4) — оказалось, что контроллер залит каким-то весьма твёрдым компаундом.
С трудом отковыряв его, я получил какой-никакой доступ к плате, но этого было мало.
Попытка снять плату закончилась тем, что почти все детали с неё оторвались и остались в этом жутком компаунде.
Браво, iRobot! Такого я ещё не видел.




Самое смешное заключается в том, что при абсолютно одноразовой конструкции, все датчики и механизмы к плате подключаются разъёмами!

Таким образом я получил то, о чем уже давно подумывал — готовую платформу для создания собственного робота!
Такие вещи стоят довольно ощутимых денег, а тут всё что нужно (корпус, колёса с моторами/редукторами и куча датчиков) и почти даром.
Поэтому было решено делать собственный контроллер и писать для него софт, такой, какой душа пожелает.

Для начала с помощью всяческого инструмента и такой-то матери был удален компаунд из корпуса (см.фото 5)- стало возможным оценить пространство для размещения контроллера.

Далее были выяснены назначения всех разъёмов — см.фото 6 (не буду углубляться в подробности, но это было не просто).

Далее была проведена ревизия коробок с радиохламом и выбран кандидат на «мозг» — им оказался контроллер Atmel ATMega8. Забегая вперёд скажу, что надо было брать ATMega16, на неё можно было бы повесить все датчики и не мучаться с катастрофической нехваткой ног.
Схема в процессе работы несколько раз менялась:
рис.7 — схема для работы с Cliff-сенсорами, работа с Wall- и Virtual_Wall-сенсорами не предполагается;

рис.8 — схема для работы с Wall- и Virtual_Wall-сенсорами, работа с Cliff-сенсорами не предполагается (к тому времени в процессе экспериментов я их «удачно» подпалил);

рис.9 — финальная схема для работы с Virtual_Wall-сенсором и Serial-BlueTooth-адаптером, работа с Wall- и Cliff-сенсорами не предполагается.

Рис.10 — расчёты всяких делителей и прочего для всех схем.

Кроме того, в процессе экспериментов перестали работать родной динамик (заменён на внешний) и светодиод «Ok» (вместо него я использую зелёный светодиод «Power»).

Контроллер был собран на макетной плате (см. фото 11). Предвосхищая вопросы — да, я не считаю нужным делать нормальную печатную плату для единичного изделия.

Установлен в корпус вместе с BlueTooth-адаптером (см. фото 12) и залит термоклеем (см. фото 13).

В качестве среды для написания управляющей программы знакомый по предыдущим проектам ассемблер очень пугал, поэтому был освоен BascomAVR (уже польза!) — очень приятная оказалась среда разработки.
Т.к. описываемый проект — это «живой» полигон для тренировки, а не законченный продукт, то программа постоянно переделывается. Ссылки на текущие исходник и прошивку — https://yadi.sk/d/35_ZunswZY8Pd

Что реализовано в текущей версии:
1. Зарядка/подзарядка аккумулятора (можно использовать литий).
Т.к. родное зарядное устройство у меня не заработало (то ли битое, то ли что-то ему нужно для нормальной работы), то используется блок питания 9в/0.5А от какого-то модема.
При подключённом заряднике режим работы индицируется красным и зелёным светодиодами «Power»:
красный горит, зелёный не горит — идёт зарядка, напряжение на аккумуляторе менее 6В,
красный мигает, зелёный не горит — идёт зарядка, напряжение от 6 до 8 В,
зелёный горит, красный не горит — идёт зарядка, если напряжение на аккумуляторе растёт от 8 до 8,4В или зарядник отключён, если напряжение на аккумуляторе дошло до 8,4В и теперь может падать до 8В.
2. Режим уборки.
Чтобы включить режим уборки, нужно отключить зарядное устройство, если оно подключено (контроль подключённого зарядника), налить в бак чистой воды (контроль наличия воды) и кратковременно нажать кнопку «Power».
Если аккумулятор не разряжен, подсветится зелёным кнопка «Clean». В течении 2 мин. кнопка будет светиться, ожидая нажатия. Если нажатия не будет, робот отключится.
Если нажать на светящуюся кнопку «Clean», робот издаст серию звуков и начнёт 20-минутный цикл уборки, подсветка кнопки «Clean» при этом будет мигать.
В текущей версии программы реализованы два типа движения — по левой или правой псевдоспирали и псевдохаотическое передвижение.
С движения по спирали робот начинает цикл уборки и переходит к псевдослучайным перемещениям при столкновении с препятствием. Впоследствии, если в течение 20 сек. не было столкновения с препятствием, робот снова переходит в движениям по спирали до очередного столкновения. И т.д.
Цикл уборки может заканчиваться по нажатию кнопки «Clean», окончанию чистой воды в баке, разрядке аккумулятора, по прошествии 20 мин. с начала уборки или если робот застрял и не смог самостоятельно выбраться.
3. Режим антизастревания.
Если в течение 4-х минут не было срабатывания датчиков бампера или датчики бампера постоянно находятся в сработавшем состоянии, робот «считает». что застрял.
В этом случае выключаются моторы помпы и насоса и робот пытается выбраться, «раскачиваясь» вперёд-назад/назад-вперёд и пытаясь развернуться по псевдослучайному
алгоритму. После 10 попыток, если ситуация с датчиками бампера не меняется, робот «считает». что застрял окончательно.
В этом случае выключаются все моторы, мигает красный светодиод «Error» и 100 раз воспроизводится короткий звуковой сигнал.
Если в процессе этого действа будет нажата кнопка «Clean», робот продолжит цикл уборки (т.е. считает, что человек его освободил на дал команду на продолжение).
Если кнопка нажата не будет, робот отключается с зажжёным индикатором «Error».
4. Работа с виртуальной стеной Scooba.
Тут всё, как обычно — при приближении к стене робот отворачивает от её ИК-луча.
5. Работа через BlueTooth-адаптер.
Посредством BlueTooth-адаптера робот может общаться с хост-системой через эмуляцию стандартного COM-порта с параметрами 2400,8,N,1.
«Общение» происходит путём передачи роботу символов команд и приёмом со стороны робота различных сообщений.

Читайте также:  Ремонт судна или сооружение для постройки

В текущей версии программы поддерживаются следующие команды:
? — помощь по командам,
s — вывод статусной информации: текущий режим работы робота, состояние датчиков аккумулятора, бака чистой воды и кнопок, а также оставшееся время уборки.
w — включение питания, равносильно нажатию кнопки «Power». Не доступно, если подключён зарядник.
с — включение режима уборки, равносильно нажатию кнопки «Clean». Не доступно, если подключён зарядник или не включено питание.
Далее следует группа команд, управляющая движением робота и включением/выключением исполнительных механизмов. Эти команды доступны только если не подключён зарядник, включено питание, но не активирован режим уборки).
Курсорные клавиши — движение вперёд/назад, повороты вправо/влево. Срабатывания датчиков бампера не учитываются.
Пробел — стоп/продолжить движение.
p — включить/выключить мотор помпы,
v — включить/выключить мотор насоса.

Спасибо за внимание.

Re: Восстановление iRobot Scooba 230 — самодельный контролле

Madf » 22 авг 2014, 11:09

Re: Восстановление iRobot Scooba 230 — самодельный контролле

Serge_ISA » 03 сен 2014, 17:46

Не судите строго — первый мой большой проект вообще, и на Bascom-е в частности. Понятно, что там пилить и пилить.

К тому-же IMHO не настолько он и ужасен — при обалденной простоте реализации площадь худо-бедно покрывает и нигде не застревает. А что ещё надо? К тому-же тут надо иметь ввиду, что 230я скуба «работает телом» , щётки у неё неподвижны, и, по идее, чем больше резких переменных нагрузок ляжет на щётки, тем лучше она должна оттирать полы. Если удастся восстановить пузырь, эти гипотезы можно будет проверить.

Re: Восстановление iRobot Scooba 230 — самодельный контролле

Serge_ISA » 03 сен 2014, 21:48

Изменения/добавления в текущей версии (ловля багов и оптимизация подразумеваются сами собой):
6. Работа со всеми ИК-аксессуарами Scooba_2xx-3xx/Roomba_5xx-7xx, которые я смог наскрести.
Поддерживаются:
— Scooba Virtual Wall (а т.к. параметры сигнала Скубовской стенки сильно «гуляют» в зависимости от всего, то заодно поддерживается куча всего, передающего ИК-сигнал, близкий к меандру с периодом от 1.52 до 4,8 мсек. В частности, работает со стенкой от китайского пылесоса),
— Roomba Auto Virtual Wall,
— Roomba IR Remote (ИК-пульт, короче говоря),
— Roomba Compact Base (пока только декодируются её сигналы, ибо что с нею делать, непонятно. Возможно потом прикола ради попробую написать процедуру захода на неё).

Найденные в процессе экспериментов параметры сигналов:

Re: Восстановление iRobot Scooba 230 — самодельный контролле

ruslanpopov » 27 окт 2014, 16:15

Re: Восстановление iRobot Scooba 230 — самодельный контролле

Serge_ISA » 27 окт 2014, 23:42

С пузырём там беда — в некоторых партиях через несколько месяцев эксплуатации материал пузыря растрескивается и получается множество дыр. Точно подтверждена информация о проблемной партии, произведённой в марте 2012г. (мой случай). Так-же если Скуба в процессе работы засосёт что-нибудь острое, пузырь может быть повреждён. А т.к. конструкция у этого робота одноразовая, то дефектные гарантийные роботы тупо меняют на новые, а негарантийные .

Добавлено спустя 2 минуты 27 секунд:
Re: Восстановление iRobot Scooba 230 — самодельный контроллер
Продолжаем разговор.

Теперь дошла очередь и до нового пузыря.

Моя Скуба относится как раз к злополучной серии, произведённой в марте 2012 года. Пузыри, установленные
в эту серию, через несколько месяцев эксплуатации трескаются во многих местах. Технологии замены дырявых пузырей на 230-й Скубе не существует, в сервис-центрах гарантийные Скубы меняют на новые.
Так что ниже написанное можно считать know-how.

Итак, для начала через Fill-порт был грубо выдран родной пузырь. Вот его плачевное состояние:

Далее начались поиски подходящего «донорского» пузыря. По всем параметрам должна была подойти ёмкость из состава систем хранения донорской крови, типа такой:

Но найти такую оказалось невозможно — в аптеках и магазинах медоборудования их не продают.

Но в одном из магазинов медоборудования была найдена такая вот штука по цене аж 26 руб.:

Там-же была куплена система для переливания крови, трубочки из её состава очень пригодились:

Первым делом от пузыря были отрезаны все лишние «хвостики» и «крылышки».
Далее была подобрана трубка, по диаметру чуть меньше, чем горлышко Fill-порта.

От неё отрезан кусок, из которого было сделано новое заливное «горло»:

Широкая трубка вырезана из пузыря, новое горлышко вклеено в пузырь суперклеем:

Сливная трубка пузыря укорочена почти «в ноль»:

Удалён обратный клапан (в оригинальном девайсе он препятствует вытеканию содержимого):

Это было проделано через новую широкую горловину при помощи длинной иглы и тонкого пинцета. Тут главное не повредить сам пузырь.

Аккуратно удалён штуцер слива из бака:

По диаметру тонкой трубки (она как раз входит внутрь штуцера) просверленно отверстие — насквозь внутрь скубовского бака. В отверстие пропущена трубка, второй её конец пропущен через Fill-порт.

Трубка, пропущенная в бак Скубы:

Соединительная «муфточка» на конце трубки. Она помогла соединиться с более широкой сливной трубой пузыря:

Соединение трубок получилось очень плотным, но для надёжности залито ещё и суперклеем:

Далее пузырь был сложен «гармошкой» и просунут через Fill-порт в бак. Сливная трубка вытянута, насколько можно. Новая «заливная горловина» заняла своё место и для герметичности опять-же залита суперклеем:

Читайте также:  Ремонт подвеса диффузора динамика своими руками

Сливная трубка обрезана с отступом в 1,5 см, чтобы можно было надеть на неё штуцер:

Штуцер надет на трубку (и тут суперклей):

Штуцер вставлен на клею на своё место:

Нижняя крышка Скубы несёт на себе «задние» сопла для разбрызгивания воды. В своё время в процессе восстановления контроллера нижняя крышка была снята (оторвана), а подающая трубка аккуратно перерезана. Для восстановления этой трубки от толстой иглы из системы перелива крови был отрезан кусок примерно в 7мм:

Отрезанный кусок иглы вставлен в отверстие трубки на крышке Скубы:

При вклейке крышки ответная часть вставлена в отверстие трубки на корпусе Скубы и соединение залито клеем и замазано герметиком:

Нижняя крышка Скубы приклеена к корпусу с помощью силиконового автомобильного герметика, который заполнил все щели:

Загерметизированное место соединения трубки, подающей воду к задним соплам:

Отверстие для разъёма программирования контроллера заклеено скотчем:

При сверлении отверстия через подающий штуцер в бак, повреждается датчик CTE (Clear Tank Empty — Бак чистой воды пуст). А даже если бы он не повреждался, трубка от нового пузыря, пропущенная через просверленное отверстие, не позволяет контактировать датчику с чистой водой из пузыря. Поэтому мне в моём самодельном контроллере пришлось отказаться от работы с этим датчиком, а освободившийся вход использовать для контроля температуры аккумулятора.

В случае восстановления пузыря на Скубе с родным контроллером, придётся делать блокировку для датчика CTE, иначе Скуба откажется работать.

Для блокировки датчика CTE необходимо срезать небольшой кусок пластика с нижней крышки и аккуратно удалить
компаунд с угла платы для доступа к ножкам разъёма этого датчика:

На крайние ножки разъёма припаять резистор сопротивлением 1-10 кОм, после чего плату загерметизировать герметиком или эпоксидным «пластелином»:

Добавлено спустя 10 минут 35 секунд:
Re: Восстановление iRobot Scooba 230 — самодельный контроллер
Т.к. после восстановления «пузыря» перестал работать датчик CTE (Clear Tank Empty — Бак чистой воды пуст), то мне в моём самодельном контроллере пришлось отказаться от работы с этим датчиком, а освободившийся вход теперь используется для контроля температуры аккумулятора во время зарядки.

Изменённая схема:

После пробных запусков с новым пузырём, вылезло много новых ньюансов.
Не с пузырём, с ним-то как раз пока всё нормально — сдувается-надувается, вода сливается, утечек нет. А вот программу контроллера пришлось «пилить» дальше.
Во-первых, без датчика сте мне показалось бессмысленно работать по времени, логичнее работать до разряда батарей (или до выключения пользователем).
Во-вторых, батарея у меня оказалась поддохшая, хватает на 35 мин. работы.
В-третьих, скорость движения была задрана — плохо прижималась к полу и плохо собирала грязную воду.
В-четвёртых, оказалось, что вся чистая вода выливается примерно за 10-12 мин. потом водяная помпа работает впустую.

Поэтому, исходя из вышесказанного, изменён алгоритм работы водяной помпы и вакуумного насоса — первые 12 мин. после запуска ездит быстро с работающими помпой и насосом. При маневрировании помпа временно отключается. После 12 мин. работы робот отключает помпу, в 1.5-2 раза снижает скорость движения и ездит с работающим насосом до разряда батареи.

Ссылки на текущие исходник и прошивку — https://yadi.sk/d/35_ZunswZY8Pd

Видео с результатом работы восстановленной Скубы:
https://yadi.sk/i/kK_K9v-ecPnBj

Re: Восстановление iRobot Scooba 230 — самодельный контролле

Serge_ISA » 05 ноя 2014, 16:08

По логике работы 230-й Скубы, для достижения хороших результатов она должна активно «двигать телом», чтобы работали её неподвижные щётки. А что мы видим на практике? Прямолинейные движения со случайными поворотами и спирали. И всё! Но если присмотреться, то в самом начале уборки оригинальная Скуба делает вот такой финт, который больше не повторяет — https://yadi.sk/i/wdZhnZnWcVpHM

Очень понравилось мне это «виляние задом», так что теперь реализован новый «примитив» движения.
Видео раз — https://yadi.sk/i/38sSnq2ecVpHb
Видео два — https://yadi.sk/i/3HA6uYzYcVpHV

В текущей версии алгоритм движения таков:
— если с момента срабатывания бампера прошло

от 0 до 4 сек., двигаемся прямолинейно, помпа работает;
— на 4-й сек. если ещё есть вода, отключаем помпу, разворот на 180 град. и едем «виляя задом» по только что намоченному, и так до 14й сек.;
— на 14й сек. поворот случайно направо или налево на 90град., включили помпу, и вперёд прямолинейно до 20й сек.;
— с 20й сек. начинаем спираль.
В любой момент при срабатывании бампера — манёвр уклонения на случайный угол. Для более экономного расхода воды помпа работает только при прямолинейном движении (в т.ч. и в составе «спиралей»).

Субъективно мыть пол Скуба стала лучше. Для объективности грядёт сравнение с «оригинальной» Скубой.

Re: Восстановление iRobot Scooba 230 — самодельный контролле

Kulverstukas » 05 ноя 2014, 17:43

Re: Восстановление iRobot Scooba 230 — самодельный контролле

Serge_ISA » 05 ноя 2014, 18:20

Да какой там молодец. Ничего там не продумано, лепится всё «по ходу пьесы», опыта ведь никакого. Программа написана страшно, сплошные заплатки. Сейчас с высоты полученного опыта многое сделал бы не так. Впрочем, ради этого (наработки опыта) всё и затевалось.

У меня как раз с механикой вечно не складывается. А тут «не было бы счастья, да несчастье помогло».

Уже. «Виляние задом» в исполнении моего робота это и есть «змейка», только с очень короткими прямолинейными участками.

Re: Восстановление iRobot Scooba 230 — самодельный контролле

Serge_ISA » 01 дек 2014, 17:57

Ну что ж, проект потихоньку движется к завершению, т.к. в текущей версии меня почти всё устраивает, и Скуба уже некоторое время как «встала на боевое дежурство».

В текущей версии 7.17 реализовано:
1. Зарядка/подзарядка аккумулятора.
Уже пару недель как я перешёл на литий-ионный аккумулятор емкостью 1600мАч.
Т.к. родное зарядное устройство слишком «умное» и просто так не работает, то я использую блок питания 9в/0.5А от какого-то модема.
При подключённом заряднике режим работы индицируется красным и зелёным светодиодами «Power»:
красный горит, зелёный не горит — идёт зарядка, напряжение на аккумуляторе менее 6В,
красный мигает, зелёный не горит — идёт зарядка, напряжение от 6 до 8 В,
красный мигает, зелёный горит — идёт зарядка, напряжение от 8 до 8,4 В,
зелёный горит, красный не горит — напряжение больше 8,4В.
В процессе зарядки производится контроль температуры аккумулятора.
2. Режим уборки.
Чтобы включить режим уборки, нужно отключить зарядное устройство, если оно подключено (контроль подключённого зарядника) и кратковременно нажать кнопку «Power».
Если аккумулятор не разряжен, подсветится зелёным кнопка «Clean». В течении 2 мин. кнопка будет светиться, ожидая нажатия. Если нажатия не будет, робот отключится.
Если нажать на светящуюся кнопку «Clean», робот проиграет стартовую мелодию и начнёт 35-минутный цикл уборки («длинная уборка»).
Если одновременно с кнопкой «Clean» нажать и кнопку «Power», робот проиграет другую стартовую мелодию (ноты мелодий хранятся в EEPROM в формате Длительность:Тон:Пауза (по 3 байта на ноту)) и начнёт 20-минутный цикл уборки («короткая уборка»).
Во время уборки подсветка кнопки «Clean» будет мигать.
Экспериментально установлено, что вся чистая вода из «пузыря» выкачивается примерно за 13-15 мин. Пэтому в «длинном» цикле уборки помпа, разбрызгивающая чистую воду, работает первые 15 мин., в «коротком» цикле — 7 мин.
Оставшееся время до окончания цикла уборки, робот двигается, отключив помпу и снизив скорость в 1,5 раза для лучшего сбора грязной воды с пола и экономии заряда аккумулятора.
Цикл уборки может заканчиваться по нажатию кнопки «Clean», разрядке аккумулятора, по прошествии 35 или 20 мин. с начала уборки или если робот застрял и не смог самостоятельно выбраться.
По окончанию уборки проигрывается финальная мелодия и робот отключается.
3. Режимы движения:
В текущей версии программы реализованы три «примитива» движения — по левой или правой псевдоспирали, псевдохаотическое передвижение («свободное блуждание») и прямолинейное движение «виляя задом»
Последний «примитив» призван заставить более эфективно работать щётки.
В текущей версии алгоритм движения таков:
— с движения по спирали робот начинает цикл уборки и переходит к псевдослучайным перемещениям при столкновении с препятствием.
— если с момента срабатывания бампера прошло

Читайте также:  Автомастерские по ремонту стоек

от 0 до 4 сек., двигаемся прямолинейно, помпа работает;
— на 4-й сек. если ещё есть вода, отключаем помпу, разворот на 180 град. и едем «виляя задом» по только что намоченному, и так до 7й сек.;
— на 7й сек. разворот на 180 град., включили помпу, и вперёд прямолинейно до 20й сек.;
— с 20й сек., если всё ещё не срабатывал бампер, начинаем спираль.
В любой момент при срабатывании бампера — манёвр уклонения на случайный угол. Для более экономного расхода воды и заряда аккумулятора, помпа работает только при прямолинейном движении (в т.ч. и в составе «спиралей»).
После 15 мин. (7 мин., если «короткая уборка»), в алгоритм движения вносятся изменения — отключается помпа, не используется «виляние задом» и скорость движения снижается в 1,5 раза.
После выключения помпы, т.е. перехода в режим «сушки», мигает подсветка кнопки «Clean» и светодиод «Ok».
4. Скорость движения робота не зависит от степени разряженности аккумулятора, т.к. постоянно корректируется в зависимости от напряжения на нём..
5. Режим антизастревания.
Если в течение 2-х минут не было срабатывания датчиков бампера или датчики бампера постоянно находятся в сработавшем состоянии, робот «считает». что застрял.
В этом случае выключаются моторы помпы и насоса и робот пытается выбраться, «раскачиваясь» вперёд-назад/назад-вперёд и пытаясь развернуться по псевдослучайному
алгоритму. После 10 попыток, если ситуация с датчиками бампера не меняется, робот «считает». что застрял окончательно.
В этом случае выключаются все моторы, мигает красный светодиод «Error» и 100 раз воспроизводится короткий звуковой сигнал, похожий на сирену.
Если в процессе этого действа будет нажата кнопка «Clean», робот продолжит цикл уборки (т.е. считает, что человек его освободил на дал команду на продолжение).
Если кнопка нажата не будет, робот отключается с зажжёным индикатором «Error».
6. Работа с ИК-аксессуарами Scooba_2xx-3xx/Roomba_5xx-7xx.
Поддерживаются:
— Scooba Virtual Wall (а т.к. параметры сигнала Скубовской стенки сильно «гуляют» в зависимости от всего, то заодно поддерживается куча всего, передающего ИК-сигнал, близкий к меандру с периодом от 1.52 до 4,8 мсек. В частности, работает со стенкой от китайского пылесоса),
— Roomba Auto Virtual Wall,
— Roomba IR Remote (ИК-пульт, короче говоря),
— Roomba Compact Base (т.к. что с нею делать, непонятно, то робот реагирует на её сигналы, как на сигналы виртуальной стены).
7. Работа через BlueTooth -адаптер.
Посредством BlueTooth-адаптера робот может общаться с хост-системой через эмуляцию стандартного COM-порта с параметрами 2400,8,N,1.
«Общение» происходит путём передачи роботу символов команд и приёмом со стороны робота различных сообщений.
В текущей версии программы поддерживаются следующие команды:
? — вывод помощи по командам и информации о версии прошивки.
s — вывод статусной информации: текущий режим работы робота, состояние аккумулятора, состояние датчиков бампера, а также оставшееся время уборки.
w — включение питания, равносильно нажатию кнопки «Power». Не доступно, если подключён зарядник.
с — включение режима уборки, равносильно нажатию кнопки «Clean». Не доступно, если подключён зарядник или не включено питание.
Далее следует группа команд, управляющая движением робота и включением/выключением исполнительных механизмов. Эти команды доступны только если не подключён зарядник, включено питание, но не активирован режим уборки).
Курсорные клавиши — движение вперёд/назад, повороты вправо/влево. Срабатывания датчиков бампера не учитываются.
Пробел — стоп/продолжить движение.
p — включить/выключить мотор помпы,
v — включить/выключить мотор насоса.

Ссылки на текущие исходник и прошивку, и содержимое EEPROM — https://yadi.sk/d/35_ZunswZY8Pd

Re: Восстановление iRobot Scooba 230 — самодельный контролле

Serge_ISA » 17 дек 2014, 13:20

Реализовал «движение вдоль плинтуса» — на удивление простой код получился.

Теперь алгоритм движения выглядит так:
— Перво-наперво робот делает полный оборот на месте. Таким образом происходит «заливка» центра первой спирали в начале цикла уборки;
— после этого робот начинает движение по спирали и переходит к псевдослучайным перемещениям при столкновении с препятствием;
— если с момента срабатывания бампера прошло

от 0 до 4 сек., двигаемся прямолинейно, помпа работает;
— на 4-й сек. если ещё есть вода, отключаем помпу, разворот на 180 град. и едем «виляя задом» по только что намоченному, и так до 7й сек.;
— на 7й сек. разворот на 180 град., включили помпу, и вперёд прямолинейно;
— c 8 по 19 сек. времени без срабатывания бампера, если срабатывает левый бампер, начинаем движение «вдоль плинтуса». Во время движения вдоль плинтуса «время без сраб.бампера» при срабатывании бампера не сбрасывается.
— с 20й сек., если всё ещё не срабатывал бампер или если двигались вдоль плинтуса, начинаем спираль.
В любой момент (кроме движения вдоль плинтуса) при срабатывании бампера — манёвр уклонения на случайный угол.

Ссылка на текущие исходник, прошивку и содержимое EEPROM — https://yadi.sk/d/35_ZunswZY8Pd

PS: Достигнутый на текущий момент функционал меня полностью устраивает, новых «плюшек» добавлять в программу я не планирую (да и некуда их добавлять — осталось 30 байт программной памяти). Дальше будет только ловля багов в процессе эксплуатации.

Re: Восстановление iRobot Scooba 230 — самодельный контролле

otrineo » 16 янв 2015, 00:39

Источник

Оцените статью