Разрабатываем Z-Wave устройство для управления пылесосом iRobot Roomba +9





Без лишних прелюдий сразу к делу. Квартира автоматизирована технологией Z-Wave, а пылесос iRobot Roomba 770 с сетью никак не связан и убирается по своему расписанию. Пришло время добавить пылесос в сеть Z-Wave! В этом мне поможет Z-Wave плата для разработчиков — Z-Uno.
Какие преимущества дает автоматизация пылесоса с помощью Z-Wave?

  • Возможность удобно настроить расписание из Веб-интерфейса
  • Получить данные с пылесоса о батареи и сенсорах
  • Управлять из мобильного приложения
  • Использовать в сценариях имитирующих присутствие человека в доме


Документация по управлению iRobot Roomba открыта. Из нее следует, что общение с пылесосом происходит через разъем Mini-DIN по UART со скоростью 115200, уровень TTL 5В.



Вся документация по Z-UNO доступна на http://z-uno.z-wave.me/, в нее входят описание всех доступных функций, примеры, схема.



Z-Uno использует UART с уровнем TTL 3.3В, поэтому на линию Rx Z-UNO нужно поставить делитель напряжения из резисторов номиналом 1кОм и 2.2кОм.



При подключении Roomba к Arduino существует проблема, что Roomba выдает очень маленький ток на Tx, поэтому данные могут теряться, если подобная проблема будет на Z-UNO, то совместно с делителем напряжения нужно использовать транзистор:


http://www.irobot.com/~/media/MainSite/PDFs/About/STEM/Create/Arduino_Tutorial.pdf

Z-Uno может питаться от 3.3В, от 5В через штатный регулятор напряжения и от 7 — 20В через второй штатный регулятор напряжения. Во время уборки напряжение питания iRobot Roomba составляет примерно 14В, когда пылесос находится на базе напряжение поднимается до 20В. Если подключить Z-Uno к питанию iRobot Roomba напрямую, то линейный регулятор напряжения на Z-Uno начинает очень сильно греться, что приведет к отключению питания по температуре, поэтому нужно использовать либо радиатор, либо Switching регулятор напряжения. Я выбрал второй вариант и использую очень компактный китайский регулятор напряжения MP1584EN.



Краткие характеристики регулятора напряжения MP1584EN:
  • Входное напряжение: 4.5-28В
  • Выходное напряжение: 0.8-20В (регулируемое)
  • Выходной ток: 3А
  • Эффективность: 96%

Регулятор напряжения и делитель напряжения уместились на обратной стороне Z-UNO, при этом не увеличив габариты платы.



Подключение Z-Uno к iRobot Roomba 770:



Уборка-Док станция


Со скетчом Уборка-Док станция Z-Uno по радио принимает команды ВКЛ/ВЫКЛ и по UART пылесосу отправляет команды Clean (Уборка) и Seek Dock (Искать док станцию). При получении радиокоманды Z-Uno один раз мигает встроенным светодиодом. Радиокоманду Вкл/Выкл может отправить любое Z-Wave устройство: брелок, выключатель, контроллер и др.



Скетч Уборка-Док станция для Z-Uno по управлению пылесосом Roomba
#define LED_PIN 13
byte roombaState = 0;
ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_BINARY(getter, setter));

void setup() {
   pinMode(LED_PIN, OUTPUT);
   Serial1.begin(); 
}

void loop() { /*Empty*/ }

void setter(byte value) {
  digitalWrite (LED_PIN, HIGH); // Turn On LED
  if (value) {
    Serial1.write(128);  // Roomba START Communication
    Serial1.write(131);  // SAFE MODE
    Serial1.write(135);  // Clean
    roombaState = 1;
  }
  else {
    digitalWrite (LED_PIN, LOW);
    Serial1.write(128);  // Roomba START Communication
    Serial1.write(131);  // SAFE MODE
    Serial1.write(143);  // Seek Dock
    roombaState = 0;
  }
}
 
byte getter() {
  return roombaState;
}



После заливки скетча нужно добавить Z-Uno в Z-Wave контроллер. Z-Uno отображается как выключатель с кнопками On и Off.



Чтение заряда батареи


Добавим к функции включение-выключение пылесоса функцию по считыванию заряда батареи. Со скетчом Чтение заряда батареи Z-Uno периодически или по запросу отправляет заряд батареи пылесоса Roomba на Z-Wave контроллер.


Скетч Чтение заряда батареи пылесоса Roomba и Уборка-Док станция для Z-Uno
#define LED_PIN 13
byte roombaState = 0;
word batteryValue = 0;

ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_BINARY(getter, setter),ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_VOLTAGE, SENSOR_MULTILEVEL_SCALE_VOLT, SENSOR_MULTILEVEL_SIZE_ONE_BYTE, 1, getterBattery));

void setup() {
   pinMode(LED_PIN, OUTPUT);
   Serial1.begin(); 
}

void loop() { 
  // Get battery value every 1 minute
  byte data[2] = {0,0}; // array to store data from battery
  byte i = 0;
  Serial1.write(142); // Send a packet of sensor data bytes
  Serial1.write(22);  // Get battery value
  delay(200);
  while (Serial1.available()) { 
    data[i++] = Serial1.read();
  }

  // highbyte is shifted left eight bits, lowbyte is added to highbyte    
  // encoder_count=highbyte<<8+lowbyte
  batteryValue= (data[0]<<8)+data[1];

  zunoSendReport(2); // Send Battery every 30 seconds
  delay(30000);
}

void setter(byte value) {
  if (value) {
    digitalWrite (LED_PIN, HIGH);
    Serial1.write(128);  // Roomba START Communication
    Serial1.write(131);  // SAFE MODE
    Serial1.write(135);  // Clean
    roombaState = 1;
  }
  else {
    digitalWrite (LED_PIN, LOW);
    Serial1.write(128);  // Roomba START Communication
    Serial1.write(131);  // SAFE MODE
    Serial1.write(135);  // Stop Clean
    roombaState = 0;
  }
}
 
byte getter() {
  return roombaState;
}

byte getterBattery() {
  return batteryValue;
}



Теперь Z-Uno отображается как 2-х канальное устройство с функциями выключателя и многоуровнего датчика, т.е. отображаются кнопки On/Off и заряд в вольтах.



При необходимости можно добавить прямое управление, реализовать считывание датчика температуры, отчет о встрече со стеной и оповещение при невозможности проехать. Можно добавить функцию, которая позволила бы найти застрявшего под диваном Roomba, путем отправки ему команды проиграть мелодию.

Z-Uno конечно же не единственный вариант радио управления Roomba, есть RooWiFi и много проектов типа Arduino+ESP8266, но если у вас уже есть Z-Wave сеть, то почему бы не использовать Z-Uno для управления пылесосом Roomba!



Для желающих сэкономить, магазин 5smart.ru дарит скидку 10% на Z-Uno и на все оборудование Z-Wave. Купон GT_SUMMER.


Комментарии (18):

  1. gsaw
    /#9462510

    Где можно Z-Uno в Европе купить?

    • PoltoS
      /#9464342

      Лучше http://z-uno.z-wave.me/buy/

  2. old_bear
    /#9463574 / +1

    Ну вот, я ждал прямого управления со смартфона в духе аркадных гонок и командных соревнований на нескольких Румбах с захватом флага, а тут просто вкл/выкл и проверка заряда.

    • aivs
      /#9463644 / +1

      Дело в том, что изначально на Roomba была установлена NERF турель, которая активировалась вместе с пылесосом, когда срабатывал датчик движения или открытия окна. Roomba двигалась в комнату, где сработал датчик и производила атаку. К сожалению охранные агентства узнав, о таких возможностях, раскупили все наши комплекты с NERF турелями и нам осталось показать остатки былой роскоши: z-uno + roomba.
      Но с вашей фантазией вы можете и пэкман бой устроить!

    • NetBUG
      /#9463780

      Да ещё и по 60 евро.
      Боюсь, с такими ценами Z-Wave будет не нужен.

  3. Goodkat
    /#9463680

    Внутрь корпуса убрать нельзя?
    А то есть у меня дома отковыриватели всего, что отковыривается…

    • aivs
      /#9463698

      Z-uno с преобразователем очень компактны, когда разбирал пылесос место там было свободное, возможно z-uno удастся запихнуть, но не пробовал.

  4. BalinTomsk
    /#9463682

    ----раскупили все наши комплекты с NERF турелями

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

  5. si1v3r
    /#9463838

    А прибирается то румба нормально?

    • aivs
      /#9463852

      Z-Uno никак не ухудшила качество уборки.

      • si1v3r
        /#9463856

        Да понятно. Сорри за офф. Но тем не менее — качеством уборки вы лично довольны?

        • aivs
          /#9463860

          7 лет пашет каждый день, конечно доволен, я лежу он убирается!

          • si1v3r
            /#9463868

            Спасибо.

            • Goodkat
              /#9463960

              Я купил модель Roomba 871.

              Качеством уборки я доволен — робот ездит каждый день. Обычно запускается по таймеру, когда никого нет дома, но и так не особо мешает шумом, только под ноги бросается и ворует еду у кошки.

              Недоволен я качеством самого робота: сперва сломалась боковая щётка, потом стал выпадать контейнер для пыли, затем робот тикал во время зарядки — каждый раз мне его ремонтировали, а однажды потеряли и прислали совсем новый. Сейчас робот тикает, если стоит не на зарядке, и у контейнера отваливается крышка, когда вытряхаешь пыль, но отсылать его на ремонт я пока не хочу — вдруг починят крышку, но сломают что-нибудь ещё. Ещё он стал еле слышно пищать во время зарядки — днём не мешает, а ночью слышно очень хорошо, если робот заряжается под кроватью. И красный светодиод, когда мигает, тоже пищит, пока не вытряхнешь мусор.

              Сейчас у меня модель 880, если верить надписи на днище — уж не знаю, была ли сразу такая же, или подменили во время одного из ремонтов. Внешне их не отличить, наверное. Может быть 880-я чуть темнее.

              Если бы сейчас покупал, то взял бы такого же, модель поновей или смотрел бы роботов с базой, в которую они выгружают собранный мусор — вытряхать пыль каждый день тоже надоедает :)

              • si1v3r
                /#9463974

                И вам спасибо.

                • aivs
                  /#9463998

                  У меня 770, за 7 лет единственное что я менял, это блок щеток с моторами, т.к. на обслуживание редуктора забил и шестерни не смазывал. Фильтра и боковая щетка расходник, их сразу взял с запасом.
                  Я бы сейчас аккумулятор только поменял, т.к. заряда хватает на час, но для квартиры 50 кв. м. и по часу в день достаточно, чтобы поддерживать чистоту.

  6. jakshi
    /#9464836

    У меня Roomba 880.
    Пользуюсь где то год.
    Качеством уборки очень доволен. Убирает Roomba 105 кв.м.
    В целом положительный девайс.

    Есть недостатки.

    * Не убирает черный ковер.
    * Иногда с размаху бьется о стены и мебель.
    * Иногда теряет маяки и не едет на зарядку. Вместо этого убирает комнату пока не закончится заряд батарей.
    * Как ни странно шкодит. Например однажды бил столик пока с него не свалился ультразвуковой ароматизатор/увлажнитель воздуха, после чего размазал воду из оного и запинал увлажнитель под кровать. т.е. за роботом надо присматривать.