نقوم بتطوير جهاز Z-Wave للتحكم في المكنسة الكهربائية iRobot Roomba



بدون مقدمات غير ضرورية على الفور إلى النقطة. الشقة مؤتمتة بتقنية Z-Wave ، والمكنسة الكهربائية iRobot Roomba 770 غير متصلة بالشبكة بأي شكل من الأشكال ويتم تنظيفها وفقًا لجدولها الزمني. حان الوقت لإضافة المكنسة الكهربائية إلى شبكة Z-Wave! لوحة Z-Wave للمطورين ، Z-Uno ، ستساعدني في ذلك .
ما هي فوائد أتمتة المكنسة الكهربائية مع Z-Wave؟
  • القدرة على تكوين الجدول بسهولة من واجهة الويب
  • احصل على بيانات من المكنسة الكهربائية حول البطاريات وأجهزة الاستشعار
  • إدارة من تطبيق محمول
  • استخدم في سيناريوهات تحاكي وجود شخص في المنزل


وثائق إدارة iRobot Roomba مفتوحة. ويترتب على ذلك أن الاتصال بالمكنسة الكهربائية يحدث من خلال موصل Mini-DIN وفقًا لـ UART بسرعة 115200 ، ومستوى TTL 5 فولت.



جميع الوثائق على Z-UNO متاحة على http://z-uno.z-wave.me/ ، وتتضمن وصفا لجميع الوظائف المتاحة والأمثلة والرسم التخطيطي.



تستخدم Z-Uno UART بمستوى TTL 3.3V ، لذلك تحتاج إلى وضع مقسم جهد من المقاومات من 1 كيلو أوم و 2.2 كيلو أوم على خط Rx Z-UNO.



عند توصيل Roomba بـ Arduino ، هناك مشكلة في أن Roomba ينتج تيارًا صغيرًا جدًا على Tx ، لذلك يمكن فقدان البيانات إذا حدثت مشكلة مماثلة في Z-UNO ، فأنت بحاجة إلى استخدام الترانزستور مع مقسم الجهد:


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

يمكن تشغيل Z-Uno من 3.3 فولت ومن 5 فولت من خلال منظم جهد قياسي ومن 7 إلى 20 فولت من خلال منظم جهد قياسي ثانٍ. أثناء التنظيف ، يبلغ جهد إمداد iRobot Roomba حوالي 14 فولت ، عندما يكون المكنسة الكهربائية في القاعدة ، يرتفع الجهد إلى 20 فولت. إذا قمت بتوصيل Z-Uno بـ iRobot Roomba مباشرة ، فإن منظم الجهد الخطي في Z-Uno يبدأ في التسخين كثيرًا ، مما سيؤدي إلى إيقاف الطاقة عن طريق درجة الحرارة ، لذلك تحتاج إلى استخدام إما المبرد أو منظم الجهد التبديل. لقد اخترت الخيار الثاني واستخدم منظم الجهد الصيني المضغوط للغاية MP1584EN .



خصائص موجزة لمنظم الجهد MP1584EN:
  • مدخلات الجهد: 4.5-28 فولت
  • انتاج التيار الكهربائي: 0.8-20V (قابل للتعديل)
  • تيار الإخراج: 3A
  • الكفاءة: 96٪

يتناسب منظم الجهد ومقسّم الجهد على الجزء الخلفي من Z-UNO ، مع عدم زيادة أبعاد اللوحة.



قم بتوصيل Z-Uno بـ iRobot Roomba 770:



محطة حوض التنظيف


باستخدام Sketch Cleaning-Dock ، تتلقى محطة Z-Uno أوامر ON / OFF عن طريق الراديو وترسل أوامر Clean and Seek Dock إلى المكنسة الكهربائية باستخدام المكنسة الكهربائية UART. عند استقبال أمر راديو ، يومض Z-Uno مرة واحدة مع LED المدمج. يمكن إرسال أمر تشغيل وإيقاف الراديو بواسطة أي جهاز Z-Wave: مفتاح فوب ، مفتاح ، جهاز تحكم ، إلخ.



محطة رسم توضيحي لرصيف 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;
}



بعد ملء الرسم ، تحتاج إلى إضافة Z-Uno إلى وحدة تحكم Z-Wave. يظهر Z-Uno كمفتاح مع زري التشغيل وإيقاف التشغيل.



قراءة البطارية


أضف إلى الوظيفة تمكين / تعطيل وظيفة المكنسة الكهربائية لقراءة شحن البطارية. مع رسم تخطيطي قراءة شحن بطارية Z-Uno بشكل دوري أو عند الطلب يرسل طاقة بطارية مكنسة كهربائية Roomba إلى وحدة تحكم Z-Wave.


سكتش ريدينج روومبا مكنسة كهربائية بطارية و قاعدة تنظيف ل 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;
}



يتم الآن عرض Z-Uno كجهاز ثنائي القناة مع وظائف مفتاح ومستشعر متعدد المستويات ، أي يتم عرض أزرار التشغيل / الإيقاف والشحن بالفولت.



إذا لزم الأمر ، يمكنك إضافة تحكم مباشر وتنفيذ قراءة مستشعر درجة الحرارة وتقرير عن اجتماع مع الجدار وإعلام إذا كان من المستحيل القيادة. يمكنك إضافة ميزة تسمح لك بالعثور عليها عالقة تحت كنبة Roomba عن طريق إرسال أمر له بالعزف.

من المؤكد أن Z-Uno ليس الخيار الوحيد للتحكم في راديو Roomba ، فهناك RooWiFi والعديد من المشاريع مثل Arduino + ESP8266 ، ولكن إذا كان لديك بالفعل شبكة Z-Wave ، فلماذا لا تستخدم Z-Uno للتحكم في Roomba!



للراغبين في توفير المال ، يقدم متجر 5smart.ru خصمًا بنسبة 10٪ على Z-Uno وعلى جميع معدات Z-Wave. القسيمة GT_SUMMER .

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


All Articles