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

На основе ИК датчиков и 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 комментариев
Старые вначале
Новые вначале По голосам
Межтекстовые Отзывы
Посмотреть все комментарии
Владимир
Владимир
8 лет назад

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

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

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

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

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

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

Tim
Tim
7 лет назад

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

Alexander
Alexander
4 лет назад

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

Alexander Mextner
3 лет назад

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

yeyu
yeyu
1 год назад

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

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