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:
Irobot publico el codigo de sus roomba, por lo que se puede enviar comandos a Roomba a través de su puerto serie.
- 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.
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.
No hay comentarios:
Publicar un comentario