Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В нашем доме два подростка и 1,5 санузла. Поскольку они оба любят очень долго принимать душ и готовиться, это означает, что большую часть времени мы с женой остаемся с только половиной ванны. Это проблема.
В прошлом мы пробовали несколько подходов, в том числе:
- Попросить их установить таймер обратного отсчета на своем смартфоне на 30 минут.
- Размещение настоящих часов в ванной.
- Отключение горячей воды.
- Запуск посудомоечной и / или стиральной машины.
- Кричать, попрошайничать и т. Д.
Ничего не получилось.
Я решил, что нам действительно нужна дверная сигнализация, но наоборот - сигнализация, которая звучит, когда дверь закрывается, а не открывается. Честно говоря, будильник должен давать жильцу примерно 30-40 минут на то, чтобы сделать свои дела, прежде чем сработать, и давать много предупреждений о том, что часы идут.
Войдите в Arduino!
Шаг 1. Соберите детали…
Чтобы воспроизвести этот проект, вам понадобится Arduino Uno или Mega 2560 и…
- Несколько светодиодов RGB. Я использовал три светодиода Grove, но вы можете использовать столько или меньше, сколько захотите.
- Динамик для перезвона и будильника. Я использовал этот, тоже Grove.
- Если вы используете компоненты Grove, которые я настоятельно рекомендую, чтобы все было просто, вам также захочется купить несколько таких кабелей.
- Магнитный геркон. Я выбрал этот, от Amazon.
- Источник питания. Я выбрал этот, чтобы использовать либо батарею 9 В, либо батарейки AA для увеличения срока службы, если это необходимо, и в основном он поставлялся с «бесплатным» клоном Arduino Uno в качестве бонуса.
Моя Arduino пришла из более старой версии Seeed Studio ADK Dash Kit (моя не поставлялась с кабелями). Если вы можете найти его на Amazon или Ebay, это довольно хороший способ начать работу. Он включает в себя мегашит Grove, светодиоды RGB, Arduino Mega 2560 (клон) со встроенным USB, а также набор других модулей Grove, которые могут быть интересны для других проектов.
Шаг 2: напишите программу
Мои требования к программе были следующие:
- Должен иметься звуковой сигнал через регулярные промежутки времени, чтобы привлечь внимание пассажира.
-
Должен иметь визуальный статус, указывающий в макро-смысле, сколько времени осталось.
- Визуальное средство должно легко просматриваться и интерпретироваться через стеклянные дверцы душевой кабины и / или вне отражения запотевшего зеркала.
- Когда обратный отсчет приближается к концу, на визуальном изображении должен четко отображаться красный цвет опасности.
- Должен быть звуковой сигнал, который не прекращается.
- Система должна быть поставлена на охрану, когда дверь закрывается, и снята с охраны, когда дверь открыта.
Я не хотел использовать цифровые считывающие устройства просто потому, что чувствовал, что их просмотр через запотевшие двери душевой кабины или в зеркальном отражении будет в лучшем случае затруднительным. Моя первая попытка использовала только один светодиод RGB, мигающий все быстрее и быстрее (с использованием функции затухания) по мере того, как время истекло, но этот подход не дает жильцу реального ощущения прошедшего или оставшегося времени.
Я решил, что лучше всего иметь три светодиода RGB (и мне не помешало то, что три у меня были под рукой). Каждый будет отсчитывать 1/3 от общего разрешенного времени. Это могло дать пассажиру четкое представление о прошедшем и оставшемся времени, просто взглянув на три светодиода.
Чтобы привлечь внимание к таймеру, я решил проигрывать двухтональный перезвон в начале каждого интервала.
Наконец, когда таймер сработает, раздается двухтональный звуковой сигнал, который продолжает звучать до тех пор, пока система не будет снята с охраны путем открытия двери.
Я прошел через 3 основные итерации программы, каждый раз упрощая и добавляя все меньше и меньше строк кода, который работал лучше, чем предыдущая попытка. Я делюсь здесь только «окончательной» версией, поскольку она делает то, что нужно, без лишних сложностей.
Шаг 3: Соберите детали и проверьте
Поскольку я использовал Grove, сборка была, вероятно, самой простой частью этого проекта.
Соедините светодиоды RGB в цепочку (например, из LED1 в LED2). Когда у вас есть цепочка, подключите LED1, первый светодиод RGB в вашей цепочке, к Arduino.
В моем случае:
- Земля в черный (земля)
- + 5v к красному (+ 5v)
- D7 в белый
- D6 в желтый
На этом этапе вы можете скомпилировать и загрузить программу в Arduino, чтобы проверить свет. Я предлагаю установить значение TimeInt равным 1, чтобы вам не приходилось проводить долгий обратный отсчет во время тестирования.
Так же просто подключить динамик, также являющийся модулем Grove. Подключите динамик к D8-D9.
В моем случае:
- Земля в черный (земля)
- + 5v к красному (+ 5v)
- D9 в белый
- D8 в желтый
Вы можете протестировать его снова или, если вы еще не тестировали его, протестируйте его сейчас. Поиграйте с TimeInt и всем остальным, что вы хотите изменить и скомпилировать, загрузить, а затем протестировать.
Шаг 4: Завершить и развернуть
Я написал программу и выполнил все прототипы и испытания с использованием клона Seeed Mega, но я чувствовал, что это было «слишком дорого» для развертывания в качестве окончательного решения. Используя клон Uno, я спаял соединения (после тестирования) и смонтировал все, чтобы сэкономить кусок дерева.
В качестве корпуса мне нужно было что-то прозрачное (чтобы пользователь мог видеть светодиоды RGB), но также несколько водонепроницаемое. Ванная комната, предполагаемое место развертывания, может иметь очень высокую влажность из-за длительного душа, и я хотел, чтобы у Arduino был некоторый уровень защиты. Решением было повторно использовать китайский контейнер на вынос. У него была плотная, хорошо закрытая и прозрачная крышка, а внутри было достаточно места для установки Arduino и батареи!
Затем я установил систему в ванной, используя планки 3M Command.