Arduino + Z-Waveのトイレ洗浄の自動化

これら2つのオブジェクトに共通するものは何でしょうか?











アイデア



猫のトイレからの不快な臭いを取り除くために、トイレに猫を慣れさせることを考えたことがあります。 しかし、彼に歩くことを教えることは一つのことですが、彼を手放すことはほとんど不可能な仕事です。 そこで私は、Arduino Nanoがその役割を担っていることを電子的な肩にかけることにしました。



シナリオは次のとおりです。

Kote(最初の写真に写っている人)は、ミニドアからトイレのドアの中に入り、オープニングセンサーを作動させ、好きなように仕事をして去ります。 センサーの2回目の操作後、フードがオンになり、トイレの水が放出され、清涼剤がスプレーされます。



機器とテスト



Towerpro MG996Rサーボマシン 、Z-Wave Fibaro FGS221リレー、およびLED付きのボタンがボードに接続されました。 彼は、リレーと並行してボーナスとしてボタンを追加し、壁に持ってきました。











実際、サーボは5V 2A PSUによって駆動されます。 それから、ボードはUSB経由で給電されます。



接続図とコード:









Arduinoのコード
#include <Servo.h> //   Servo Servo flush; //      const int buttonPin = 2; //    const int led = 4; //    int buttonState = 0; //      int flag = 0; //     unsigned long holdTime = 0; //    unsigned long blinkTime = 0; //    unsigned long loadTime = 0; //    void setup() { pinMode(led, OUTPUT); //      pinMode(buttonPin, INPUT); //      flush.attach(3, 8, 140); //     3   /  flush.write(8); //       } void loop(){ buttonState = digitalRead(buttonPin); //    if (buttonState == LOW && flag == 0) { //         flush.write(8); //       digitalWrite(led, LOW); //   } if (buttonState == HIGH && flag == 0) { //        delay(100); //      flush.write(140); //      flag = 1; //   holdTime = millis(); //     } if (buttonState == HIGH && flag == 1 && millis()-holdTime > 200) { //      X  flag = 0; //   blinkTime = millis(); //     do { digitalWrite(led, LOW); //   delay(200); digitalWrite(led, HIGH); //   delay(200); } while (millis()-blinkTime < 5000); //   X  flush.write(8); //       loadTime = millis(); //      do { digitalWrite(led, LOW); //   delay(200); digitalWrite(led, HIGH); //   delay(200); } while (millis()-loadTime < 54000); //   X  (   ) } if (buttonState == LOW && flag == 1 && millis()-holdTime <= 200) { //      X  flag = 0; //   blinkTime = millis(); //     do { digitalWrite(led, LOW); //   delay(200); digitalWrite(led, HIGH); //   delay(200); } while (millis()-blinkTime < 2000); //   X  flush.write(8); //       loadTime = millis(); //      do { digitalWrite(led, LOW); //   delay(200); digitalWrite(led, HIGH); //   delay(200); } while (millis()-loadTime < 30000); //   X  } }
      
      









Z-Waveを使用したアルゴリズムの最初のバージョンのビデオ




このバージョンは、ボタンを再度押す前の遅延のみが最終バージョンと異なります


遅延は、水がタンクに完全に再充電される期間に等しくなります。






実装



Geberitからのインストールは修復中にインストールされたため、トラクションを接続することは難しくありませんでした。 サーボマシンは、タンクとアルミニウムプロファイルの間に一列に設置され、ねじ止めされ、ホットメルト接着剤が充填されます。 タンクの開口部に通されたクランプ付きケーブルは、牽引として使用されました。 タンクのボタンで水を下げる能力を失わないように、柔軟な牽引力が必要でした。











電子部品は、取り付け用のジャンクションボックスにあります。











手動制御は、ボタンを使用するか、Fibaro HomeCenterのアプリケーションを介して実行できます。











2つのシャッターモードが使用されます。

  1. 短いプレス(<200 ms)で水の半分が放出されます。
  2. ボタンを200ミリ秒以上保持すると、タンクは完全に空になります。


Z-Waveリレーは2番目のモードに設定されます。



デバイスのデモンストレーション


遅延は、アプリケーションがfibaroサーバーを介してリモートアクセスモードであったために発生します。






おわりに



残念なことに、彼は引っ越してきたので、ビデオにはコテはありませんが、私はまだ私の計画を実現したいと思っています。



まあ、ボーナス:)





All Articles