Mejora de la Roomba 555


Como muchos lectores sin duda sabran, Roomba es uno de los primeros aspiradores  robóticos  lo cual como suele pasar con muchos otros productos  ha generado muchas replicas  de su diseño por parte de otros fabricantes

El primer modelo fue lanzado al mercado en 2002 ( llamada primera generación )  y actualmente ya esta venta la serie 900 calculándose  que ya en febrero de 2014 se habían vendido más de 10 millones de unidades en todo el mundo.

Este modelo fabricado por Irobot incluye una serie de sensores (táctiles, ópticos y acústicos, dependiendo de cada serie y modelo) que le permite detectar obstáculos, acumulaciones de residuos en el suelo y desniveles pronunciados tales como escaleras utilizando dos ruedas motrices independientes que le permiten ejecutar giros de 360 grados.

 

En este post vamos a ver la serie 500  introducida en agosto de 2007, incluyendo nuevas funcionalidades como un sensor de infrarrojos en su parte posterior para detectar obstáculos, el botón Dock para volver  a su posición de carga, una mecánica interior mejorada, movimientos más suaves y acompasados y un diseño modular que facilita las reparaciones o las sustituciones de piezas.

La mayoría de los modelos de la serie 500 son programables, permitiendo al usuario especificar de antemano los tiempos de actuación del robot.

 

En este  post vamos  a ver a interfaz abierta que presentan estos robots aspiradores denominada    con el  original nombre  denomina ROI (Roomba Open interfaz).

Este hack de  Lorenzo Martínez, se le ocurrió  que su modelo 555 trabajara SOLAMENTE cuando no hubiese nadie en casa, para ello, hay que adquirir  un modem bluetooth que permite enviar comandos AT por el conector MiniDIN.

Mediante esta API diseñada  por Lorenzo , se puede controlar la roomba a todos los niveles: movimiento de ruedas, giros, monitorización de sensores anticaída, bumpers, estado de la batería,… e incluso hasta que memorice una melodía y la reproduzca después. Sin embargo, hay dos órdenes fundamentales: «Ponte a limpiar» y «Vuelve a tu base».

Para saber  si hay alguien en casa tendremos que aprovecharnos de las capacidades de un dispositivo que siempre llevemos encima ( smartphone)  , y que además identifica unívocamente a los habitantes de una casa gracias al interfaz  bluetooth que solemos llevar siempre  encendido para que enlace directamente con el manos libres del coche,

La atrea  pues  consiste en programa que monitorice nuestra presencia en casa, en base a la detección de la BD Address de nuestro móvil y, en base a si ha salido o no, y si el horario es soportable para nuestros vecinos, tome la decisión de mandar a la Roomba a limpiar. Pero imaginad que llegamos antes de la cuenta a casa y deseamos que la Roomba vuelva a su base. Nuestro programa deberá conocer el estado actual de la aspiradora (cargando/aspirando) y, en caso de detectar nuestra presencia, enviará la señal de «Vuelve a tu base» al robot con ruedas, para que cuanto antes, deje de martirizarnos con el ruido.

Cierto es que tener que llevar el interfaz bluetooth conectado permanentemente, al ser un añadido, puede hacer que la Roomba colisione con ciertos muebles. Para evitarlo hay dos opciones

  • Se protege el conector con toda una suerte de parachoques que lo eviten,
  • Se integra dentro de la circuitería de la Roomba.

Según el manual del libro Hacking Roomba! el circuito sería tal que así ( 5 cables quese  necesitan para enviar y recibir señales ):

 

Se podrían soldar los cables a las conexiones en el circuito impreso, en vez de insertarlos en cada uno de los orificios de los pines, y pegarlos con cinta aislante, pero para pasarlos para atrás es muy complicado y además en caso que deje de funciona  se pueden quitar los cables y todo volverá a quedar «de fábrica»

Para la realización de esta modificación se necesitan los siguientes elementos:

  •  El manual Hacking Roomba
  •  Un módem bluetooth, en este caso un SparkFun, enchufado al conector hembra miniDIN de 8 pin que tiene la Roomba, para enviar líneas de comandos, en este caso los comandos AT.
  •  Un ordenador con conexión bluetooth para que transmita las órdenes a la Roomba.
  • Un software que permita monitorizar nuestra presencia en casa o no, detectando la señal que nuestro teléfono móvil emite via bluetooth.
  •  Un smrtphone que emite una señal que se llama BD Address y así, cuando no estamos en casa, el ordenador monitorizando la BD Address, detecta que no estamos en casa y da la orden a la Roomba de ponerse a limpiar; y si detecta (gracias al programa de monitorización del bluetooth) que llegamos a casa, dará la orden al robot de irse a cargar a la base.

Gracias a esta interfaz de programación de aplicaciones, que se llaman API, se pueden controlar:los movimientos de las ruedas, podemos monitorizar los sensores anticaídas, el estado de carga de la batería y reproducir melodías. Sin perder la perspectiva, claro está, de las órdenes fundamentales de este experimento: empezar a limpiar y volver a la base de carga.

De este modo, al entrar en casa nuestra Roomba estárá en reposo cargando la batería en su base de carga.

Esta puede ser una buena e ingeniosa solución para que Roomba sólo trabaje cuando no estéis en casa y esté quietecita y en silencio cuando lleguéis al hogar. Pero, en cualquier caso, debéis recordar que cualquier inconveniente que pueda surgir por un uso indebido, puede hacer perder la garantía de vuestro robot aspirador.

Control de nivel de agua con NodeMCU y Cayenne


En  este post  vamos   a ver nuevamente la gran versatilidad del sw de Cayenne , en este caso para controlar el nivel de un liquido   monitorando  este en tiempo real gracias al framework   de IoT gratuito  de Cayenne.

La finalidad de este proyecto es asegurar que un  depósito de agua siempre este lleno , porque podría suceder  que el suministro de agua sólo fluya a determinadas franjas horarias   por   lo que debemos permitir el flujo  solo cuando haya suministro  y el deposito no este lleno

Por tanto , el funcionamiento es relativamente simple  pues únicamente  la válvula se cerrará cuando el agua alcance el nivel superior del sensor.

La lista de materiales necesaria  para este proyecto es bastante reducida siendo el hardware necesario  el siguiente:

Picture of Bill of Materials

2. Sensor de nivel de líquido (calibrar primero para obtener el nivel de valor e inferior nivel superior)

Si usted necesita el sensor más profundo, puede cortar la tira superior del sensor y tome algún cable a dos lados del sensor

Picture of Bill of Materials

3. Módulo de relé de CH

Picture of Bill of Materials

4. Válvula solenoide 12V

5. 12V 2A fuente de alimentación

6. Cables de puente

 

En cuanto al Software necesario:

1. Arduino IDE

2. Cayenne para iOS/Android/Web Browser

Conectar NodeMCU Sensor líquido, módulo de relés y válvulas

ESP12E    esta basado en Arduino  pero cuenta   también conectividad wifi integrando la propia antena en la placa de circuito impreso en unas  dimensiones de  25.6mm x 34.2mm .  Además, por motivos de reducción de espacio esta placa no integra conexión usb  , para lo cual necesitaremos un USB FTDI   para programarlo o un  controlador Setup CH340g.

Esta placa cuenta con 11 pines digitales de entrada / salida, todos los pines tienen interruptor / pwm / I2C / 1-wire    siendo su chip principal el  ESP8266 CH340G

Una gran diferencia con una placa Arduino es que solo cuenta  con 1 entrada analógica (entrada máxima de 3,3 V)

 

Las conexiones son muy sencillas:

  • VIN (+5V): lo conectaremos a NodeMCU y al modulo Rele
  • 3.3V   : Alimentemos el sensor
  • GND : Sensor , Arduino y Rele
  • A0 de Arduino : a la salida del  sensor
  • D5 de Arduino : a la entra de control del Rele

 

Respecto al firmware necesitara  subir el código a NodeMCU, pera el cual debería   programar el NodeMCU con el IDE de Arduino.

Para  probar Cayenne  con el  ESP12E       necesitamos  programar su ESP-12E para conectarse a su punto de acceso wifi   .

Básicamente  el código a subir al    ESP12E     usa 3 librerías de Cayenne donde  tendremos que definir el SSID y la pwd de la red wifi así como las credenciales de Cayenne    ,

Es de destacar  la creación  de  dos puertos virtuales  para capturar  el  nivel de líquidos   en tiempo real  por el puerto A0  asi como accionar el rele por el puerto 14  , lo cual nos van a permitir comunicarnos con el API de Cayenne

Asimismo para efectos de pruebas se deja habilitado la salida por el pruerto serie de modo que podamos ver desde el IDE de Arduino  la evolucion del nivel del liquido y las actuaciones corresponientes

#include «CayenneDefines.h»
#include «CayenneWiFi.h»
#include «CayenneWiFiClient.h»
#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space
#define RELAY_PIN 14 // RELAY PIN

const int sensorPin= A0; //sensor pin connected to analog pin A0
float liquid_level;
int liquid_percentage;
int top_level = 512;
int bottom_level = 3;

// Cayenne authentication token. This should be obtained from the Cayenne Dashboard.
char token[] = «»; // Insert your token here
char ssid[] = «»; // Insert your SSID here
char pwd[] = «»; // Insert your SSID password here

void setup() {
Serial.begin(115200);
Cayenne.begin(token, ssid, pwd);
pinMode(sensorPin, INPUT);
pinMode(RELAY_PIN, OUTPUT);
}

void loop() {
liquid_level = analogRead(sensorPin);
liquid_percentage = ((liquid_level-bottom_level)/top_level)*100;
Serial.println(liquid_level);
delay(100);
Cayenne.run();
}

CAYENNE_OUT(V10)
{
Cayenne.virtualWrite(V10, liquid_percentage);
}

CAYENNE_IN(V1)
{
// get value sent from dashboard
int currentValue = getValue.asInt(); // 0 to 1

// assuming you wire your relay as normally open
if (currentValue == 0) {
digitalWrite(RELAY_PIN, HIGH);
} else {
digitalWrite(RELAY_PIN, LOW);
}
}

Necesitara  subir  el programa anterior  WATER_CONTROL.ino, editar la contraseña del token, SSID de su red Wifi  , usaurio de Cayyene  así como editar valor nivel  inferior y superior

Entonce conecte su NodeMCU con el Cable USB al ordenador y cargue el código en NodeMCU mediante el IDE de Arduino.

Configuración Cayenne Dashboard

Hemos hablado en  muchas ocasiones de Cayenne  pues en realidad está concebido para  que su manejo sea realmente sencillo   de configurar

Nos iremos a  su   url :   https://cayenne.mydevices.com/  

Tras registrarnos nos iremos  al panel de control   ,clicamos en  Add new   y seleccionamos generic ESP8266

A continuación nos ofrece  la API key que deberemos añadir al sw del   ESP12E      y tras reiniciarlo  ya debería poderse  comunicar con el node de Cayenne

 

Si la placa  pues   está configurada con el MQTT  ( username /pwd)     asi como con conectividad  wifi ,  ya   debería  de  poder conectarse al framework de Cayenne   y podemos seguir hacia adelante añadiendo sensores que deberían estar de acuerdo con el sw instalado en el ESP12E

En este caso como hemos definido  dos puertos virtuales para nivel de liquiodso  y contol   necesitamos añadir dos widgets  asociados a esos dos canales:

  • Añadir widget de válvula interruptor del tablero de instrumentos del Cayenne y seleccione Virtual Pin 1.
  • Añadir Sensor analógico widget de Dashboard de cayena y el nombre de nivel de agua, seleccione Virtual Pin 10, unidad porcentaje

Picture of Setting Up Cayenne

Picture of Setting Up Cayenne

 

 

Configuración de  triggers

Los triggers  o disparadores en Cayenne son una forma de hacer que su placa  reaccione a un cambio  de un sensor conectado a él. Esto podría ser algo tan simple como un valor de temperatura superior a un cierto valor o incluso sólo si el ESP12E pierde la conexión, lo cual como se podría imaginar puede ser muy potente en la creación de dispositivos inteligentes que reaccionan a los alrededores ( como por ejemplo, si la habitación se pone demasiado fría, encienda un  calefactor, etc ).

El proceso de agregar un disparador es muy sencillo como vamos a ver a continuación:

  1. Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
  2. Seleccionar un trigger desde el cuadro de abajo.
  3. Nombrar el trigger con un texto identificativo
  4. Ahora arrastrar y soltar su  ESP12E  desde la esquina izquierda en el caso de la caja.
  5. Por debajo de esto seleccionar el sensor 
  6. Ahora en el cuadro de selección a continuación, puede enviar  una notificación( bien a una dirección de correo electrónico o  a un  número de teléfono de un mensaje de texto pudiendo agregar ambos) o  una acción que en nuestro caso  sera activar desactiva  un relé. Asegúrese de marcar las casillas de verificación también.
  7. Ahora haga clic en “Save trigger”.

Haga  este  proceso para las  dos casuisticas:

  • Agregar desencadenadores y si el nivel del agua por encima de 100% entonces la válvula interruptor apague.
  • Agregar desencadenadores y si el nivel del agua por debajo de 100% entonces la válvula del interruptor se encienda
Picture of Setting Up CayennePicture of Setting Up Cayenne

 

Fuente   instructables.com