Детектор наличия человека в туалете

от автора

Люблю, когда освещение включается автоматически, поэтому стараюсь автоматизировать это везде, где только можно. В коридоре это делается элементарно — датчиком движения. В кладовке можно просто включать свет, когда открыта дверь.

Как же сделать это в туалете? Когда человек сидит на унитазе, особого движения нет, свет будет гаснуть, да дверь обычно за собой закрывают. Передо мной встала задача — создать устройство, которое будет определять, что на унитазе сидит человек, либо что кто-то вообще находится в туалете.

Решение оказалось достаточно очевидным — оптопары. С одной стороны туалета можно повесить инфракрасные светодиоды, а с другой — фотодиод(ы). Правда, последних у меня в наличии не оказалось, зато завалялась целая куча ДУ-приёмников TSOP 1736, которые я уже где только не применяю. Использовать эти приёмники достаточно просто, они имеют всего три вывода: земля, питание и выход. Если подать на него питание, на выходе будет 5 вольт, но если при этом где-то поблизости инфракрасный светодиод мигает с частотой в 36кГц, то на выходе будет ноль.

Задача свелась к следующему: мигать по очереди светодиодами, проверять, видит ли ДУ-приёмник сигнал, и если не видит (что-то его загородило), то включать свет через реле. Оставалось собрать устройство, которое будет всё это делать. Я быстренько набросал плату:

image

Всё достаточно просто. Используется микроконтроллер ATMEGA8. Справа разъём для подключения программатора (сеть и возможность удалённо обновлять прошивку тут не нужны, пожалуй). Сверху контакты для подключения ДУ-приёмника и ИК-светодиодов. Слева зажимы — вход 220 вольт и выход на лампу. Чуть правее реле, которое включается через транзистор, не забываем воткнуть в обратку диод. Чуть правее центра три светодиода для удобства отладки. Блок питания я решил использовать готовый, разломал для этого зарядку от Нокии.

В итоге получилось такое устройство:

image

Однако, самое сложное оказалось впереди. Во-первых, светодиоды нужно было правильно расположить, чтобы линии между ними и ДУ-приёмником проходили именно там, где обычно находится человек. С сидячим положением вопросов не было, но мне никогда раньше не приходилось задумываться — в какой именно точке я стою, когда писаю? Это как в анекдоте про профессора и бороду — пока не думаешь об этом, всё просто. Пришлось провести несколько экспериментов, писая незадумываясь перемещая светодиоды, в итоге была найдена идеальная комбинация:

image

При таком раскладе, как бы я ни вставал, один из лучей всегда пересекается, а в сидячем положении пересекаются все три.

Второй проблемой оказалось то, что светодиоды весьма яркие, если можно так сказать относительно инфракрасного света, а плитка на стенах хорошо отражает лучи. В результате ДУ-приёмник видел сигнал, даже если закрывать светодиоды ладонью. Нужно было понизить их яркость, при чём индивидуально и желательно без изменения схемы, т.е. программным путём. Увы, уменьшить ток таким образом проблемно, но оказалось, что на дальнобойности сильно сказывается скважность мигания.

image

Сверху — обычный сигнал, когда светодиод мигает 36000 раз в секунду, а снизу сигнал, который будет регистрироваться ДУ-приёмником только с более близкого расстояния. При этом частота остаётся той же — 36кГц, но время, в течении которого светодиод горит становится меньше.

Опытным путём были подобраны идеальные значения для каждого из светодиодов. Я себя чувствовал в весьма дурацкой ситуации, сидя с ноутбуком и программатором в туалете. В результате всё работает так, что достаточно малейшего объекта, чтобы полностью загородить каждый из лучей, но и ложных срабатываний при этом не бывает. Свет выключается спустя всего-то 15 секунд. На случай, если вдруг что-то пойдёт не так, свет не будет гореть более 15 минут. Повод там не засиживаться.

Все провода аккуратно спрятал в короба:

image

image

Так в доме появилось ещё одно маленькое удобство. Купить бы ещё японский унитаз, и будет полная гармония 🙂

ссылка на оригинал статьи http://habrahabr.ru/post/191092/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *