Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В этом руководстве я покажу вам, как построить датчик наводнения / воды Wi-Fi с минимальными затратами. Весь проект обходится мне менее чем в 8 долларов за детали, которые я покупаю на ebay, и мои существующие запасные части.
В этом проекте мы будем использовать ESP-01 для предоставления Wifi и клиента MQTT для обнаружения воды и, при желании, использовать напрямую подключенный динамик / зуммер для обеспечения локального сигнала тревоги.
Мое конкретное приложение для проекта - обнаружение наводнения / воды внутри колодца моего отстойника в случае отказа отстойника. Когда вода обнаруживается двумя открытыми проводами, он отправляет сообщение брокеру MQTT. Затем брокер MQTT ретранслирует сообщение в NodeRED. Получив сообщение MQTT, NodeRED отправит объявление на несколько домашних устройств Google, а также при необходимости отправит сообщение на мобильный телефон / браузер через pushbullet.
Конечно, этот проект будет работать, только если в доме включено электричество. В следующих инструкциях я интегрирую схему резервного аккумулятора. Но если вы сделаете блок питания таким же, как и я, вы можете просто подключить USB-блок питания для резервного питания от батареи. Если у вас есть внешний аккумулятор, который позволяет заряжать и подавать питание одновременно, то все готово.
Я использую RaspberryPi ZeroW для размещения сервера Mosquitto MQTT и NodeRED. Он работает уже больше года без каких-либо проблем.
Ссылки: Raspberry Pi: https://www.switchdoc.com/2016/02/tutorial-installi … Установите NodeRED на Raspberry Pi:
Шаг 1: детали, которые вам понадобятся
Список деталей:
(1) ESP-01
(2) резистор 10 кОм
(1) малосигнальный общий NPN-транзистор (я использовал 2N3904)
(2) длинные провода
(1) Стандартный источник питания 5 В (для этой схемы требуется ток менее 300 мА)
(1) Модуль регулятора 3,3 В AMS1117
(1) Комплект для сборки конвертера печатной платы с разъемом Micro-USB для DIP-адаптера
(1) Кабель USB-A - MicroUSB.
(1) 8-контактный разъем IC - можно не устанавливать, если вы хотите припаять ESP-01 непосредственно к печатной плате. Разрежьте пластиковые перемычки, образующие зазор между рядами, а затем склейте 2 ряда вместе, см. Фото.
(1) Небольшой корпус для проекта
Ниже приведены дополнительные детали, если вам нужна локальная сигнализация с использованием динамика / зуммера
(1) Стандартный транзистор PNP, выбирайте в соответствии с требованиями к току / мощности динамика / зуммера. В моем случае я использую 2N2907, так как мой динамик всего 0,3 Вт (8 Ом), он обеспечит достаточную мощность для управления динамиком. Вы можете выбрать транзистор и динамик большего размера, если хотите, чтобы звук был громче.
(1) Динамик, см. Примечание о транзисторе PNP выше
(1) Резистор 100 - 110 Ом
Шаг 2: Принципиальная схема
Первым шагом будет создание схемы, показанной на схеме.
Я построил источник питания 3,3 В постоянного тока, используя старое зарядное устройство для мобильного телефона на 5 В в сочетании с регулятором 3,3 В постоянного тока AMS1117. Для гнезда ESP-01 я использую 8-контактное стандартное гнездо IC и разрезаю пластиковые перемычки, которые создают зазор между рядами, а затем склеиваю 2 ряда вместе.
Схема, которую я разработал, предназначена для определения наличия воды между двумя проводами. Когда вода достигает кончика обоих проводов, она создает сопротивление примерно от 10 кОм до 20 кОм. Затем, последовательно с резистором R1 10 кОм, он подает небольшой ток на базу Q1, вызывая насыщение Q1, прижимая GPIO-2 к земле. R1 необходим для защиты Q1 в случае случайного замыкания чувствительных проводов.
R2 - это подтягивающий резистор, позволяющий загружать ESP-01 с флэш-памяти.
Теперь для дополнительного динамика / зуммера, если вам просто нужен ESP-01, чтобы говорить MQTT и вы не хотите реализовывать эту локализованную тревогу, вы можете удалить R2, Q2, динамик и поместить подтягивающий резистор 10K между GPIO-0. и VCC.
Если вы не чувствуете необходимости использовать переходник с разъема Micro-USB на DIP, вы можете припаять провода между блоком питания 5 В и модулем регулятора 3,3 В. Я предпочитаю использовать адаптер MicroUSB с гнездом, поэтому я могу использовать любое обычное зарядное устройство для мобильного телефона и кабель MicroUSB.
Шаг 3: построение схемы
Припаяйте все компоненты и детали к печатной плате в соответствии со схемой на предыдущей странице и отрежьте печатную плату до нужного размера.
Поместите печатную плату в корпус, который подходит для печатной платы и дополнительного динамика. В моем случае все детали поместились бы в небольшую коробку для телефонной розетки, хотя мне нужно немного нагреть крышку, чтобы создать выпуклость, чтобы поместился модуль ESP-01.
Шаг 4: Прошивка ESP-01
На этом этапе мы прошиваем ESP-01 с помощью скетча Arduino. Если вы никогда не прошивали модуль ESP-01, следуйте моим инструкциям, чтобы начать работу:
Вы можете найти мой эскиз на моей странице github:
В эскизе вам нужно как минимум изменить следующую информацию, относящуюся к вашей домашней сети / настройке:
#define MQTT_SERVER "10.0.0.30" const char * ssid1 = "SSID"; const char * password1 = "MYSSIDpassword"; const char * ssid2 = "SSID1"; const char * password2 = "MYSSIDpassword";
В моей домашней сети у меня есть 2 разные точки доступа, которые транслируют 2 разных SSID, и этот набросок позволит обеспечить избыточность, подключившись к следующему SSID, если связь с текущей AP будет потеряна. Если у вас только один SSID, укажите для ssid1 и ssid2 одно и то же значение.
После внесения изменений загрузите эскиз в ESP-01 и подключите ESP-01 к интерфейсной плате.
Шаг 5: тестовый запуск
Чтобы проверить, работает ли наш проект, проще всего будет отслеживать сообщения MQTT в сети. Для этого вам нужно открыть сеанс SSH с брокером mosquitto и выполнить следующую команду:
mosquitto_sub -v -t '#'
Приведенная выше команда позволит нам увидеть все сообщения MQTT, поступающие в брокер.
Теперь включите нашу схему, и если все работает, через несколько секунд вы должны, по крайней мере, увидеть следующее сообщение MQTT:
stat / SumpWaterSensor / LWT Online
Теперь проверьте датчик воды, погрузив 2 чувствительных провода в чашку с водой, и вы должны увидеть это сообщение:
теле / SumpWaterSensor WET
И если вы вытащите провода из воды, вы должны увидеть это сообщение:
теле / SumpWaterSensor СУХОЙ
Если вы видите эти сообщения, ваш проект успешен.
Я также включил в скетч несколько полезных тем MQTT, которые вы можете использовать:
"stat / SumpWaterSensorInfo": это сообщение отправляется каждую минуту, чтобы предоставить время безотказной работы и другую информацию.
"cmnd / SumpWaterSensorInfo": ESP-01 отправит информацию, если получит эту тему со значением '1' (ascii = 49).
"cmnd / SumpWaterSensorCPUrestart": ESP-01 перезапустится, если получит эту тему со значением '1' (ascii = 49)
"cmnd / SumpWaterSensorBeep": ESP-01 будет озвучивать динамик, если он получит эту тему со значением '1' (ascii = 49)
"cmnd / SumpWaterSensorBeepFreq": устанавливает частоту сигнала тревоги динамика, по умолчанию = 900 (Гц).
"cmnd / SumpWaterSensorDebug": включить и установить уровень последовательной отладки (по умолчанию 0 - без отладки)
Шаг 6: Установите датчик
В моем приложении я хочу контролировать уровень воды внутри колодца моего отстойника и уведомлять меня, если вода достигает уровня выше поплавкового выключателя отстойника, что означает, что мой отстойник не работает. Я проложил провода и закрепил их стяжками вдоль дренажной трубы.
Шаг 7: последний штрих
Теперь, когда проект работает и мы можем опубликовать сообщение MQTT брокеру, следующий шаг - подумать, что с этим делать.
В своем проекте я использую Node-RED для прослушивания / подписки на тему MQTT "tele / SumpWaterSensor" и оповещения нескольких домашних ораторов Google об обнаружении воды. В дополнение к этому я также связал поток с узлом pushbullet для отправки уведомления на мой телефон Android.
Я также создал веб-интерфейс, чтобы видеть состояние датчика (включен / отключен, время безотказной работы и т. Д.). Иногда я видел, что он отключается несколько раз в течение 1 недели, судя по статистике, в большинстве случаев это связано с отключением ESP-01 от Wi-Fi или MQTT. Но не слишком волнуйтесь, мой набросок включал процедуру перезапуска ESP-01, если он продолжает попытки подключиться к WIFI и / или MQTT-брокеру.
На изображении на этом этапе показан процесс Node-RED для этого. Вы также можете вставить поток с моей страницы github в свой Node-RED:
Объявление Google Home - лишь один из примеров этого проекта, но я считаю его наиболее полезным и практичным. Вы всегда можете взаимодействовать с другим слушателем MQTT или даже использовать IFTTT для управления другими устройствами при обнаружении воды.
Повеселись…