Wir entwickeln ein Z-Wave-Gerät zur Steuerung des iRobot Roomba-Staubsaugers



Ohne überflüssige Vorspiele sofort auf den Punkt. Die Wohnung ist mit Z-Wave-Technologie automatisiert, und der Staubsauger iRobot Roomba 770 ist in keiner Weise mit dem Netzwerk verbunden und wird gemäß seinem Zeitplan gereinigt. Es ist Zeit, den Staubsauger in das Z-Wave-Netzwerk aufzunehmen! Das Z-Wave-Board für Entwickler, Z-Uno, wird mir dabei helfen .
Was sind die Vorteile der Staubsaugerautomatisierung mit Z-Wave?
  • Möglichkeit, den Zeitplan bequem über die Weboberfläche zu konfigurieren
  • Holen Sie sich vom Staubsauger Daten über Batterien und Sensoren
  • Von einer mobilen Anwendung aus verwalten
  • Verwendung in Szenarien, die die Anwesenheit einer Person im Haus simulieren


Die Verwaltungsdokumentation für iRobot Roomba ist geöffnet. Daraus folgt, dass die Kommunikation mit dem Staubsauger über den Mini-DIN-Stecker gemäß UART mit einer Geschwindigkeit von 115200, TTL-Pegel 5V erfolgt.



Die gesamte Dokumentation zu Z-UNO ist unter http://z-uno.z-wave.me/ verfügbar . Sie enthält eine Beschreibung aller verfügbaren Funktionen, Beispiele und ein Diagramm.



Z-Uno verwendet UART mit einem TTL-Pegel von 3,3 V, daher müssen Sie einen Spannungsteiler von Widerständen von 1 kOhm und 2,2 kOhm an die Rx Z-UNO-Leitung anschließen.



Wenn Sie Roomba mit Arduino verbinden, tritt das Problem auf, dass Roomba auf Tx einen sehr kleinen Strom erzeugt. Wenn also ein ähnliches Problem auf Z-UNO auftritt, können Daten verloren gehen. Dann müssen Sie einen Transistor mit Spannungsteiler verwenden:


http://www.irobot.com/ ~ / media / MainSite / PDFs / Über / STEM / Create / Arduino_Tutorial.pdf

Z-Uno kann von 3,3 V, von 5 V über einen Standardspannungsregler und von 7 bis 20 V über einen zweiten Standardspannungsregler mit Strom versorgt werden. Während der Reinigung beträgt die Versorgungsspannung des iRobot Roomba ungefähr 14 V, wenn sich der Staubsauger an der Basis befindet, steigt die Spannung auf 20 V. Wenn Sie den Z-Uno direkt an den iRobot Roomba anschließen, erwärmt sich der lineare Spannungsregler am Z-Uno sehr stark, wodurch der Strom nach Temperatur abgeschaltet wird. Sie müssen daher entweder einen Kühler oder einen Schaltspannungsregler verwenden. Ich entschied mich für die zweite Option und verwendete den sehr kompakten chinesischen Spannungsregler MP1584EN .



Kurze Eigenschaften des Spannungsreglers MP1584DE:
  • Eingangsspannung: 4,5-28V
  • Ausgangsspannung: 0,8-20 V (einstellbar)
  • Ausgangsstrom: 3A
  • Wirkungsgrad: 96%

Der Spannungsregler und der Spannungsteiler passen auf die Rückseite des Z-UNO, ohne die Abmessungen der Platine zu vergrößern.



Verbinden Sie Z-Uno mit iRobot Roomba 770:



Dockstation reinigen


Mit dem Sketch Cleaning-Dock empfängt die Z-Uno-Station Funk-EIN / AUS-Befehle und sendet die Befehle Clean und Seek Dock mit einem UART-Staubsauger an den Staubsauger. Beim Empfang eines Funkbefehls blinkt der Z-Uno einmal mit der integrierten LED. Ein-Aus-Funkbefehl kann von jedem Z-Wave-Gerät gesendet werden: Schlüsselanhänger, Schalter, Controller usw.



Sketch Cleaning-Dock Station für 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;
}



Nach dem Ausfüllen der Skizze müssen Sie dem Z-Wave-Controller Z-Uno hinzufügen. Z-Uno wird als Schalter mit den Tasten Ein und Aus angezeigt.



Batterielesung


Fügen Sie der Funktion die Funktion zum Reinigen / Deaktivieren des Staubsaugers hinzu, um die Batterieladung abzulesen. Mit einer Skizze Wenn Sie die Batterieladung des Z-Uno regelmäßig oder auf Anfrage lesen, wird die Batterieleistung des Roomba-Staubsaugers an den Z-Wave-Controller gesendet.


Sketch Reading Roomba Staubsaugerbatterie und Reinigungsdockstation für 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;
}



Jetzt wird Z-Uno als 2-Kanal-Gerät mit den Funktionen eines Schalters und eines mehrstufigen Sensors angezeigt, d. H. Ein / Aus-Tasten und Laden in Volt werden angezeigt.



Bei Bedarf können Sie eine direkte Steuerung hinzufügen, das Ablesen des Temperatursensors, einen Bericht über ein Treffen mit der Wand und eine Benachrichtigung implementieren, wenn das Durchfahren nicht möglich ist. Sie können eine Funktion hinzufügen, mit der Sie feststellen können, dass Sie unter dem Roomba-Sofa stecken bleiben, indem Sie ihm einen Befehl zum Spielen der Melodie senden.

Z-Uno ist sicherlich nicht die einzige Option für die Roomba-Funksteuerung. Es gibt RooWiFi und viele Projekte wie Arduino + ESP8266. Wenn Sie jedoch bereits über ein Z-Wave-Netzwerk verfügen, können Sie Ihren Roomba mit Z-Uno steuern.



Für diejenigen, die Geld sparen möchten, bietet der 5smart.ru Store 10% Rabatt auf Z-Uno und alle Z-Wave-Geräte. Gutschein GT_SUMMER .

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


All Articles