Автоматическое включение света в ванной. Счетчик посетителей
На основе ИК датчиков и 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 В чем разница между подтягивающими и стягивающими резисторами?
Видимо подтягивающий тянет к +, стягивающий к -.