[Перевод] Голосовое управление Roomba с помощью Alexa и эмулятора Belkin-Wemo
Если вы не хотите сами заниматься модификацией робота — вот и вот — пара готовых решений.
Компоненты
В этом проекте используются следующие компоненты:
Интерфейс для взаимодействия с роботом
Команды пылесосу можно отправлять, пользуясь его последовательным портом. Он представлен 7-контактным разъёмом Mini-DIN, расположенным под верхней крышкой устройства. Обмен данными по нему организован с использованием протокола iRobot Roomba Open Interface.
iRobot Roomba Open Interface
Разборка робота
Разберём Roomba. Снимем контейнер для мусора и щётки, после чего, открутив 4 винта, снимем нижнюю крышку и вытащим батарею.
Разборка нижней части робота
Уберём бампер, отстегнём верхнюю декоративную часть корпуса и открутим винты, находящиеся под ней. Пару винтов на ручке можно оставить.
Разборка верхней части робота
Снимем верхнюю часть корпуса.
Roomba со снятой верхней частью корпуса
Сборка устройства для управления роботом
Теперь нужно собрать аппаратные компоненты нашего проекта в соответствии со следующей схемой. Наша конструкция подключается к последовательному порту робота.
Подключение ESP8266 к Roomba
Не забудьте установить выходное напряжение на модуле преобразователя MP1584EN, воспользовавшись подстроечным резистором, на который указывает стрелка. Этот модуль поддерживает входное напряжение в диапазоне от 4,5 до 28 В, а выходное — от 0,8 до 20 В.
Понижающий преобразователь напряжения MP1584EN
Запись программы в WiFi-модуль ESP8266
Теперь пришло время записать программу в WiFi-модуль ESP8266. Вот архив с необходимыми для этого материалами. Обратите внимание на то, что тут закомментирован отладочный вывод данных на последовательный порт, так как он может помешать обмену данными с Roomba.
Откройте Arduino-приложение. Прежде чем записывать программу в модуль, нужно отредактировать код, соответствующий тому, который приведён ниже, и внести в него данные о WiFi-подключении. Тут же, если надо, можно поменять имя робота. Оно появится в приложении Alexa.
/**************************************/
// https://myhomethings.eu //
// Generic ESP8266 module //
// Flash size: 1M (no SPIFFS) //
/**************************************/
#include
#include
#include
#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 в порядке, обратном порядку его разборки. При этом стоит обратить внимание на размещение в нём проводов.
Собранный робот
Подключение робота к Alexa
Откройте приложение Alexa на телефоне и добавьте в него новое устройство, пылесос iRobot Roomba, или попросите Alexa самостоятельно поискать новые устройства.
iRobot Roomba и приложение Alexa
Теперь с помощью Alexa можно управлять роботом, отдавая ему голосовые команды.
Планируете оснастить свой iRobot Roomba голосовым управлением?