التحكم في إضاءة الحمام على أساس عداد الزوار


تحتوي الشبكة على العديد من المقالات حول أتمتة الإضاءة في الحمام ، يعتمد معظمها على أجهزة استشعار الحركة أو الصوت. حتى أن شخصًا ما صنع على أساس كاميرا فيديو ، فإن الخيار مثير للاهتمام ، ولكن هناك فرصة لتصبح "نجمًا" في youtube. بعد دراسة الخيارات المختلفة لمزاياها وعيوبها ، تساءلت عن سبب عدم قيام أي شخص تقريبًا بإدراج الضوء تلقائيًا استنادًا إلى عداد الزوار العادي. بعد كل شيء ، بعد حساب الوارد والصادر ، يمكنك الحكم بشكل واضح على ما إذا كان هناك أي شخص في الغرفة أم لا ، وبالتالي تشغيل أو إيقاف الضوء.


لتصنيع العداد ، تم شراء جهازي استشعار للأشعة تحت الحمراء E18-D80NK و Arduino Pro Mini. كانت التكلفة في وقت الشراء 250 روبل. و 60 روبل. وفقًا لذلك.
مستشعر الأشعة تحت الحمراء


رسم تخطيطي (قابل للنقر).
مخطط


يتم تضمين أجهزة الاستشعار في إطار الباب.
أجهزة الاستشعار المضمنة

نظرًا لأن أتمتة إضاءة الحمام هي جزء من نظام المنزل الذكي ، فقد تم تقسيم الجهاز إلى قسمين. الجزء الأول هو منطق المستشعر الذي يحدد اتجاه الحركة ، والجزء الثاني ، متحكم الإضاءة (KO) ، يعمل بالفعل في حساب عدد عمليات تسجيل الدخول / الخروج وتشغيل الإضاءة.
يعمل Arduino ProMini على إصلاح اتجاه الحركة ويولد نبضات عند الإخراج ، والتي تصل إلى CO ، والتي بدورها تعمل في العد وتشغيل / إيقاف الضوء.
رمز عداد الأشعة تحت الحمراء
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 في الإضاءة من مفتاح تقليدي مثبت أمام الباب. تتضمن وظائف KO التحكم في إضاءة الشقة بأكملها من المفاتيح ، ونقل البيانات عن حالة الإضاءة وتلقي الأوامر من خادم المنزل الذكي باستخدام بروتوكول MQTT.
جزء رمز تحكم الضوء
 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"); //    
    }
  }



من تجربة التشغيل ، يمكننا أن نستنتج أن النظام المعروض يعمل بكامل طاقته. صحيح ، في بعض الأحيان يكون هناك خلل كاذب بشكل رئيسي على الملابس السوداء ، ولكن نادرًا ، وإذا لم يعمل المستشعر عند الإدخال / الإخراج ، يكفي أن تمرر يدك عبر أجهزة الاستشعار أو ببساطة انقر فوق المفتاح.
وأخيرًا ، عمل الفيديو.


الجزء الأول - البداية الذكية ، البداية.

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


All Articles