Kontrol pencahayaan kamar mandi berdasarkan konter pengunjung


Jaringan ini memiliki banyak artikel tentang otomatisasi pencahayaan di kamar mandi, kebanyakan dari mereka didasarkan pada sensor gerakan atau volume. Seseorang bahkan dibuat berdasarkan kamera video, pilihannya menarik, tetapi ada peluang untuk menjadi "bintang" youtube. Setelah mempelajari berbagai pilihan untuk keuntungan dan kerugian mereka, saya bertanya-tanya mengapa hampir tidak ada yang melakukan pencantuman cahaya secara otomatis berdasarkan penghitung pengunjung reguler. Bagaimanapun, menghitung masuk dan keluar, Anda dapat dengan jelas menilai apakah ada orang di ruangan itu atau tidak, dan dengan demikian menghidupkan atau mematikan lampu.


Untuk memproduksi meter, dua sensor jarak inframerah E18-D80NK dan Arduino Pro Mini dibeli. Biaya pada saat pembelian adalah 250 rubel. dan 60 rubel. sesuai.
Sensor IR


Diagram skematis (dapat diklik).
Skema


Sensor tertanam di kusen pintu.
Sensor tertanam

Karena otomatisasi pencahayaan kamar mandi adalah bagian dari sistem rumah pintar, perangkat itu dibagi menjadi dua bagian. Bagian pertama adalah logika sensor yang menentukan arah gerakan, dan bagian kedua, pengontrol pencahayaan (KO), sudah terlibat dalam menghitung jumlah orang yang masuk / keluar dan menyalakan lampu.
Arduino ProMini memperbaiki arah gerakan dan menghasilkan pulsa di output, yang tiba di CO, yang pada gilirannya terlibat dalam penghitungan dan menyalakan / mematikan lampu.
Kode penghitung IR
bool flag = 0;
bool flag2 = 0;
bool state = 0;
bool state2 = 0;
int DoorPin = 10; //
int pause = 500;
int StatusDoor = 0;
int status1 = 0;
int status2 = 0;

void setup() {
  pinMode(13, OUTPUT); //   
  pinMode(12, OUTPUT); //   
  pinMode(DoorPin, INPUT);
  digitalWrite(DoorPin, HIGH);  //   
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  digitalWrite( 12 , LOW );
  digitalWrite( 13 , LOW );
}
void loop() {
  StatusDoor = digitalRead(DoorPin);    //   
  if (StatusDoor == HIGH) {             //   ,   
    if (!digitalRead(2) && !flag) {
      delay(5);
      flag = 1;
      if (flag2 == 0) {
        state = 1;
      }
    }
    if (!digitalRead(3) && !flag2) {
      delay(5);
      flag2 = 1;
      if (flag == 0) {
        state2 = 1;
      }
    }
    if (digitalRead(3) && digitalRead(2)) {
      if (!flag || !flag2) {
        state = 0;
        state2 = 0;
        flag = 0;
        flag2 = 0;
      }
      if (flag && state2) { //
        digitalWrite( 13 , HIGH );
        delay(pause);
        digitalWrite( 13 , LOW );
        flag = 0;
        flag2 = 0;
        state2 = 0;
      }
      if (flag2 && state) { //
        digitalWrite( 12 , HIGH );
        delay(pause);
        digitalWrite( 12 , LOW );
        flag = 0;
        flag2 = 0;
        state = 0;
      }
    }
  }
}


KO mengontrol pencahayaan dari sakelar konvensional yang dipasang di depan pintu. Fungsi KO meliputi mengendalikan pencahayaan seluruh apartemen dari sakelar, mentransmisikan data pada keadaan pencahayaan dan menerima perintah dari server rumah pintar menggunakan protokol MQTT.
Bagian Kode Pengontrol Cahaya
 if (digitalRead(22) != pre1) { //    
    delay(pause);
    digitalWrite(33, !digitalRead(33)); //   ..    
    pre1 = digitalRead(22); //   
    int out1 = digitalRead(33);
    String char_out1 = String(out1);
    char_out1.toCharArray(b, 2);
    client.publish("myhome/Lighting/BathRoom_Main", b); //   
    if (digitalRead(33) == HIGH) {
      posetitel = 1;
      bathswitch = 1;
    }
    else if (digitalRead(33) == LOW) {
      posetitel = 0;
      bathswitch = 0;
    }
  }
  if (digitalRead(2) == 1 && (millis() - previousMillis > 3000)) { //      
    previousMillis = millis();
    if (bathswitch == 1) {
      posetitel = 0;
      bathswitch = 0;
    }
    posetitel++; 
    if (posetitel > 0) {
      delay(50);
      digitalWrite(33, 1);// 
      if (posetitel > 5) {
        posetitel = 5;
      }
      delay(5);
      client.publish("myhome/Lighting/BathRoom_Main", "1"); //    
    }
  }
  if (digitalRead(3) == 1 && (millis() - previousMillis > 3000)) { //      
    previousMillis = millis();
    posetitel--;
    if (posetitel <= 0) {
      posetitel = 0;
      delay(50);
      digitalWrite(33, 0);// 
      delay(5);
      client.publish("myhome/Lighting/BathRoom_Main", "0"); //    
    }
  }



Dari pengalaman operasi, kita dapat menyimpulkan bahwa sistem yang disajikan sepenuhnya operasional. Memang benar bahwa kadang-kadang kesalahan fungsi terutama pada pakaian hitam, tetapi jarang, dan jika sensor tidak bekerja pada input / output, itu cukup untuk melambaikan tangan Anda melewati sensor atau cukup klik sakelar.
Dan akhirnya, videonya bekerja.


Bagian pertama - Rumah pintar, awalnya.

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


All Articles