Nous développons un appareil Z-Wave pour contrôler l'aspirateur iRobot Roomba



Sans préludes superflus immédiatement au point. L'appartement est automatisé par la technologie Z-Wave, et l'aspirateur iRobot Roomba 770 n'est en aucun cas connecté au réseau et est nettoyé selon son horaire. Il est temps d'ajouter l'aspirateur au réseau Z-Wave! La carte Z-Wave pour les développeurs, Z-Uno, m'aidera à ce sujet .
Quels sont les avantages de l'automatisation des aspirateurs avec Z-Wave?
  • Possibilité de configurer facilement le calendrier à partir de l'interface Web
  • Obtenez des données de l'aspirateur sur les batteries et les capteurs
  • Gérer depuis une application mobile
  • Utilisation dans des scénarios simulant la présence d'une personne dans la maison


La documentation de gestion pour iRobot Roomba est ouverte. Il s'ensuit que la communication avec l'aspirateur se fait via le connecteur Mini-DIN selon UART avec une vitesse de 115200, niveau TTL 5V.



Toute la documentation sur Z-UNO est disponible sur http://z-uno.z-wave.me/ , elle comprend une description de toutes les fonctions disponibles, des exemples et un diagramme.



Z-Uno utilise UART avec un niveau TTL de 3,3 V, vous devez donc mettre un diviseur de tension à partir de résistances de 1 kOhm et 2,2 kOhm sur la ligne Rx Z-UNO.



Lors de la connexion de Roomba à Arduino, il y a un problème que Roomba produit un très petit courant sur Tx, donc des données peuvent être perdues si un problème similaire se produit sur Z-UNO, alors vous devez utiliser un transistor avec un diviseur de tension:


http://www.irobot.com/ ~ / media / MainSite / PDFs / À propos / STEM / Create / Arduino_Tutorial.pdf

Z-Uno peut être alimenté à partir de 3,3 V, de 5 V via un régulateur de tension standard et de 7 à 20 V via un deuxième régulateur de tension standard. Pendant le nettoyage, la tension d'alimentation de l'iRobot Roomba est d'environ 14V, lorsque l'aspirateur est à la base, la tension monte à 20V. Si vous connectez directement le Z-Uno à l'iRobot Roomba, le régulateur de tension linéaire du Z-Uno commence à chauffer beaucoup, ce qui coupe l'alimentation en fonction de la température, vous devez donc utiliser un radiateur ou un régulateur de tension de commutation. J'ai choisi la deuxième option et j'utilise le régulateur de tension chinois très compact MP1584EN .



Brève caractéristiques du régulateur de tension MP1584EN:
  • Tension d'entrée: 4,5-28 V
  • Tension de sortie: 0,8-20 V (réglable)
  • Courant de sortie: 3A
  • Efficacité: 96%

Le régulateur de tension et le diviseur de tension s'adaptent à l'arrière du Z-UNO, sans augmenter les dimensions de la carte.



Connectez Z-Uno à iRobot Roomba 770:



Station d'accueil de nettoyage


Avec le Sketch Cleaning-Dock, la station Z-Uno reçoit les commandes ON / OFF par radio et envoie les commandes Clean and Seek Dock à l'aspirateur à l'aide de l'aspirateur UART. Lors de la réception d'une commande radio, le Z-Uno clignote une fois avec la LED intégrée. La commande radio marche-arrêt peut être envoyée par n'importe quel appareil Z-Wave: porte-clés, interrupteur, contrôleur, etc.



Station de nettoyage pour station d'accueil Sketch pour 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;
}



Après avoir rempli l'esquisse, vous devez ajouter Z-Uno au contrôleur Z-Wave. Z-Uno apparaît comme un interrupteur avec les boutons On et Off.



Lecture de la batterie


Ajoutez à la fonction activer / désactiver la fonction aspirateur pour lire la charge de la batterie. Avec un croquis La lecture de la charge de la batterie du Z-Uno périodiquement ou sur demande envoie la puissance de la batterie de l'aspirateur Roomba au contrôleur Z-Wave.


Sketch Reading Roomba Aspirateur Batterie et Station de Nettoyage-Dock pour 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;
}



Maintenant, Z-Uno est affiché comme un appareil à 2 canaux avec les fonctions d'un interrupteur et d'un capteur à plusieurs niveaux, c.-à-d. Les boutons On / Off et la charge en volts sont affichés.



Si nécessaire, vous pouvez ajouter un contrôle direct, mettre en œuvre la lecture du capteur de température, un rapport sur une réunion avec le mur et une notification s'il est impossible de traverser. Vous pouvez ajouter une fonctionnalité qui vous permettrait de vous retrouver coincé sous le canapé Roomba en lui envoyant une commande pour jouer la mélodie.

Z-Uno n'est certainement pas la seule option pour le contrôle radio Roomba, il y a RooWiFi et de nombreux projets comme Arduino + ESP8266, mais si vous avez déjà un réseau Z-Wave, alors pourquoi ne pas utiliser Z-Uno pour contrôler votre Roomba!



Pour ceux qui souhaitent économiser de l'argent, le magasin 5smart.ru offre une remise de 10% sur Z-Uno et sur tous les équipements Z-Wave. Coupon GT_SUMMER .

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


All Articles