Измеритель влажности почвы, влажности воздуха и температуры воздуха на ESP32 | mysku

Измеритель влажности почвы, влажности воздуха и температуры воздуха на ESP32

Перейти в магазин

Привет муськовчане. Пару лет назад я стал огородником. С возрастом многих к земле тянет, естественный процесс.
Наверное, это закономерно в нашу цифровую эпоху, захотелось мне огород автоматизировать. Видимо, самый первый процесс, приходящий на ум не только мне, который хочется автоматизировать в огороде, это полив. А поливать хочется не абы как, а столько сколько надо. Если дождь, у системы полива выходной, если сухо поливаем, да стараемся соблюдать рекомендуемые влажности почв для разных культур. Поэтому я озадачился вопросом, как измерить влажность. На эти дела существуют ГОСТ-ы, но мерить по их рекомендациям, в наше время, мягко говоря мало кто согласится. Да и не онлайн.

Распаковки не будет. Сам не смотрю и другим показывать не буду. Кто не видел эти желтые пакеты из Китая? Внутри в антистатическом запаянном пакете лежал товар. Как ни странно при доставке, ни чего не сломали, и это радует. Доехало быстро, за 10 дней, в принципе для почты Гонконга это скорее правило, чем исключение. Вот трек RU159252885HK.

Для меня сей приборчик, во первых, реализация того что и так хотел сделать, во вторых он еще и на ESP32 сделан, что тоже приятно и есть чего пощупать. До этого, примерно год назад купил измеритель влажности и минерализации почвы, освещенности и температуры от Xiaomi, тут был обзор mysku.ru/blog/china-stores/43295.html, оказалось у моего старого Samsung-а Bluetooth не той системы, а может быть и нет. Потому что, спустя какое-то время я купил-таки себе новый телефон и той самой фирмы, но чуда не произошло, прибор один раз даже нашелся через синий зуб, а потом перестал. Я поднял правую руку, опустил ее и подумал, — И фиг с ним.

Теперь к влажности почвы. Измеряли ее «при царе горохе» раньше просто, брали образец, взвешивали, выпаривали влагу и опять взвешивали. Отношение разницы масс к первоначальной массе и есть влажность.

Кроме этого метода измерения как в ГОСТ, путем взвешивания образцов и их выпаривания и повторного взвешивания, есть косвенные методы измерения. Например проводимость почвы как то коррелирует с ее влажностью, но кроме того зависит от состава почвы, кроме того возникают проблемы с сохранностью электродов.

А есть способ измеряющий количество воды через диэлектрическую проницаемость. Т.е. в почву помещается конденсатор, у которого диэлектриком является она (почва), и его емкость линейно зависит от диэлектрической проницаемости диэлектрика (почвы). И скажем, если заглянуть в справочники, то выяснится, что проницаемость воды сильно отличается от основных материалов, из которых состоит почва. А это органика, характерная проницаемость 2-3. Неорганика, характерная проницаемость 4-16. А у воды диэлектрическая проницаемость 81. Это означает, что она может вносить значительно более существенный вклад. И соответственно, по идее, точность измерения этим способом количества воды в почве без дополнительной настройки будет выше, чем предыдущим.

Теперь собственно сам прибор.


Состоит из единой платы, на которой размещено:
Мозг в виде ESP32. Это модуль который содержит и мозги, и память программ и имеет ножки ввода/вывода как цифровые, так и аналоговые, три uart порта и главное это беспроводные коммуникации wi-fi и bluetooth.
Микросхема CP2104 конвертор uart – usb.
Микросхема tp5410 контроллер зарядки и одновременно step-up преобразователь, что бы напряжение литиевого аккумулятора поднять до требуемых 5В питания.
Микросхема tl555c – таймер, на котором сделан генератор измерителя влажности почвы.
Микросхема DHT11 – измеритель влажности и температуры воздуха.
Измерительный конденсатор, выполненный на печатной плате.
Две кнопки Boot для программирования и EN как ни странно это сброс.
Отсек для батареи 18650
Разъем USB
И все GPIO наружу ;-)

Еще фото


Первым делом подаем питание через usb разъем. Берем телефон и ищем что-то по wi-fi в надежде найти новую точку доступа и вот вам большой китайский фиг. Но понимания, что мы в начале квеста еще нет, еще крутится мысль, — Мы ее сейчас побырому, решим.
Начал я с просмотра всех (или почти все) товаров с этим изделием, вернее комментариев к товарам. И в одном отзыве увидел комментарий, что девайс не прошит, а скетча в сети нет.
Далее я пошел сразу двумя путями. Написал продавцу, — Как так, где скетч? И пока тот должен был ответить, побрел по просторам сети в поисках ответов. Как искал, писать не буду. Что нашел?
Дорогу к полурабочему скетчу указал продавец. Как подключить к среде программирования arduino ESP32, нашел в сети. Для того что бы среда Arduino начала понимать ESP32 нужно просто положить распакованный архив в каталог. Для windows.

X:\Users\Xuser\Documents\Arduino\hardware\espressif
X – буква диска где хранятся «Мои документы», у меня они на D, по умолчанию они на диске C.
Xuser – имя вашего пользователя в системе.
Архив тут github.com/espressif/arduino-esp32
Кроме того у меня не хватало библиотеки SimpleDHT11, которая используется в программе.
Это брать тут github.com/winlinvip/SimpleDHT
Ну и ссылка по наводке продавца на исходник программы.
github.com/LilyGO/higrowopen
И она не заработала.

Что бы заработало надо, программисты молчать ))) Хотя пишите. Что я исправил. С двумя слэшами то что было. Без то что стало.
Тип данных переменных точки доступа и пароля


//String ssid = preferences.getString("ssid");
//String pwd = preferences.getString("password");
const char* ssid     = "ssid";
const char* password = "password";

Поверка, что значения имени и пароля не пусты.


//if (ssid.length() > 0 && pwd.length() > 0) {
if (ssid != 0 && password != 0) {

Инициализация wi-fi


//WiFi.begin(ssid.c_str(), pwd.c_str());
WiFi.begin(ssid, password);

Получение данных из DHT11


//byte data[40] = {0};
//dht11.read(2, &temperature, &humidity, data);
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
return;
}

Читаем АЦП для с той ноги.


//String water = String(analogRead(4));
String water = String(analogRead(32));

Смотрим, что то заработало.

Это FF по своей инициативе красиво показывает, на самом деле все вот так, как ниже на смортфоне )))

Схема датчика влажности почвы вот такая.

Генератор на 555 таймере. Частота 500 кГц, делитель на конденсаторе C5 (печатный) и резисторе R1. Далее детектор на диоде и к АЦП. Номиналы емкостей не знаю, резисторов написал.

Лабораторная работа.

На воздухе прибор намеряет около 3000 АЦП-шных попугаев. Циферка в строчке water. Её значение меняется от 3000 до 3070 от настроения.

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

И начинаем мерить.
Песок.


Торф.


Земля.


Вода.

Разница существенная, это радует.

Далее, ради интереса взвесим стаканчик с водой и землей.

149 и 111 грамм, при примерно одинаковом объеме.

А теперь будем добавлять воду в землю, тщательно перемешивать. Насыпал в полиэтиленовый пакет и перемешал и высыпал обратно.
Количество воды на 111 грамм земли. Показания АЦП и посчитанная влажность.
8 грамм воды. -2803 6,7%
16 грамм воды. -2690 12,6%
24 грамм воды. -2630 17,8%
50 грамм воды. -1740 31%

Итоги?
Мне штуковина понравилась.
Не смотря на отсутствие рабочего софта. Зато какой простор для творчества. )))
Зато теперь я хочу эту штуку подключить, например к narodmon.ru.
Добавить фоторезистор, и измерять еще и освещение. Люксметр есть, откалибровать смогу.

И даже не смотря на то что кнопка EN отвалилась (!) хотя я ее нажимал от силы раз 5, мне этот квест пришелся по душе.

ЗЫ сейчас проверим ))) Набрал снега и воткнул в него. Показывает 2980-3000. Твердая вода совсем ни как жидкая. На этом все. )))

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

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

Наверх