lunes, 19 de septiembre de 2022

Controlar Robot Roomba 650 sin WIFI con modulo WIFI ESP8266-01 y Alexa (Amazon app)

Despues de ver las funcionalidades de los modulos ESP8266 y similares, encontre en internet muchas librerias y usos para su aplicacion en nuestra vida cotidiana.
Una que me intereso era como iniciar el Roomba por WIFI con un comando de voz rápido, o incluso programar una rutina desde la app de Alexa. 

La implementación requiere:

  • Lo principal un iRobot Roomba sin WIFI (mi vieja 650)
  • Un modulo ESP8266, yo use el ESP-01
  • Programador ESP82600
  • Conversor para el modulo ESP01 (M1584EN o mini 560)
  • Cables arduino
  • Soldador y estaño

Irobot publico el codigo de sus roomba, por lo que se puede enviar comandos a Roomba a través de su puerto serie. 
Este es un conector mini DIN de 7 pines, "iRobot Roomba® Open Interface".

Para instalarlo os dejo un resumen de ifixit que es muy completo:


Ahora hay que fijarse en el siguiente esquema:


Construya el hardware de acuerdo con el dibujo a continuación.



En mi caso solde al conector de la roomba por la parte de atras de la placa los cables, para no meterlos por arriba del puerto PS/2, luego escondi el modulo detras en un hueco que hay al lado.



Tambien hay que configurar el voltaje de salida en el módulo estabilizador de voltaje MP1584EN usando el potenciómetro marcado con una flecha, la salida al modulo ESP-01 debe ser 3,3v. Para evitar esto podemos sustituir este modulo deon el modulo mini560 con una salida predeterminada de 3,3v. Mas voltaje y quemaremos el ESP-01.





Por supuesto, el ESP8266 debe programarse antes. Hay que abrir el programa Arduino en el PC, cargar el siguiente código y luego subirlo al ESP-01 con el programador conectado. (el programador tiene que estar puenteado)

/**************************************/
//  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);  // start command
  delay(50);
  Serial.write(131);  // safe mod
  delay(50);
  Serial.write(135);  // clean
  return true;
}

bool switchRoombaOff()
{
  Serial.write(128);  // start command
  delay(50);
  Serial.write(131);  // safe mod
  delay(50);
  Serial.write(143);  // dock
  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();
}
Debemos cargar las librerias correspondientes en la carpeta del arduino: 
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <WiFiUdp.h> #include "Switch.h"
#include "UpnpBroadcastResponder.h"
y sustituir esta cadena por el nombre de la red WIFI a la que se conectara, y la contraseña.
const char* ssid = "SSID"; const char* password = "Password";

Una vez que se ha montado el ESP-01 en la placa y bien programado, se monta todo en el orden inverso al desmontaje.


Con esto, el hardware estára listo.

Ahora basta con abrir la aplicación Amazon Alexa en su teléfono y agregar un nuevo dispositivo.

Dentro de la aplicación Amazon Alexa podemos crear rutinas y automatizar el proceso.

A partir de ahora, también puedes controlar la roomba con tu voz usando Amazon Echo / Echo Dot

"Alexa, enciende Roomba"

Hay un bug con la roomba 650 que hace que si no esta en la base se pone en modo reposo, en ese modo es imposible activarla...

Aquí os dejo las librerías y el código para arduino.



El codigo y la idea son propiedad de https://myhomethings.eu

No hay comentarios: