Estamos desenvolvendo um dispositivo Z-Wave para controlar o aspirador iRobot Roomba



Sem prelúdios supérfluos imediatamente ao ponto. O apartamento é automatizado pela tecnologia Z-Wave, e o aspirador iRobot Roomba 770 não está conectado à rede de nenhuma maneira e é limpo de acordo com sua programação. É hora de adicionar o aspirador à rede Z-Wave! A placa Z-Wave para desenvolvedores, Z-Uno, me ajudará com isso .
Quais são os benefícios da automação de aspiradores com o Z-Wave?
  • Capacidade de configurar convenientemente o agendamento a partir da interface da Web
  • Obtenha dados do aspirador sobre baterias e sensores
  • Gerenciar a partir de um aplicativo móvel
  • Use em cenários simulando a presença de uma pessoa em casa


A documentação de gerenciamento do iRobot Roomba está aberta. Daqui resulta que a comunicação com o aspirador ocorre através do conector Mini-DIN, de acordo com a UART, com uma velocidade de 115200, nível TTL 5V.



Toda a documentação do Z-UNO está disponível em http://z-uno.z-wave.me/ , inclui uma descrição de todas as funções disponíveis, exemplos e um diagrama.



O Z-Uno usa um UART com um nível TTL de 3,3V, portanto, na linha Rx Z-UNO, é necessário colocar um divisor de tensão dos resistores com um valor nominal de 1k e 2,2k.



Ao conectar o Roomba ao Arduino, há um problema de que o Roomba produz uma corrente muito pequena em Tx; portanto, os dados podem ser perdidos se ocorrer um problema semelhante no Z-UNO; você precisará usar um transistor com um divisor de tensão:


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

O Z-Uno pode ser alimentado de 3,3V, de 5V através de um regulador de tensão padrão e de 7 a 20V através de um segundo regulador de tensão padrão. Durante a limpeza, a tensão de alimentação do iRobot Roomba é de aproximadamente 14V; quando o aspirador está na base, a tensão sobe para 20V. Se você conectar o Z-Uno ao iRobot Roomba diretamente, o regulador de tensão linear no Z-Uno começará a aquecer bastante, o que desligará a energia pela temperatura. Portanto, você precisará usar um radiador ou um regulador de tensão de comutação. Eu escolhi a segunda opção e use o regulador de tensão chinês MP1584EN, muito compacto .



Breves características do regulador de tensão MP1584EN:
  • Tensão de entrada: 4.5-28V
  • Tensão de saída: 0.8-20V (ajustável)
  • Corrente de saída: 3A
  • Eficiência: 96%

O regulador de tensão e o divisor de tensão se encaixam na parte traseira do Z-UNO, sem aumentar as dimensões da placa.



Conecte o Z-Uno ao iRobot Roomba 770:



Estação de limpeza


Com o Sketch Cleaning-Dock, a estação Z-Uno recebe os comandos ON / OFF por rádio e envia os comandos Clean and Seek Dock ao aspirador usando o aspirador UART. Ao receber um comando de rádio, o Z-Uno pisca uma vez com o LED integrado. O comando de rádio on-off pode ser enviado por qualquer dispositivo Z-Wave: chaveiro, chave, controlador, etc.



Estação de ancoragem de limpeza de esboço 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;
}



Após preencher o esboço, você precisa adicionar o Z-Uno ao controlador Z-Wave. O Z-Uno aparece como um interruptor com os botões Ligar e Desligar.



Leitura da bateria


Adicione à função ativar / desativar a função de aspirador para ler a carga da bateria. Com um esboço A leitura periódica ou a pedido da carga da bateria do Z-Uno envia a energia da bateria do aspirador de pó Roomba para o controlador Z-Wave.


Sketch Reading Bateria para aspirador Roomba e estação de limpeza para estação 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;
}



Agora, o Z-Uno é exibido como um dispositivo de 2 canais com as funções de um comutador e um sensor de vários níveis, ou seja, Os botões On / Off e a carga em volts são exibidos.



Se necessário, você pode adicionar controle direto, implementar a leitura do sensor de temperatura, um relatório de uma reunião com a parede e uma notificação, se for impossível passar. Você pode adicionar um recurso que permita que você fique preso embaixo do sofá do Roomba enviando a ele um comando para tocar a melodia.

O Z-Uno certamente não é a única opção para o controle de rádio do Roomba, existe o RooWiFi e muitos projetos como o Arduino + ESP8266, mas se você já possui uma rede Z-Wave, por que não usar o Z-Uno para controlar o seu Roomba!



Para aqueles que desejam economizar, a loja 5smart.ru oferece 10% de desconto no Z-Uno e em todos os equipamentos Z-Wave. Cupom GT_SUMMER .

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


All Articles