Автоматическое включение света в ванной. Счетчик посетителей
На основе ИК датчиков и Arduino pro min сделал счетчик посетителей. Программа определяет направление движения и если кто то зашел в ванную автоматически включается свет.
ИК датчик
Датчики в дверном проеме. Устанавливал уже в установленную дверную коробку, просверлив два отверстия на 18 мм перьевым сверлом. Arduino стоит за наличником дверной коробки.
Герконы покупал врезные
Так выглядит геркон в дверной коробке
Код для 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; } } } }
Если Вас не затруднит, можно подробнее про датчики. Модель, аналоги.
Как определяется статус двери?
Буду благодарен ответу на почту ar4er06@mail.ru
Так уж получилось, но более подробно описано тут
https://geektimes.ru/post/270140/
как вы монтировали эти датчики в коробку? уже на установленной?
фото установки геркона тоже было бы интересно
Добавил фото герконов в статью
вот такие датчики не подойдут?
http://ru.aliexpress.com/item/1pcs-IR-Infrared-Obstacle-Avoidance-Sensor-Module-for-Arduino-Smart-Car-Robot-3-wire-Reflective-Photoelectric/32465285698.html?spm=2114.10010208.100005.1.Fv794B&isOrigTitle=true
Подойдут, Но я не проверял как они будут работать и с какого расстояния они будут срабатывать
Добрый день, хочу у себя использовать датчики E18-D80NK, как они у вас работают? есть жалобы на них?
Работают почти год, проблем не наблюдалось
большая просьба, если можно написать код для одной ардуины управления светом в ванной на основе счетчика посетителей, я про эту статью: geektimes.ru/post/270140
у меня каждая ардуина сама по себе (без основного контроллера)
Данный код имеет один изъян: если посетитель постоит в двери и уйдет/зайдет обратно, то программа будет считать его как вошедшего или вышедшего, в зависимости от того с какой стороны он был до того.
Решение:
в 25 строке написать: if(!digitalRead(2) && digitalRead(3) && !flag) {
а в 32 строке написать: if(!digitalRead(3) && digitalRead(2) && !flag2) {
Всё ещё пользуетесь этим решением с двумя датчиками пересечения? нормально работает? . . Я когда думал как сделать решил не делать так, потому что кажется что если «не аккуратно» проходить, то будет некорректно определяться (можно зайти вдвоём и выйти по-раздельности, или махать руками проходя или ещё что). . . Я решал задачу определения занятости ванной, не важно каким количеством человек, статистика тоже не нужна Сделал геркон+датчик движения 1. если дверь закрылась и затем было движение, значит в помещении кто-то есть пока дверь не откроется 2. если дверь открыта считать что внутри кто-то есть пока после последнего движение не прошло N… Читать далее »
Да пользуюсь, дополнительно повесил сяомишный датчик движения еще.
В чем разница между подтягивающими и стягивающими резисторами?полный текст https://www.utmel.ru/blog/categories/resistor/what-are-the-differences-between-pull-up-and-pull-down-resistors В чем разница между подтягивающими и стягивающими резисторами?
Видимо подтягивающий тянет к +, стягивающий к -.