Роботом-пылесосом iRobot Roomba можно управлять голосовыми командами, запуская уборку или отправляя пылесос в док-станцию. Я уже рассказывал о том, как «общаться» с Roomba через сервер ioBroker. Сегодня речь пойдёт о системе голосового управления, для которой не нужен подобный сервер. Тут, для прямого подключения робота к Amazon Echo, будет использоваться эмулятор Belkin-Wemo.
![](https://habrastorage.org/r/w780q1/webt/qv/1y/rz/qv1yrzqlens2tw6zmsariepu6qg.jpeg)
Если вы не хотите сами заниматься модификацией робота — вот и вот — пара готовых решений.
В этом проекте используются следующие компоненты:
Команды пылесосу можно отправлять, пользуясь его последовательным портом. Он представлен 7-контактным разъёмом Mini-DIN, расположенным под верхней крышкой устройства. Обмен данными по нему организован с использованием протокола iRobot Roomba Open Interface.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/e13/c6f/70f/e13c6f70fd5ed15fe7517eceae2b83df.png)
iRobot Roomba Open Interface
Разберём Roomba. Снимем контейнер для мусора и щётки, после чего, открутив 4 винта, снимем нижнюю крышку и вытащим батарею.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/25f/86a/506/25f86a5061e10e16df6cbd7f934e14a8.png)
Разборка нижней части робота
Уберём бампер, отстегнём верхнюю декоративную часть корпуса и открутим винты, находящиеся под ней. Пару винтов на ручке можно оставить.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/b6f/089/0b5/b6f0890b551a732e25cb4739b94e6014.png)
Разборка верхней части робота
Снимем верхнюю часть корпуса.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/13b/569/129/13b569129f122b50a2b4a613646e0d1f.jpg)
Roomba со снятой верхней частью корпуса
Теперь нужно собрать аппаратные компоненты нашего проекта в соответствии со следующей схемой. Наша конструкция подключается к последовательному порту робота.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/f45/0e5/ed7/f450e5ed759cc47baa070e2112de0344.png)
Подключение ESP8266 к Roomba
Не забудьте установить выходное напряжение на модуле преобразователя MP1584EN, воспользовавшись подстроечным резистором, на который указывает стрелка. Этот модуль поддерживает входное напряжение в диапазоне от 4,5 до 28 В, а выходное — от 0,8 до 20 В.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/d4b/add/617/d4badd6175080e02670fe3272115aaed.png)
Понижающий преобразователь напряжения MP1584EN
Теперь пришло время записать программу в WiFi-модуль ESP8266. Вот архив с необходимыми для этого материалами. Обратите внимание на то, что тут закомментирован отладочный вывод данных на последовательный порт, так как он может помешать обмену данными с Roomba.
Откройте Arduino-приложение. Прежде чем записывать программу в модуль, нужно отредактировать код, соответствующий тому, который приведён ниже, и внести в него данные о WiFi-подключении. Тут же, если надо, можно поменять имя робота. Оно появится в приложении Alexa.
После того, как код отредактирован, а программа записана в модуль, нужно найти в корпусе робота место для размещения новых компонентов. Далее, надо собрать корпус Roomba в порядке, обратном порядку его разборки. При этом стоит обратить внимание на размещение в нём проводов.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/8d1/136/0f5/8d11360f57db46898c4db96883e4b218.jpg)
Собранный робот
Откройте приложение Alexa на телефоне и добавьте в него новое устройство, пылесос iRobot Roomba, или попросите Alexa самостоятельно поискать новые устройства.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/4a4/fbc/d87/4a4fbcd870209c751f2d6ba1b25018b0.png)
iRobot Roomba и приложение Alexa
Теперь с помощью Alexa можно управлять роботом, отдавая ему голосовые команды.
Планируете оснастить свой iRobot Roomba голосовым управлением?
![](https://habrastorage.org/r/w1560/webt/ou/g5/kh/oug5kh6sjydt9llengsiebnp40w.png)
![](https://habrastorage.org/webt/qv/1y/rz/qv1yrzqlens2tw6zmsariepu6qg.jpeg)
Если вы не хотите сами заниматься модификацией робота — вот и вот — пара готовых решений.
Компоненты
В этом проекте используются следующие компоненты:
- Wi-Fi модуль ESP8266 ESP-01
- Коммутационная плата ESP-01S
- USB Программатор для ESP8266 ESP-01
- Понижающий (buck) настраиваемый DC-DC-преобразователь напряжения MP1584EN
- Колонка Amazon Echo 4-го поколения
Интерфейс для взаимодействия с роботом
Команды пылесосу можно отправлять, пользуясь его последовательным портом. Он представлен 7-контактным разъёмом Mini-DIN, расположенным под верхней крышкой устройства. Обмен данными по нему организован с использованием протокола iRobot Roomba Open Interface.
![](https://habrastorage.org/getpro/habr/post_images/e13/c6f/70f/e13c6f70fd5ed15fe7517eceae2b83df.png)
iRobot Roomba Open Interface
Разборка робота
Разберём Roomba. Снимем контейнер для мусора и щётки, после чего, открутив 4 винта, снимем нижнюю крышку и вытащим батарею.
![](https://habrastorage.org/getpro/habr/post_images/25f/86a/506/25f86a5061e10e16df6cbd7f934e14a8.png)
Разборка нижней части робота
Уберём бампер, отстегнём верхнюю декоративную часть корпуса и открутим винты, находящиеся под ней. Пару винтов на ручке можно оставить.
![](https://habrastorage.org/getpro/habr/post_images/b6f/089/0b5/b6f0890b551a732e25cb4739b94e6014.png)
Разборка верхней части робота
Снимем верхнюю часть корпуса.
![](https://habrastorage.org/getpro/habr/post_images/13b/569/129/13b569129f122b50a2b4a613646e0d1f.jpg)
Roomba со снятой верхней частью корпуса
Сборка устройства для управления роботом
Теперь нужно собрать аппаратные компоненты нашего проекта в соответствии со следующей схемой. Наша конструкция подключается к последовательному порту робота.
![](https://habrastorage.org/getpro/habr/post_images/f45/0e5/ed7/f450e5ed759cc47baa070e2112de0344.png)
Подключение ESP8266 к Roomba
Не забудьте установить выходное напряжение на модуле преобразователя MP1584EN, воспользовавшись подстроечным резистором, на который указывает стрелка. Этот модуль поддерживает входное напряжение в диапазоне от 4,5 до 28 В, а выходное — от 0,8 до 20 В.
![](https://habrastorage.org/getpro/habr/post_images/d4b/add/617/d4badd6175080e02670fe3272115aaed.png)
Понижающий преобразователь напряжения MP1584EN
Запись программы в WiFi-модуль ESP8266
Теперь пришло время записать программу в WiFi-модуль ESP8266. Вот архив с необходимыми для этого материалами. Обратите внимание на то, что тут закомментирован отладочный вывод данных на последовательный порт, так как он может помешать обмену данными с Roomba.
Откройте Arduino-приложение. Прежде чем записывать программу в модуль, нужно отредактировать код, соответствующий тому, который приведён ниже, и внести в него данные о WiFi-подключении. Тут же, если надо, можно поменять имя робота. Оно появится в приложении Alexa.
/**************************************/
// https://myhomethings.eu //
// Generic ESP8266 module //
// Flash size: 1M (no SPIFFS) //
/**************************************/
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WiFiUdp.h>
#include "Switch.h"
#include "UpnpBroadcastResponder.h"
const char* ssid = "SSID";
const char* password = "Password";
const char* RoombaFriendlyName = "iRobot Roomba";
Switch *switchRoomba = NULL;
UpnpBroadcastResponder upnpBroadcastResponder;
void setup_wifi()
{
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
}
bool switchRoombaOn()
{
Serial.write(128); // Подготовка OI к работе
delay(50);
Serial.write(131); // Переключение в безопасный режим
delay(50);
Serial.write(135); // Запуск стандартной программы уборки
return true;
}
bool switchRoombaOff()
{
Serial.write(128); // Подготовка OI к работе
delay(50);
Serial.write(131); // Переключение в безопасный режим
delay(50);
Serial.write(143); // Отправка робота в док-станцию
return false;
}
void setup()
{
Serial.begin(115200);
setup_wifi();
upnpBroadcastResponder.beginUdpMulticast();
switchRoomba = new Switch(RoombaFriendlyName, 80, switchRoombaOn, switchRoombaOff);
upnpBroadcastResponder.addDevice(*switchRoomba);
}
void loop()
{
upnpBroadcastResponder.serverLoop();
switchRoomba -> serverLoop();
}
После того, как код отредактирован, а программа записана в модуль, нужно найти в корпусе робота место для размещения новых компонентов. Далее, надо собрать корпус Roomba в порядке, обратном порядку его разборки. При этом стоит обратить внимание на размещение в нём проводов.
![](https://habrastorage.org/getpro/habr/post_images/8d1/136/0f5/8d11360f57db46898c4db96883e4b218.jpg)
Собранный робот
Подключение робота к Alexa
Откройте приложение Alexa на телефоне и добавьте в него новое устройство, пылесос iRobot Roomba, или попросите Alexa самостоятельно поискать новые устройства.
![](https://habrastorage.org/getpro/habr/post_images/4a4/fbc/d87/4a4fbcd870209c751f2d6ba1b25018b0.png)
iRobot Roomba и приложение Alexa
Теперь с помощью Alexa можно управлять роботом, отдавая ему голосовые команды.
Планируете оснастить свой iRobot Roomba голосовым управлением?
![](https://habrastorage.org/webt/ou/g5/kh/oug5kh6sjydt9llengsiebnp40w.png)