Голосовое управление Roomba с помощью Alexa и эмулятора Belkin-Wemo

0 Favorite

[

Роботом-пылесосом iRobot Roomba можно управлять голосовыми командами, запуская уборку или отправляя пылесос в док-станцию. Я уже рассказывал о том, как «общаться» с Roomba через сервер ioBroker. Сегодня речь пойдёт о системе голосового управления, для которой не нужен подобный сервер. Тут, для прямого подключения робота к Amazon Echo, будет использоваться эмулятор 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 <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 в порядке, обратном порядку его разборки. При этом стоит обратить внимание на размещение в нём проводов.

Собранный робот

Подключение робота к Alexa

Откройте приложение Alexa на телефоне и добавьте в него новое устройство, пылесос iRobot Roomba, или попросите Alexa самостоятельно поискать новые устройства.

iRobot Roomba и приложение Alexa

Теперь с помощью Alexa можно управлять роботом, отдавая ему голосовые команды.

Планируете оснастить свой iRobot Roomba голосовым управлением?



Перейти в источник

Похожие статьи

О классах Program и Startup — инициализация ASP.NET приложения. Часть II: IWebHostBuilder и Startup / Хабр

0 Favorite [ Введение Это – продолжение статьи, первая часть которой была опубликована ранее. В той части был рассмотрен процесс инициализации, общий для любого приложения…

Инвентаризация ИТ-активов штатными средствами Windows с минимальными правами доступа

0 Favorite [ Коллеги, в предыдущей статье мы обсудили принципы эффективной работы с событиями аудита ОС Windows. Однако, для построения целостной системы управления ИБ важно…

Ответы