Estamos desarrollando un dispositivo Z-Wave para controlar la aspiradora iRobot Roomba



Sin preludios superfluos inmediatamente al grano. El apartamento está automatizado por la tecnología Z-Wave, y la aspiradora iRobot Roomba 770 no está conectada a la red de ninguna manera y se limpia de acuerdo con su programación. ¡Es hora de agregar la aspiradora a la red Z-Wave! La placa Z-Wave para desarrolladores, Z-Uno, me ayudará con esto .
¿Cuáles son los beneficios de la automatización de aspiradoras con Z-Wave?
  • Capacidad para configurar convenientemente la programación desde la interfaz web
  • Obtenga datos de la aspiradora sobre baterías y sensores
  • Administrar desde una aplicación móvil
  • Usar en escenarios que simulen la presencia de una persona en la casa.


La documentación de gestión de iRobot Roomba está abierta. De ello se deduce que la comunicación con la aspiradora se produce a través del conector Mini-DIN de acuerdo con UART con una velocidad de 115200, nivel TTL 5V.



Toda la documentación sobre Z-UNO está disponible en http://z-uno.z-wave.me/ , incluye una descripción de todas las funciones disponibles, ejemplos y un diagrama.



Z-Uno usa un UART con un nivel TTL de 3.3V, por lo que debe colocar un divisor de voltaje de resistencias de 1 kOhm y 2.2 kOhm en la línea Rx Z-UNO.



Al conectar Roomba a Arduino, existe el problema de que Roomba produce una corriente muy pequeña en Tx, por lo que se pueden perder datos si ocurre un problema similar en Z-UNO, entonces debe usar un transistor con un divisor de voltaje:


http://www.irobot.com/ ~ / media / MainSite / PDFs / Acerca de / STEM / Create / Arduino_Tutorial.pdf

Z-Uno puede alimentarse desde 3.3V, desde 5V a través de un regulador de voltaje estándar y desde 7 - 20V a través de un segundo regulador de voltaje estándar. Durante la limpieza, el voltaje de suministro del iRobot Roomba es de aproximadamente 14V, cuando la aspiradora está en la base, el voltaje aumenta a 20V. Si conecta el Z-Uno al iRobot Roomba directamente, el regulador de voltaje lineal en el Z-Uno comienza a calentarse mucho, lo que apagará la energía por temperatura, por lo que debe usar un radiador o un regulador de voltaje de conmutación. Elegí la segunda opción y uso el muy compacto regulador de voltaje chino MP1584EN .



Breves características del regulador de voltaje MP1584EN:
  • Voltaje de entrada: 4.5-28 V
  • Voltaje de salida: 0.8-20V (ajustable)
  • Corriente de salida: 3A
  • Eficiencia: 96%

El regulador de voltaje y el divisor de voltaje encajan en la parte posterior de la Z-UNO, sin aumentar las dimensiones de la placa.



Conecte Z-Uno a iRobot Roomba 770:



Estación de limpieza


Con Sketch Cleaning-Dock, la estación Z-Uno recibe los comandos ON / OFF por radio y envía los comandos Clean and Seek Dock a la aspiradora con la aspiradora UART. Al recibir un comando de radio, el Z-Uno parpadea una vez con el LED integrado. El comando de radio encendido-apagado puede ser enviado por cualquier dispositivo Z-Wave: llavero, interruptor, controlador, etc.



Sketch Cleaning-Dock Station para Z-Uno Roomba
#define LED_PIN 13
byte roombaState = 0;
ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_BINARY(getter, setter));

void setup() {
   pinMode(LED_PIN, OUTPUT);
   Serial1.begin(); 
}

void loop() { /*Empty*/ }

void setter(byte value) {
  digitalWrite (LED_PIN, HIGH); // Turn On LED
  if (value) {
    Serial1.write(128);  // Roomba START Communication
    Serial1.write(131);  // SAFE MODE
    Serial1.write(135);  // Clean
    roombaState = 1;
  }
  else {
    digitalWrite (LED_PIN, LOW);
    Serial1.write(128);  // Roomba START Communication
    Serial1.write(131);  // SAFE MODE
    Serial1.write(143);  // Seek Dock
    roombaState = 0;
  }
}
 
byte getter() {
  return roombaState;
}



Después de completar el boceto, debe agregar Z-Uno al controlador Z-Wave. Z-Uno aparece como un interruptor con los botones de encendido y apagado.



Lectura de la batería


Agregue a la función activar / desactivar la función de aspiradora para leer la carga de la batería. Con un boceto, la lectura de la carga de la batería del Z-Uno periódicamente o, a pedido, envía la energía de la batería de la aspiradora Roomba al controlador Z-Wave.


Sketch Reading Roomba Aspirador Batería y estación de limpieza para Z-Uno
#define LED_PIN 13
byte roombaState = 0;
word batteryValue = 0;

ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_BINARY(getter, setter),ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_VOLTAGE, SENSOR_MULTILEVEL_SCALE_VOLT, SENSOR_MULTILEVEL_SIZE_ONE_BYTE, 1, getterBattery));

void setup() {
   pinMode(LED_PIN, OUTPUT);
   Serial1.begin(); 
}

void loop() { 
  // Get battery value every 1 minute
  byte data[2] = {0,0}; // array to store data from battery
  byte i = 0;
  Serial1.write(142); // Send a packet of sensor data bytes
  Serial1.write(22);  // Get battery value
  delay(200);
  while (Serial1.available()) { 
    data[i++] = Serial1.read();
  }

  // highbyte is shifted left eight bits, lowbyte is added to highbyte    
  // encoder_count=highbyte<<8+lowbyte
  batteryValue= (data[0]<<8)+data[1];

  zunoSendReport(2); // Send Battery every 30 seconds
  delay(30000);
}

void setter(byte value) {
  if (value) {
    digitalWrite (LED_PIN, HIGH);
    Serial1.write(128);  // Roomba START Communication
    Serial1.write(131);  // SAFE MODE
    Serial1.write(135);  // Clean
    roombaState = 1;
  }
  else {
    digitalWrite (LED_PIN, LOW);
    Serial1.write(128);  // Roomba START Communication
    Serial1.write(131);  // SAFE MODE
    Serial1.write(135);  // Stop Clean
    roombaState = 0;
  }
}
 
byte getter() {
  return roombaState;
}

byte getterBattery() {
  return batteryValue;
}



Ahora Z-Uno se muestra como un dispositivo de 2 canales con las funciones de un interruptor y un sensor multinivel, es decir. Se muestran los botones de encendido / apagado y la carga en voltios.



Si es necesario, puede agregar control directo, implementar la lectura del sensor de temperatura, un informe sobre una reunión con el muro y una notificación si es imposible pasar. Puede agregar una función que le permita encontrarse atascado debajo del sofá Roomba enviándole un comando para tocar la melodía.

Ciertamente, Z-Uno no es la única opción para el control de radio Roomba, hay RooWiFi y muchos proyectos como Arduino + ESP8266, pero si ya tiene una red Z-Wave, ¿por qué no usar Z-Uno para controlar su Roomba!



Para aquellos que desean ahorrar dinero, la tienda 5smart.ru ofrece un 10% de descuento en Z-Uno y en todos los equipos de Z-Wave. Cupón GT_SUMMER .

Source: https://habr.com/ru/post/es395105/


All Articles