Умный дом

Автоматическое включение света в ванной. Счетчик посетителей

На основе ИК датчиков и Arduino pro min  сделал счетчик посетителей. Программа определяет направление движения и если кто то зашел в ванную автоматически включается свет.

ИК датчик

sku_148556_3

Датчики в дверном проеме. Устанавливал уже в установленную дверную коробку, просверлив два отверстия на 18 мм перьевым сверлом.  Arduino стоит за наличником дверной коробки.

IMG_1071_

Герконы покупал врезные

Встроенный-тип-сигнализации-магнитный-датчик-DoorWindow-встраиваемые-геркон-Белый

Так выглядит геркон в дверной коробке

IMG_1278!

А это магнит в двери
IMG_1280!

Код для Arduino

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(){          
	// Serial.begin(9600);
	 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;
	   }
	 }
  }
}
Подписаться
Уведомлять
guest

14 комментариев
Старые вначале
Новые вначале По голосам
Межтекстовые Отзывы
Посмотреть все комментарии
Владимир
Владимир
10 лет назад

Если Вас не затруднит, можно подробнее про датчики. Модель, аналоги.
Как определяется статус двери?
Буду благодарен ответу на почту ar4er06@mail.ru

алекс
алекс
10 лет назад

как вы монтировали эти датчики в коробку? уже на установленной?

фото установки геркона тоже было бы интересно

Андрей
Андрей
9 лет назад

Добрый день, хочу у себя использовать датчики E18-D80NK, как они у вас работают? есть жалобы на них?

Tim
Tim
9 лет назад

большая просьба, если можно написать код для одной ардуины управления светом в ванной на основе счетчика посетителей, я про эту статью: geektimes.ru/post/270140
у меня каждая ардуина сама по себе (без основного контроллера)

Alexander
Alexander
6 лет назад

Данный код имеет один изъян: если посетитель постоит в двери и уйдет/зайдет обратно, то программа будет считать его как вошедшего или вышедшего, в зависимости от того с какой стороны он был до того.
Решение:
в 25 строке написать: if(!digitalRead(2) && digitalRead(3) && !flag) {
а в 32 строке написать: if(!digitalRead(3) && digitalRead(2) && !flag2) {

Alexander Mextner
5 лет назад

Всё ещё пользуетесь этим решением с двумя датчиками пересечения? нормально работает? . . Я когда думал как сделать решил не делать так, потому что кажется что если «не аккуратно» проходить, то будет некорректно определяться (можно зайти вдвоём и выйти по-раздельности, или махать руками проходя или ещё что). . . Я решал задачу определения занятости ванной, не важно каким количеством человек, статистика тоже не нужна Сделал геркон+датчик движения 1. если дверь закрылась и затем было движение, значит в помещении кто-то есть пока дверь не откроется 2. если дверь открыта считать что внутри кто-то есть пока после последнего движение не прошло N… Читать далее »

yeyu
yeyu
3 лет назад

В чем разница между подтягивающими и стягивающими резисторами?полный текст https://www.utmel.ru/blog/categories/resistor/what-are-the-differences-between-pull-up-and-pull-down-resistors В чем разница между подтягивающими и стягивающими резисторами?

14
0
Поделиться своими мыслямиx