Таймер для мытья рук. Arduino против коронавируса

Таймер для мытья рук. Arduino против коронавируса

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

Что понадобится

    — микроконтроллер Arduino Uno
    — инфракрасный датчик препятствий E18-D80NK
    — трёхцветный светодиод
    — сопротивление на 220 Ом
    — пьезопищалка
    — макетная плата
    — соединительные провода «папа-папа»

Таймер для мытья рук. Arduino против коронавируса

Устройство построено на популярном микроконтроллере Arduino Uno. Я собирал таймер на оригинальной итальянской плате, но вам подойдут практически любые китайские клоны — проект простой и нетребовательный к ресурсам.

Таймер для мытья рук. Arduino против коронавируса

Я соберу проект на макетной плате, поэтому мне не понадобится паяльник. Как устроены макетные платы, уже рассказывал в предыдущем проекте — бесконтактном санитайзере. Если остались вопросы, пишите в комментариях, обязательно ответим.

Таймер для мытья рук. Arduino против коронавируса

Итак, за работу.

Шаг первый. Подключаем светодиод

Самая яркая деталь устройства — RGB-светодиод. В его прозрачном корпусе спрятаны сразу три источника света: красный (R, от английского red), зелёный (G — green)и синий (B — blue) светодиоды. Поэтому ног у него больше, чем у одноцветных диодов. Самая длинная из четырёх — это общий минус. Чуть короче - плюс зелёного светодиода. Самые короткие — плюсы красного и синего цветов. Соедините минус с сопротивлением, а сопротивление подключите к контакту GND на Arduino. Теперь подключите красный, зелёный и синий плюс к контактам 4,3 и 2.

Таймер для мытья рук. Arduino против коронавируса

Это стандартная схема подключения, но вы всегда можете проверить свой светодиод. Просто подключите плюс к контакту 5V на Ардуино. На этом контакте всегда есть напряжение, поэтому светодиод загорится. Главное, не забывайте подключать минус через сопротивление, иначе светодиод сгорит.

Таймер для мытья рук. Arduino против коронавируса

Проверим как работает светодиод. Для этого прошьём плату простым скетчем. Эта программа раз в секунду будет переключать цвет светодиода.

Основной код программы находится в закольцованной функции (loop в переводе означает петля). Эта функция будет повторятся снова и снова, пока не выключить плату. Это удобно для повторяющихся событий и постоянного опроса датчиков.

Шаг второй. Таймер обратного отсчёта

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

После включения платы мы на секунду зажжём красный светодиод. Следующие двадцать секунд устройство будет мигать синим диодом: девять десятых секунды он будет гореть, потом выключаться на одну десятую. После двадцати таких повторений, устройство зажжёт зелёный светодиод.

Время, необходимое для мытья рук, задаётся в первой строке программного кода. Сейчас оно равно 20 секундам, но вы можете настроить этот интервал с точностью до секунды.

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

Шаг третий. Датчик приближения

Инфракрасный датчик препятствий работает как кнопка, только не нужно ничего нажимать — достаточно просто поднести руки.

Таймер для мытья рук. Arduino против коронавируса

Подключу датчик напрямую к плате, как делал это в предыдущем проекте. Отличие одно: 4 контакт уже занят светодиодом, поэтому подключу сигнальную линию к 7 контакту.

Таймер для мытья рук. Arduino против коронавируса

Изменится и код.

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

Шаг четвёртый. Добавляем звук

Устройство стало намного удобней, но теперь хочется добавить звуки. До Алисы мы со временем дойдем, а пока ограничимся простым пьезодинамиком. За издаваемые звуки его часто называют пищалкой или базером.

Таймер для мытья рук. Arduino против коронавируса

Для подключения динамика понадобятся всего два провода, один подключим к минусу, а второй к 9 контакту на Arduino. Сопротивление здесь не понадобится, да и полярности динамик не имеет — не важно какую ножку подключать к плюсу, а какую к минусу.

Таймер для мытья рук. Arduino против коронавируса

В программе добавились три строки: первая задаёт контакт для работы с динамиком, вторая и третья выдают звуки. Для этого используется функция tone. В этой функции можно задать частоту и продолжительность звукового сигнала.

Всего за пару минут у нас получилось собрать законченное устройство. Такой таймер особенно пригодится, если у вас есть дети: с ним опостылевшее мытьё рук превратиться в маленькую игру.

Оставляйте комментарии, какие электронные проекты вам интересны, что осталось непонятно и о чём рассказать в следующих статьях.

Таймер для мытья рук. Arduino против коронавируса
Постоянный автор компании «220 вольт». Умеет собирать шкафы, пилить заборы и выпиливать двери. Пишет буквы и снимает видео.