Domotizando nuestra vieja Roomba Serie 5/6 con ESP-01 y MQTT

Buenas tardes a todos. En esta entrada voy a explicar como llevar a cabo un proyecto que me ha costado muchas semanas conseguir hacer funcionar.

El proyecto original no es mio y podéis verlo aquí (en inglés).

Bueno vamos al lio.

Materiales (no son enlaces referidos, pero prefiero poner ejemplos para que no tengamos errores luego):

1x – ESP-01 + Un programador – aquí

1x – Transistor PNP 2N3906 – aquí

1x Regulador de voltaje – aquí

Varios cables de Arduino Hembra-Macho – aquí

El Sketch de Arduino: https://github.com/thehookup/MQTT-Roomba-ESP01/blob/master/RoombaESP01_CONFIGURE.ino

Estas tres librerias de Arduino:

https://github.com/jfturcot/SimpleTimer

https://github.com/knolleary/pubsubclient

Roomba-1.3.zip

Soldador, estaño, termoretractil, cinta aislante y muchas ganas.

Procedimiento

Podemos dividir este proyecto en 4 pasos:

  1. Compilar y cargar el Sketch al ESP-01
  2. Soldar todo el cableado
  3. Integrarlo en nuestro Roomba Serie 5/6
  4. Integrarlo en Home Assistant

Preparar el programador

Lo primero que debemos hacer para poder compilar el Sketch en el ESP-01 es modificar el programador para que este sea capaz de poner el ESP-01 en modo programación.

Lo que haremos será soldar un pulsador a los pines 5 y 3 del ESP-01 y un puente entre los pines 6 y 2.

Dejo un par de fotos del pinout del ESP-01 y del programador con el cable ya soldado y el puente realizado.

PASO 1: Compilar y cargar el Sketch en el ESP-01

Incluimos las librerias en nuestro IDE de Arduino y cargamos el Sketch. Lo unico que debemos hacer es modificar estos valores marcados en rojo

//USER CONFIGURED SECTION START//
const char* ssid = "YOUR_WIRELESS_SSID";
const char* password = "YOUR_WIRELESS_SSID";
const char* mqtt_server = "YOUR_MQTT_SERVER_ADDRESS";
const int mqtt_port = YOUR_MQTT_SERVER_PORT;
const char *mqtt_user = "YOUR_MQTT_USERNAME";
const char *mqtt_pass = "YOUR_MQTT_PASSWORD";
const char *mqtt_client_name = "Roomba"; // Client connections can't have the same connection name
//USER CONFIGURED SECTION END//
El resto del sketch no hay que modificarlo ( existe un sketch especifico para el Roomba Serie 6 en el git, yo tengo un 630 y con el de la serie 5 me funciona perfecto)

PASO IMPORTANTE>>> Ahora conectamos nuestro ESP-01 al programador, mantenemos pulsado el pulsador y lo conectamos al puerto USB del pc (si no hacemos eso no podremos cargar el Sketch). Configuramos nuestro IDE así:

y le damos a compilar y subir. Una vez termine de cargar deberemos ver en nuestra red wifi un nuevo dispositivo, eso significa que todo ha ido ok.

PASO 2: Soldar todo el cableado.

Aqui una imagen vale mas que mil palabras asi que aqui va el circuito.

 

OJO SUPER IMPORTANTE!!! >>> Antes de soldar el ESP-01 hay que establecer la salida del regulador a 3.1v. para eso soldaremos cable negro y cable rojo al regulador y conectaremos los otros extremos los puertos de positivo y negativo del roomba. colocar el tester en la salida del regulador en positivo y negativo y con un destornillador regular a 3.1v PELIGRO DE QUEMAR EL ESP-01 

PASO 3: Integrarlo en el Roomba

En la lista de materiales hay cables de arduino hembra-macho, esto es para que ahora, cuando conectemos los cables al Roomba tengamos pines que sean fáciles de colocar. Yo lo que he hecho es quitar los cabezales de plástico y dejar el pin con el cable y luego aplicar este procedimiento:

1- Mete pin en el puerto del Roomba correspondiente

2- Aisla el pin con cinta o termoretractil para que no haga contacto (doblarlo con cuidado para que quede lo mas arras posible y poder taparlo)

3- repite con el resto hasta terminar.

luego aislar con cinta todas las partes que puedan crear un corte, sobre todo aislar bien el regulador. Fija luego todos los cables al chasis para que no se muevan y pon la tapa, ves despacio hasta que quepa todo bien. A mi me sobresale cuanto apenas en la parte del chip pero si lo ves ni se nota.

PASO 4: Integrarlo en el Home Assistant.

Esto es lo mas fácil, dejo los yaml que tengo yo y que cada uno se lo ponga a su gusto:

SENSOR:

- platform: mqtt
  name: "Roomba Charging"
  state_topic: "roomba/charging"

- platform: mqtt
  name: "Roomba Battery"
  unit_of_measurement: '%'
  state_topic: "roomba/battery"

- platform: template
  sensors:
    roomba_status:
      friendly_name: "Estado Roomba"
      value_template: >-
        {% if (is_state('sensor.roomba_charging', '4') and is_state('sensor.roomba_battery', '100')) %}
          En la Dock
        {% elif (is_state('sensor.roomba_charging', '4') and not is_state('sensor.roomba_battery', '100')) %}
          Limpiando
        {% elif is_state('sensor.roomba_charging', '3') %}
          En la Dock
        {% elif is_state('sensor.roomba_charging', '2') %}
          Cargando
        {% elif is_state('sensor.roomba_charging', '12') %}
          Parado fuera de Dock
        {% else %}
          Desconocido
        {% endif %}

SWITCH

- platform: mqtt
  name: "Roomba"
  command_topic: "roomba/commands"
  payload_on: "start"
  payload_off: "stop"

CUSTOMIZED

switch.roomba:
  friendly_name: Roomba
  icon: mdi:broom

sensor.roomba_battery:
  friendly_name: Bateria Roomba
  icon: mdi:battery

sensor.roomba_status:
  friendly_name: Estado Roomba
  icon: mdi:eye

Deja un comentario

Síguenos

Siguenos en facebook