Badezimmerbeleuchtungssteuerung basierend auf Besucherzähler


Das Netzwerk hat viele Artikel zur Automatisierung der Beleuchtung im Badezimmer, die meisten basieren auf Bewegungs- oder Volumensensoren. Jemand hat sogar auf der Basis einer Videokamera eine interessante Option gemacht, aber es besteht die Möglichkeit, ein „Star“ von Youtube zu werden. Nachdem ich verschiedene Optionen auf ihre Vor- und Nachteile untersucht hatte, fragte ich mich, warum fast niemand die automatische Einbeziehung von Licht basierend auf einem regulären Besucherzähler tut. Wenn man den ein- und ausgehenden Wert zählt, kann man schließlich klar beurteilen, ob sich jemand im Raum befindet oder nicht, und das Licht entsprechend ein- oder ausschalten.


Zur Herstellung des Messgeräts wurden zwei Infrarot-Abstandssensoren E18-D80NK und Arduino Pro Mini gekauft. Die Kosten zum Zeitpunkt des Kaufs betrugen 250 Rubel. und 60 Rubel. entsprechend.
IR-Sensor


Schematische Darstellung (anklickbar).
Schema


Sensoren sind im Türrahmen eingebettet.
Eingebettete Sensoren

Da die Automatisierung der Badbeleuchtung Teil des Smart-Home- Systems ist , wurde das Gerät in zwei Teile geteilt. Der erste Teil ist eigentlich die Logik des Sensors zur Bestimmung der Bewegungsrichtung, und der zweite Teil, die Lichtsteuerung (KO), zählt bereits die Anzahl der Personen, die die Beleuchtung betreten / verlassen und einschalten.
Arduino ProMini legt die Bewegungsrichtung fest und erzeugt am Ausgang Impulse, die am CO ankommen, der seinerseits das Licht zählt und ein- und ausschaltet.
IR-Zählercode
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 steuert die Beleuchtung über einen herkömmlichen Schalter, der vor der Tür installiert ist. Zu den KO-Funktionen gehören die Steuerung der Beleuchtung der gesamten Wohnung über Schalter, das Senden von Daten zum Beleuchtungsstatus und das Empfangen von Befehlen vom Smart Home-Server mithilfe des MQTT-Protokolls.
Lichtregler Code Teil
 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"); //    
    }
  }



Aus der Betriebserfahrung können wir schließen, dass das vorgestellte System voll funktionsfähig ist. Es ist wahr, dass falsche Fehlfunktionen manchmal hauptsächlich auf schwarze Kleidung zurückzuführen sind, aber selten. Wenn der Sensor am Ein- / Ausgang nicht funktioniert hat, reicht es aus, mit der Hand an den Sensoren vorbei zu winken oder einfach auf den Schalter zu klicken.
Und schließlich die Videoarbeit.


Der erste Teil - Smart Home, der Anfang.

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


All Articles