我们正在开发Z-Wave设备,用于控制iRobot Roomba吸尘器



没有多余的前奏立即到了这一点。该公寓采用Z-Wave技术自动化,并且iRobot Roomba 770真空吸尘器未以任何方式连接到网络,并根据其计划进行了清洁。现在是时候将吸尘器添加到Z-Wave网络了!开发人员使用的Z-Wave板Z-Uno可以帮助我解决这个问题
使用Z-Wave进行吸尘器自动化的好处是什么?
  • 能够从Web界面方便地配置计划
  • 从真空吸尘器获取有关电池和传感器的数据
  • 通过移动应用程序进行管理
  • 用于模拟房屋中有人的场景


iRobot Roomba的管理文档已打开。因此,与真空吸尘器的通信通过Mini-DIN连接器(根据UART)以115200,TTL电平5V的速度进行。



有关Z-UNO的所有文档可从http://z-uno.z-wave.me/获得,其中包括所有可用功能的说明,示例和图表。



Z-Uno使用TTL电平为3.3V的UART,因此需要在Rx Z-UNO线上放置一个电阻分别为1 kOhm和2.2 kOhm的分压器。



将Roomba连接到Arduino时,存在一个问题,即Roomba在Tx上产生非常小的电流,因此如果Z-UNO上发生类似的问题,则数据可能会丢失,那么您需要使用带有分压器的晶体管:http :


//www.irobot.com/ 〜/媒体/ MainSite / PDFs /关于/ STEM /创建/ Arduino_Tutorial.pdf

Z-Uno可以从3.3V供电,通过标准稳压器从5V供电,而通过第二个标准稳压器从7-20V供电。清洁过程中,iRobot Roomba的电源电压约为14V,当真空吸尘器位于底座时,电压会升高至20V。如果将Z-Uno直接连接到iRobot Roomba,则Z-Uno上的线性稳压器会开始非常热,这会因温度而关闭电源,因此您需要使用散热器或开关稳压器。我选择了第二个选项,并使用了非常紧凑的MP1584EN中文稳压



稳压器MP1584EN的简要特性:
  • 输入电压:4.5-28V
  • 输出电压:0.8-20V(可调)
  • 输出电流:3A
  • 效率:96%

稳压器和分压器安装在Z-UNO的背面,而不会增加电路板的尺寸。



将Z-Uno连接到iRobot Roomba 770:



清洁码头站


使用Sketch Cleaning-Dock, Z-Uno工作站通过无线电接收ON / OFF命令,并使用UART吸尘器将Clean and Seek Dock命令发送到吸尘器。收到无线电命令时,Z-Uno带有集成的LED闪烁一次。可以通过任何Z-Wave设备发送开/关无线电命令:钥匙扣,开关,控制器等。



适用于Z-Uno Roomba的Sketch Cleaning-Dock Station
#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控制器。


速读Roomba 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被显示为具有开关和多级传感器功能的2通道设备,即显示开/关按钮和以伏特为单位的电荷。



如有必要,您可以添加直接控制,实现温度传感器的读取,与墙面的会议的报告以及在无法驶过时的通知。您可以通过向他发送播放旋律的命令来添加一项功能,使您发现卡在Roomba沙发下。

Z-Uno当然不是Roomba无线电控制的唯一选择,它具有RooWiFi和许多项目,例如Arduino + ESP8266,但是如果您已经拥有Z-Wave网络,那为什么不使用Z-Uno来控制Roomba!



对于那些希望省钱的人,5smart.ru商店提供Z-Uno和所有Z-Wave设备10%的折扣。优惠券GT_SUMMER

Source: https://habr.com/ru/post/zh-CN395105/


All Articles