IoT — pt. 2 — Soil moisture sensor
Интернет вещичек — часть 2 — датчик влажности почвы
Всем привет, и сегодня мы продолжаем расширять нашу сеть подключенных устройств, добавив к ней датчики влажности почвы для комнатных растений.
Устройство просыпается каждые 5 минут и публикует в MQTT свои показания в виде числа от 0 до 1023, где меньшие значения соответствуют большему содержанию воды в почве.
Имея эти данные, мы можем как самостоятельно принимать решение о необходимости полива, так и собрать отдельное устройство, осуществляющее полив автоматически.
Материалы
- Модуль ESP-12F
- Емкостный сенсор влажности почвы
- Двухсторонняя макетная плата 70x30
- Резистор 4.7k
- Резисторы 100k и 47k
- Линейный стабилизатор LM1117–3.3
- Конденсаторы 10uF и 0.1uF по две штуки каждого
- Брэйкаут с micro-USB разъёмом.
- Монтажный провод
- 3Dпечатный корпус и винты M3x10 с гайкамим
Для прошивки модуля потребуется USB-UART преобразователь с выходным высоким логическим уровнем 3.3V и пара временных кнопок для подключения к выводам RESET и FLASH.
Схема
Так как вход АЦП модуля ESP-12 имеет диапазон от 0 до 1V, а выход сенсора от 0 до 3V, необходим делитель из резисторов R2 и R3.
Сборка
Цветов у меня мало, а протоплат 70x30 много, поэтому опять обойдемся без ЛУТа.
В протоплате пришлось вырезать дремелем отверстие, чтобы можно было разместить сенсор по центру.
Код
Для работы кода не требуется никаких дополнительных библиотек, так как средства работы с внутренним АЦП уже имеются в стандартной библиотеке micropython’а.
Интервал сбора данных, по умолчанию равный пяти минутам, можно изменить в файле config.py
.
Прошивка
Процесс прошивки аналогичен описанному в конце статьи про тикерный монитор.
Корпус
Файлы для печати корпуса можно скачать в проекте Onshape.
После помещения платы внутрь желательно залить компаундом (например, столь любимым многими, термоклеем) место выхода платы сенсора из корпуса.
Дашборд
Для отображения показаний от датчика добавим в Mqtt Dashboard плитку типа “Прогресс” и установим ей пределы значений от 0 до 1024.
Примечания
При большем, чем у меня количестве комнатных растений, требующих контроля влажности почвы, использование таких датчиков может показаться расточительством. В этом случае будет лучше использовать модуль ESP8266, совметно с внешним чипом АЦП. Однако, в этом случае будет сложно обойтись без промышленно изготовленной платы (или хотя бы ЛУТом).
На самом деле, значения, поступающие от датчика, находятся в пределах от 200, при полном погружении в воду, до 700 на воздухе. Это нужно иметь в виду, принимая решение о поливе.
Стоило бы добавить к датчику возможность измерять температуру, однако об этом я подумал слишком поздно, когда уже упаковал всё в корпуса и воткнул в землю. Впрочем, сделать это легко, например, с помощью цифрового термометра 18B20 и одного резистора (поддержка интерфейса 1-wire уже есть в стандартной библиотеке).
Заключение
Спасибо за внимание, и не забывайте поливать комнатные цветы.