Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
В Битве Героев вы будете уничтожать монстров, отправляться на приключения со своим кланом. Вас множество локаций, монстров, снаряжения. Приведи своего героя к победе!

Битва Героев

Приключения, Ролевые, Мидкорные

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
9
PepperBlog
PepperBlog
12 дней назад
Сообщество любителей острого

Гидропонные башни⁠⁠

хотели бы себе на участок такую?

Гидропоника Острый перец Хабанеро Халапеньо Острый соус Садоводство Растения Видео Вертикальное видео
6
34
PepperBlog
PepperBlog
12 дней назад
Сообщество любителей острого

Убийца коров на моем столе⁠⁠

Убийца коров на моем столе Острый перец, Острый соус, Рассада, Огород на подоконнике, Гидропоника, Семена, Длиннопост
Убийца коров на моем столе Острый перец, Острый соус, Рассада, Огород на подоконнике, Гидропоника, Семена, Длиннопост
Убийца коров на моем столе Острый перец, Острый соус, Рассада, Огород на подоконнике, Гидропоника, Семена, Длиннопост
Убийца коров на моем столе Острый перец, Острый соус, Рассада, Огород на подоконнике, Гидропоника, Семена, Длиннопост

🐮 Cow Killer — ЗЛОЙ!

Предварительное ревью, почему предварительное? сложно судить по одному перцу, попробую еще будет точно. Ну а пока так.

По капризности:

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

По вкусу:

Чистый незамутненный эталонный вкус хиненса. И все. Никаких посторонних примесей. Свежесть и где-то там в отдалении легкая-легкая сладость, сочный, хрусткий

Аромат:
Мне аромат понравился больше чем у fatalii white, нет излишней парфюмерности и отлично раскрывается при нагреве, аромат правильный. Менее ароматный чем TS CARDI, но интенсивнее чем у хабанеро и фаталии, без травянистости и кислотности

Форм фактор:
Это наверное главный плюс, перцы мелкие максимум 4 см, кожица плотная, стенки толстые. Некоторые перцы темнеют до антоцианового, некоторые краснеют, некоторые оранжевеют, но все через зеленый, чашечка всегда красная

Есть предположение, что он очень лежкий и транспортабельный + порционность, 1 перец в 1 каску вполне можно съесть за 1 присест

👍 Острота:

1 000 000 SHU или около того, мне показалось около 700-800к SHU, возможно из-за того что острота не резкая, постепенно нагоняет, держится минут 5-7, на пот прошибает знатно, гастрономически годен без точных микродозировок 😁

Надеюсь будет хорош для моих будущих соусов

Семечки собираю, осенью на раздачу =)

Показать полностью 4
[моё] Острый перец Острый соус Рассада Огород на подоконнике Гидропоника Семена Длиннопост
15
62
PepperBlog
PepperBlog
12 дней назад
Сообщество любителей острого

Халапеньо на окне⁠⁠

Халапеньо на окне Острый перец, Перец, Урожай, Шкала Сковилла, Гидропоника, Рассада, Ягоды, Мобильная фотография, Длиннопост

наступает сезон, потихоньку собираем урожай

Халапеньо на окне Острый перец, Перец, Урожай, Шкала Сковилла, Гидропоника, Рассада, Ягоды, Мобильная фотография, Длиннопост

это свежак Trinidad scorpion CARDI, иногда желающим попробовать высылаю, но все объявления о подобном только в тгк

Халапеньо на окне Острый перец, Перец, Урожай, Шкала Сковилла, Гидропоника, Рассада, Ягоды, Мобильная фотография, Длиннопост

cow killer, не смотря на кажущуюся безобидность весьма острый под миллион shu, в скором времени пойдет на семена да в острый соус


Что там у вас новенького наросло, показывайте!
=)

Показать полностью 3
[моё] Острый перец Перец Урожай Шкала Сковилла Гидропоника Рассада Ягоды Мобильная фотография Длиннопост
13
55
PepperBlog
PepperBlog
28 дней назад
Сообщество любителей острого

Перец на окне из магазинного перца⁠⁠

Перец на окне из магазинного перца Выращивание, Садоводство, Растениеводство, Огород, Перец, Болгарский перец, Цветы, Гидропоника, Длиннопост

это для не терпеливых итог, было собрано две таких тарелки

Мне стало как-то интересно, а что будет, если посадить перец из семечек, извлеченных из обычного магазинного перца. Бытует мнение что то же самое не вырастет. Вот и проверим.

Мой экземпляр был куплен в Spar, перец был сожран, а семечка посажена.

Сорт Palermo — нидерландский сорт сладкого перца, который стал популярен благодаря своему насыщенному сладкому вкусу. Иногда его называют «итальянским сладким перцем», Брикс на уровне 8, очень сладкий.

Перец на окне из магазинного перца Выращивание, Садоводство, Растениеводство, Огород, Перец, Болгарский перец, Цветы, Гидропоника, Длиннопост

выращивал в гидропонике, на фото примерно 2 недели

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

Гидра была выбрана, потому что это проще, чем земля, земля, конечно, проще, но летом и в огороде.

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

Перец на окне из магазинного перца Выращивание, Садоводство, Растениеводство, Огород, Перец, Болгарский перец, Цветы, Гидропоника, Длиннопост

еще через 2-3 недели появились первые цветки

В этом возрасте я решил его немного «потренировать», так как куст обещал быть весьма высоким, растянул ветки в стороны и зафиксировал, такой способ позволит расти кусту вширь, а не вверх.

Но не тут-то было, энергия роста у куста просто бешенная, все мои усилия были сведены к нулю, ствол начал выворачивать и выкручивать все мои фиксаторы, поэтому с этой идеей было покончено, очень трудно контролировать.

Перец на окне из магазинного перца Выращивание, Садоводство, Растениеводство, Огород, Перец, Болгарский перец, Цветы, Гидропоника, Длиннопост

в марте начал снимать первые перцы

В марте начал снимать первый урожай, а посадил его в январе, итого 3 +- месяца непрерывного роста, много внимания ему уделять не мог, поэтому ему и не хватало света, и напала тля, пришлось обрабатывать и обрезать ветки, это очень сильно затормозило дальнейшее развитие куста.

Перец на окне из магазинного перца Выращивание, Садоводство, Растениеводство, Огород, Перец, Болгарский перец, Цветы, Гидропоника, Длиннопост

Но куст все равно пришел в себя и начал дальнейшее производство перца =)

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

В общем опыт интересный, думаю повторить еще с каким-нибудь вариантом понравившегося перца

Какой вывод:
1. Дома перец выращивать реально
2. Вырос чуть меньше по размеру, чем то что я покупал. Но это моя вина.
3. Сажать из магазинных перцев семечки можно, но результат все же не предсказуем, своеобразная рулетка.
4. Каких либо дефектов или отклонений не замечено, кроме нарушенной агротехники.
5. Но такие большие кусты лучше дома не выращивать, неудобно, есть более компактные сорта.

Показать полностью 5
[моё] Выращивание Садоводство Растениеводство Огород Перец Болгарский перец Цветы Гидропоника Длиннопост
13
6
ZamZea
1 месяц назад
Комнатные растения

Антуриум на гидропонике⁠⁠

Добрый день, уважаемые любители флоры.

Подскажите, есть ли кто-нибудь кто пересаживал свои цветы на гидропонику "домашнего пошиба"? То есть без использования специальных приспособлений, техники и прочих сложных систем затопления.

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

Хочу попробовать данную систему выращивания на всех своих цветах, но есть подозрения, что не переживут. А тот, что уже пересадила на "воду", как будто прекратил свой рост. Новые листики остановились в росте на уровне неразвернувшегося листа.

Антуриум Гидропоника Текст
2
20
feeld
feeld
2 месяца назад
Arduino & Pi
Серия Гидропоника

Действительно умная ферма. Часть 4⁠⁠

И так, настало время для последней перед паузой в какое то время между постами, частью моего рассказа. Расскажу немного про внешний вид, покажу систему в работе, затрону планы на будущее и раскрою некоторые будущие наработки и идеи, ну а так же опыт пользования)

А пока, можете посмотреть видео, в котором я добавил некоторые поясняющие субтитры. Автор не блогер, а только учится и весьма стеснителен в вопросе съемок, так что пока только субтитры, за что прошу простить)

Внешний вид, дизайн, интерфейсы взаимодействия c пользователем.

Внешний вид, я описывал в прошлых статьях, но никак не затронул сенсорный экран который в моем случае резистивный мультитач от Nextion, линейки Intelligence. Оверкилл конечно для фермы, но пока больше мне он никуда не нужен.

Интерфейс собственно там максимально простой, это показания с датчиков и управление реле. Страница системы с кнопкой перезагрузки и статусами подключений к интернету\роутеру и IP адрес веб морды. Мне нужен был базовый интерфейс, поэтому в нём пока нет ключевых функций таких как регуляция PH/EC, температуры, таймеров и так далее. Это совсем не основная задача была и я сейчас в процессе рисования нового интерфейса, который бы удволетворял всем требованиям.

1/3

Я использую Lunacy для проектирования интерфейсов. Скриншоты чисто рабочие, тк я в процессе рисования и изучения данной сферы деятельности.

Ничего замысловатого тоже нет. Мне предстоит продумать систему добавления и редактирования конкретных таймеров на дисплее, посадок и регуляции PH/EC. Последнее кстати весьма не сложно как я думаю с точки зрения UX.

Про второй интерфейс взаимодействия, я уже так же рассказывал в прошлых статьях, это WEB интерфейс и MQTT / Apple Home. Там тоже много ньюансов и проблем, но все в процессе, как только я закончу полноценный новый интерфейс, обязательно поделюсь.

Планы на будущее

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

Действительно умная ферма. Часть 4 Инженер, Arduino, Гаджеты, Электроника, Гидропоника, Растения, Салат, Изготовление, Промышленный дизайн, Самоделки, Своими руками, Мастерская, Пайка, Сборка, Видео, YouTube, Короткие видео, Длиннопост

Лапшичная с дорогими раменами на проводе

И выглядит это пока вот так:

Действительно умная ферма. Часть 4 Инженер, Arduino, Гаджеты, Электроника, Гидропоника, Растения, Салат, Изготовление, Промышленный дизайн, Самоделки, Своими руками, Мастерская, Пайка, Сборка, Видео, YouTube, Короткие видео, Длиннопост

Новая плата управления фермой

На ней я разместил 3 независимых блока питания, 3.3\5 и 12 вольт для питания датчиков, насосов и тд. Но это скорее всего не очень оптимизировано, тк мне думается можно сделать 2 блока, 3.3 вольта и 24 вольта, и через DC-DC на плате уже сформировать нужные мне напряжения для питания всего что необходимо, я в первый раз познаю исскуство проектирования плат, поэтому все может быть тяп ляп, но я в процессе)
На самой плате, уже размещен RTC модуль, коннекторы для экрана, ph/ec сенсоров с необходимыми делителями напряжения, разведена сеть 220V с реле. Возможно стоит предусмотреть возможность перекоммутации напряжений на реле, с 220V на любые другие напряжения которые мне необходимы. Пока не определился. Поэтому заказать плату мне довольно сложно, потому что проект в процессе и пока мне будут ехать платы версии 5.0, я обязательно что то модернизирую и сделаю и 5.1 и 5.2 а то и 6.0...

Новый дизайн, доп функции, расширение.

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

Действительно умная ферма. Часть 4 Инженер, Arduino, Гаджеты, Электроника, Гидропоника, Растения, Салат, Изготовление, Промышленный дизайн, Самоделки, Своими руками, Мастерская, Пайка, Сборка, Видео, YouTube, Короткие видео, Длиннопост

Блокинг концепт

Я понял, что в виде конечного устройства, бак, контейнер, блок с электроникой, все это с кучей кабелей и трубочек - это жуткий геморой для финального пользователя. Поэтому, новый дизайн имеет в себе одновременно и бак и баки для корректоров PH и для удобрений EC, никаких видимых трубочек и кабелей, самое главное, возможность использования различных систем гидропоники. Хотите DWC? пожалуйста. Хотите проточную? Тоже пожалуйста.Частичное затопление? Вас понял, сделано. Капельный полив?Это пока то, что лежит на поверхности и я точно смог бы это реализовать, но конечно впереди много времени проектирования не в блендере. Ну и конечно, аэропоника тут это основной метод, который я предпочитаю.

Дизайн я вижу как у техники SMEG или что то оттуда. Хочется навернуть стиля. Но прежде чем все это делать, я хочу отточить все технологии. Пока идеи и планы такие и я действительно не хочу забрасывать этот проект, так как мне самому очень интересно в этом разбираться.

Всё это, я хочу сделать уже в версиях 5.0 - 6.0 и там же где то, попробовать сунуться в OpenSource сообщество (но с простыми решенями, что бы каждый мог повторить)

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

Показать полностью 6
[моё] Инженер Arduino Гаджеты Электроника Гидропоника Растения Салат Изготовление Промышленный дизайн Самоделки Своими руками Мастерская Пайка Сборка Видео YouTube Короткие видео Длиннопост
10
47
feeld
feeld
2 месяца назад
Arduino & Pi
Серия Гидропоника

Действительно умная ферма. Часть 3.2. TDS/EC сенсор. Питание растений⁠⁠

Очередной пост, про мою ферму, да про сенсоры важные. Начну издалека и постараюсь простыми словами.


Зачем вообще мерить EC\TDS и температуру в питательном растворе?

Эти параметры показывают, насколько концентрирован наш раствор. А значит — хватает ли питания растениям или им через чур много и это не усвоится. Почему вообще на гидропонике все быстро растет? Потому что растениям не надо тратить силы и энергию на то, что бы искать все больше и больше ресурсов своей корневой системой и впитывать их из земли, а ещё кислород, его часто не хватает, именно поэтому часто советуют делать всякие подмесы в грунт для его "рыхлости", а в гидропонике мы выдаем все эти ресурсы сразу на блюдечке с голубой каемочкой и вот тут то главное правильно сервировать блюдо!

Действительно умная ферма. Часть 3.2. TDS/EC сенсор. Питание растений Arduino, Электроника, Гидропоника, Растения, Питание, Цветы, Инженер, Гаджеты, Растениеводство, Ботаника, Садоводство, Длиннопост

Нейроарт как вообще в гидропонике то все устроено.


Параметр EC.

EC = Electrical Conductivity (Электрическая проводимость)

→ Показывает, насколько хорошо раствор проводит ток. Измеряется в миллисименсах на сантиметр (мСм/см).
Чем больше солей — тем выше проводимость.

Например:

  • Чистая вода: 0.0–0.05 мСм/см

  • Рассада салатов: 0.8–1.2 мСм/см

  • Клубника: 1.6–2.2 мСм/см

  • Помидоры: 2.0–3.5 мСм/см

Более того, на разных стадиях роста, растениям как правило нужна ещё и разная концентрация этих ваших удобрений. Вообщем то как и с любым организмом, в разные этапы жизни - жрут по разному, поэтому этот параметр важен и нужен.


EC - это стандарт индустрии, когда вы видите EC 1.0 или EC 1000, важно обратить на какое расстояние проводится измерение. Измеряют и в миллиметрах и в сантиметрах и в метрах. Это кому как удобнее и простыми арифметическими действиями переводится в нужное вам значение.


Параметр TDS.

TDS = Total Dissolved Solids
→ Количество растворённых солей в ppm (мг/л). Это лишь приблизительный расчёт из EC:

TDS ≈ EC × коэффициент

В гидропонике чаще всего:

  • 500 шкала — используется чаще всего (NaCl - шкала) в основном в США, Европе, Австралии, самая популярная.

  • 700 шкала — другая, менее распространённая (KCl - шкала) в основном в Азиатских регионах, реже в Европе.

В основном используется NaCl шкала, но это нас и приводит к выводу, что в гидропонике эти шкалы нам в принципе не нужны, что то куда то переводить ещё, неудобно. Поэтому все используют одну стандартизированную единицу - EC.

Важно понимать, что оба параметра не показывают чего то конкретного. Они показывают сумму всех солей и удобрений в воде! А тоесть по этому значению мы не можем узнать, что конкретно в воде и в каком количестве. Это гораздо более сложная процедура.


Калибровка

Чем калибруются EC или TDS метры? Да все теми же буферными растворами. Для TDS это как правило 800 ppm, для EC метров - 1413 мк/см и другие (смотри на пределы измерений EC метра). Продаются так же как и для PH метров в порошках или готовом виде.


Как влияет температура?

Температура в этом аспекте, крайне важна. Хотя про неё много кто и забывает. Нет, конечно она не губительна в разумных пределах, но весьма сильно влияет на процесс выращивания растений. Мы не говорим про отрицательные температуры или около нулевые, а так же не берем в расчет температуры в пустыне. Среднестатистические 15-30 градусов для примера нам хватит.

Температура раствора — важнейший фактор в гидропонике. Если раствор слишком холодный или слишком тёплый — корни начинают "забастовку": они просто перестают нормально усваивать питательные вещества. Это как если бы человек ел лёд вместо тёплого супа — вроде есть, но толку мало.

Оптимальная температура для корней большинства растений — 18–22 °C. В этом диапазоне:

  • Кислород хорошо растворён в воде

  • Клетки корней активны

  • Удобрения усваиваются эффективно

Если температура падает ниже 16 °C — корни замедляются, питание поступает плохо. А при 25–28 °C — начинаются проблемы: раствор теряет кислород, возможен корневой гниль, а соли могут вызывать ожоги. И вот тут есть главное преимущество как по мне аэропоники. Раствор разбиваясь на воздушно питательную смесь, вполне себе охлаждает и корни и при этом растения прекрасно усваивают кислород, поэтому фактор насыщения кислородом самого раствора мы можем упустить в моём случае.

Что делать при перегреве раствора? два способа. Снижать концентрацию или понижать его температуру чиллерами или другими способами. Или просто разбавить. Самый простой способ конечно разбавить водой.


Моя система

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

Что стоит в моей системе?

В моей системе в данный момент 2 сенсора TDS. Пока не отключал старый, поэтому расскажу и про него.

Действительно умная ферма. Часть 3.2. TDS/EC сенсор. Питание растений Arduino, Электроника, Гидропоника, Растения, Питание, Цветы, Инженер, Гаджеты, Растениеводство, Ботаника, Садоводство, Длиннопост

Вот такой TDS метр у меня стоит, но более не используется для измерений EC(на это значение опирается вся система) а просто выводит дублирующее показание в PPM, новому сенсору.

С ним всё ок и его даже реально откалибровать. Только один ньюанс. Для гидропоники он не подходит чисто технически. У него потолок измерений 1000 PPM (около 1.0 EC) и даже его он показывает с трудом. За то идеален в обратную сторону, там где надо мерить чистоту. Вот тут у него реально нет аналогов за его стоимость. Он конечно может и 5 EC вам показать, только это будут ненадежные данные, тк его невозможно откалибровать, свыше 1 EC у него уже нелинейная интерполяция, проще говоря он становится генератором рандомных чисел. В дальнейшем я его вытащу и сделаю из него прибор для умного проточного фильтра для питьевой воды. Что бы понимать когда менять кассеты и тд.
А поскольку он не подходил то я приобрел вот такой вот EC метр.

Действительно умная ферма. Часть 3.2. TDS/EC сенсор. Питание растений Arduino, Электроника, Гидропоника, Растения, Питание, Цветы, Инженер, Гаджеты, Растениеводство, Ботаника, Садоводство, Длиннопост

Оверкилл для этой системы. Но работает отлично.

у него уже и питание "взрослое" (от 12 до 24 вольт) и калибровки все на борту имеются и измеряет он по правильному, EC а не PPM. PPM это в свою очередь производная от EC и считается программно. и даже крепление на DIN рейку на корпусе есть, подключать же надо строго через делитель напряжения к пину ESP, что впрочем тоже не сложно, подбирается он индивидуально под ваш контроллер.

Суть измерений ровна такая же как и в контроллерах PH. Мы считываем выдаваемое напряжение и приравниваем его к значениям EC. Подключается так же в любой аналоговый пин способный на АЦП.

Суть кода 1в1 с PH, только не нужна всякая калибровка, совсем сердитые усреднения и тд. Все сильно проще и ограничивается всего двумя функциями:

float readECVoltage_new() {

int newVal = analogRead(EC_PIN);

// Обновление кольцевого буфера

ecSum -= ecBuffer[ecIndex];

ecBuffer[ecIndex] = newVal;

ecSum += newVal;

ecIndex = (ecIndex + 1) % NUM_READ_EC; 

if (ecIndex == 0) ecFilled = true;

// Вычисление среднего значения как float

int validCount = ecFilled ? NUM_READ_EC : ecIndex;

if (validCount == 0) validCount = 1; // защита от деления на 0

float average = static_cast<float>(ecSum) / validCount;


// Перевод в напряжение

float voltage = (average / ADC_RESOLUTION) * ADC_VREF;

return voltage;

}


float readEC_new() {

float voltage = readECVoltage_new();

float realVoltage = voltage * DIVIDER_RATIO;

float ecValue = (realVoltage / MAX_SENSOR_VOLTAGE) * EC_RANGE;


// EMA фильтрация

if (filteredEC == 0.0f) filteredEC = ecValue;

filteredEC = EC_SMOOTHING * ecValue + (1.0f - EC_SMOOTHING) * filteredEC;


// Перевод в mS/cm и округление до 0.1

float ecMilli = filteredEC / 1000.0f;

ecMilli = roundf(ecMilli * 10.0f) / 10.0f;


logf(LOG_DEBUG, "[EC_SENSOR] EC Voltage: %.3f V (real %.3f V) | EC: %.1f mS/cm",

voltage, realVoltage, ecMilli);


return ecMilli;

}

eadECVoltage_new() — измерение напряжения:

  1. Считывает аналоговое значение с EC-датчика (analogRead) → от 0 до 4095

  2. Обновляет кольцевой буфер последних измерений для сглаживания

  3. Вычисляет среднее значение по буферу

  4. Переводит среднее значение в напряжение (вольты) по формуле:
    voltage = (среднее / ADC_RESOLUTION) × VREF

  5. Возвращает полученное напряжение — это ещё не EC, а просто "что пришло с датчика"

readEC_new() — шаги:

  1. Вызывает readECVoltage_new() → получает среднее напряжение

  2. Компенсирует делитель напряжения, чтобы получить реальное напряжение на датчике

  3. Переводит напряжение в значение EC по диапазону датчика

  4. Сглаживает значение EC с помощью EMA-фильтра (плавное обновление)

  5. Округляет EC до десятых (0.1) и переводит из μS в mS/cm

  6. Логирует результат (напряжение и EC) для отладки

  7. Возвращает EC (в мСм/см) — дальше это значение:

    • передаётся в WebSocket (SENSOR_UPDATE)

    • записывается в лог (tds_log.csv)

    • отображается в интерфейсе

Компенсация температуры для TDS метра.

В моем модуле, уже присутствует температурная компенсация,а в OEM китайском, такой функции нет, поэтому финальное значение надо компенсировать ещё и температурой.

TDS Компенсированный = TDS сырой/ (1 + α × (T - T₀))

формула выглядит вот так. И является довольно простой:

Где:

  • TDS сырой — необработанное (сырое) значение TDS

  • T — текущая температура раствора (в °C)

  • T₀ — опорная температура (обычно 25°C)

  • α — температурный коэффициент для солевого раствора (0.02 — то есть +2% на каждый градус)

Например:

  • Температура: 30°C

  • Сырой PPM = 1000 ppm

TDS Компенсированный = 1000 / (1 + 0.02 × (30 - 25))

= 1000 / (1 + 0.10)

= 1000 / 1.10

≈ 909 ppm

То есть фактически в растворе меньше солей, чем показывает прибор — из-за нагрева. Эта же формула подходит и к EC метрам без встроенной температурной компенсации.

Ну и соответственно, как вы понимаете уже, вместо текущей температуры, в ESP/Arduino и любых других системах, можно просто брать температуру с датчика DS18B20 например и подставлять напрямую в формулу и получать корректное значение EC/TDS.


В завершение. Естественно, вы можете вообще не парится, и заваривать раствор единожды с помощью ручного измерителя TDS\EC и будете правы. Это блажь и излишек. Но мне нравится такого рода автоматизации и упрощение своей жизни.

Спасибо за внимание!

Показать полностью 3
[моё] Arduino Электроника Гидропоника Растения Питание Цветы Инженер Гаджеты Растениеводство Ботаника Садоводство Длиннопост
2
39
feeld
feeld
2 месяца назад
Arduino & Pi
Серия Гидропоника

Действительно умная гидропоника. Часть 3.1 Датчики и сенсоры. PH сенсор⁠⁠

По просьбам трудящихся, я постараюсь сделать это в виде некоего обучающего рассказа что ли. Но конечно не step by step инструкции. Краткие выдержки кода и описание алгоритмов и чего куда вообще совать что бы эти ваши показания получать. Сегодня поговорим о PH сенсорах и моем опыте. Я подразобью на более короткие посты для удобства чтения.

PH Sensor

Я пробовал 2 сенсора PH. от DF-Robot и дешевый из синего маркетплейса.

1/2

Вот такие сенсоры

Ссылки на все я приведу в конце поста.

Сейчас я использую pH-датчик от DFRobot — он отлично подходит для непрерывного мониторинга 24/7. Показания стабильны, со временем не «плывут» (дрейф отсутствует — проверено на практике), а калибровка реализована удобно и просто. Чуть позже покажу, как она устроена на примерах кода.

А вот с дешёвым noname-датчиком всё гораздо веселее. На плате два подстроечных резистора: один, судя по всему, отвечает за калибровку нулевой точки (pH 7.0), второй — за чувствительность. Документации — минимум. Настроить этот модуль так, чтобы он давал стабильные показания, — почти как пройти Super Meat Boy на 100%… и не сломать ничего от сгоревшей пятой точки..

Действительно умная гидропоника. Часть 3.1 Датчики и сенсоры. PH сенсор Инженер, Arduino, Электроника, Гаджеты, Тестирование, pH-фактор, Гидропоника, Аэропоника, Растения, Длиннопост

Небольшая сравнительная таблица, информации мало для сравнения.

Стоит ли покупать дешёвый pH-сенсор? Нет и ещё раз нет. Даже если ваш код написан идеально, это не спасёт от нестабильной работы самого датчика. Через день-два показания могут начать «плавать» — pH то завышается, то занижается на 3–4 единицы без видимых причин. Сенсор просто начинает вести себя непредсказуемо.

И если у вас на такие данные завязана автоматика (например, дозаторы pH- или pH+), последствия будут неприятными: система начнёт вносить корректоры на основе ложных показаний. В итоге — испорченный раствор и потеря времени, так ещё и потраченные впустую корректоры PH.

Сенсоры от DFRobot мне показались гораздо стабильнее и надёжнее. Да, они стоят дороже, но по опыту — это оправданно. Поэтому далее всё что написано, относится к конкретно H-101 сенсору.

Подключение РH.

Подключение pH-сенсора — дело довольно простое. Информация по распиновке обычно указана прямо на сайте производителя или в описании товара (в том числе на AliExpress). Всё, что нужно — подключить выход сенсора к аналоговому входу вашей платы: будь то ESP32, Arduino или любая другая платформа.

Этот конкретный сенсор, судя по данным и практике, выдаёт сигнал до 3.3 В, так что его можно безопасно подключать напрямую к пинам ESP32 — без делителя напряжения. Я так и делаю, и всё работает стабильно. Делитель нужен, только если сенсор выдаёт до 5 В (что бывает у некоторых моделей), а ваша плата работает от 3.3 В. В случае с классической Arduino делитель не нужен, так как она спокойно воспринимает до 5 В на аналоговых входах.

Действительно умная гидропоника. Часть 3.1 Датчики и сенсоры. PH сенсор Инженер, Arduino, Электроника, Гаджеты, Тестирование, pH-фактор, Гидропоника, Аэропоника, Растения, Длиннопост

Подключение.

Калибровка PH.

Калибровка pH-сенсоров всегда выполняется с помощью буферных растворов — это жидкости с точно заданным значением pH. Калибровка может быть двух- или трёхточечной: чем больше точек, тем точнее можно подогнать датчик под реальный диапазон.

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

В моём случае я использую двухточечную калибровку — по значениям pH 4.0 и pH 7.0, чего вполне достаточно для контроля большинства питательных растворов.

Действительно умная гидропоника. Часть 3.1 Датчики и сенсоры. PH сенсор Инженер, Arduino, Электроника, Гаджеты, Тестирование, pH-фактор, Гидропоника, Аэропоника, Растения, Длиннопост

Буферные растворы для калибровки PH.

Сама калибровка проходит в два последовательных этапа. Сначала сенсор промывается в дистиллированной воде и аккуратно просушивается (я использую салфетку, не протирая стекло — просто промакиваю). После этого сенсор помещается в буферный раствор с pH 4.0. Ждём, пока значения напряжения стабилизируются, и нажимаем кнопку калибровки по pH 4.0 — первый этап завершён.

Далее — всё то же самое, но уже с раствором pH 7.0. После второго нажатия кнопки калибровки сенсор готов к работе.

А вот и фрагмент кода, который у меня отвечает за калибровку pH-сенсора. Он используется при нажатии кнопки калибровки (по pH 4.0 или 7.0):

void setCalPH(float& calValue, int eepromAddr, bool& flag, const char* label) {

bool stable = false;

float stddev = 0.0;

float voltage = readStablePHVoltage(stable, stddev);


String logMsg = String("[Калибровка] ") + label + ": " + String(voltage, 2) + " мВ, отклонение: " + String(stddev, 2);

logMsg += stable ? " — стабильно" : " — нестабильно";

logToWeb(logMsg);

logMessage(stable ? LOG_INFO : LOG_WARN, logMsg);


if (!stable) {

//logToWeb(String("[Калибровка] Напряжение нестабильно при ") + label + ". Попробуйте снова.");

logMessage(LOG_WARN, "[Калибровка] Калибровка прервана: нестабильное напряжение");

return;

}


calValue = voltage;

flag = true;

EEPROM.put(eepromAddr, calValue);

EEPROM.commit();


String confirm = String("[Калибровка] ") + label + " установлена: " + String(voltage, 2) + " мВ";

logToWeb(confirm);

logf(LOG_INFO, "[Калибровка] %s успешно установлена: %.2f мВ", label, voltage);

}

Что делает эта функция:

  1. Считывает напряжение с pH-сенсора и проверяет, стабилизировалось ли оно (внутри readStablePHVoltage).

  2. Если сигнал нестабилен, калибровка прерывается и выводится предупреждение в лог.

  3. Если всё в порядке, сохраняет измеренное значение в EEPROM, устанавливает флаг flag = true, и выводит подтверждение об успешной калибровке.

  4. Используется отдельно для pH 4.0 и pH 7.0, передавая соответствующую метку (label), адрес в EEPROM и переменную для сохранения значения.

  5. Функции logToWeb/logF/logMessage - это обертки для логирования, вместо них вы можете использовать простые Serial.println и тд.


    Функция считывания напряжения для калибровки, выглядит вот так:

float readStablePHVoltage(bool& stable, float& stddevOut) {

const int numSamples = 20;

float values[numSamples];

float sum = 0.0f;

float minV = VREF, maxV = 0.0f;

String rawValues = "[PH] Измерения мВ: ";

for (int i = 0; i < numSamples; i++) {

int raw = analogRead(PH_PIN);

float v = (raw / (float)ADC_MAX) * VREF;

values[i] = v;

sum += v;

minV = min(minV, v);

maxV = max(maxV, v);

rawValues += String(v, 2) + " ";

delay(10);

}

float avg = sum / numSamples;

float variance = 0.0f;

for (int i = 0; i < numSamples; i++) {

// выбрасываем выбросы >500 мВ

if (abs(values[i] - avg) > 500.0f) values[i] = avg;

variance += pow(values[i] - avg, 2);

}

float stddev = sqrt(variance / numSamples);

stddevOut = stddev;

stable = (stddev < 30.0f);

if (!stable) {

logf(LOG_WARN, "⚠️ pH-сенсор нестабилен: σ=%.2f mВ", stddev);

}

// Логи

logMessage(LOG_DEBUG, rawValues);

logf(LOG_DEBUG, "[PH] Среднее: %.2f мВ, Мин: %.2f, Макс: %.2f", avg, minV, maxV);

logf(LOG_DEBUG, "[PH] σ=%.2f мВ → %s", stddev, stable ? "Стабильно" : "Нестабильно");

return avg;

}

Функция readStablePHVoltage используется для получения надёжного и стабильного значения напряжения с pH-сенсора перед калибровкой.

Сначала она делает 20 аналоговых замеров с небольшими паузами между ними. Значения переводятся в милливольты и сохраняются в массив.

После этого вычисляется среднее напряжение, а слишком сильные выбросы (если разница с средним превышает 500 мВ) игнорируются — они заменяются на усреднённое значение.

Далее считается стандартное отклонение (σ) — если оно меньше 30 мВ, сигнал считается стабильным и пригодным для калибровки. В противном случае функция сообщает в лог о нестабильности и отменяет процесс.

Кроме самого результата, в лог отправляется подробная информация: все замеры, среднее, минимум, максимум и разброс значений. Это помогает при отладке и повышает надёжность всей системы.

Измерения PH

При измерениях любых параметров жидкости необходимо учитывать её температуру, так как это напрямую влияет на точность показаний. Особенно это критично для pH — с повышением температуры активность ионов водорода возрастает, и даже идеально откалиброванный сенсор начнёт показывать отклонения. В модуле который использую я, по заявлениям уже учитывается этот фактор. Поэтому в моих функциях нет реализации температурной компенсации.

float readPH() {

static unsigned long lastLog = 0;

float voltage = readPHVoltage();

float phValue = calculatePH(voltage);

phValue = roundf(phValue * 10.0f) / 10.0f;

// Логируем не чаще, чем раз в 10 секунд

unsigned long now = millis();

if (now - lastLog > 10000) {

logf(LOG_DEBUG, "[PH] Напряжение: %.2f mВ, pH: %.2f",

voltage, phValue);

lastLog = now;

}


return phValue;

}

Собственно сама функция чтения PH. В ней мы уже обращаемся к другой функции считывания напряжения. Она гораздо больше фильтрует значения напряжения, и не мешает при этом калибровке. Именно поэтому их тут две.

float readPHVoltage() {

// 1) Усреднение по N замерам

const int numMeasurements = 30;

float sum = 0.0f;

for (int i = 0; i < numMeasurements; i++) {

int raw = analogRead(PH_PIN);

float v = (raw / (float)ADC_MAX) * VREF;

sum += v;

delay(5);

}

float avg = sum / numMeasurements;

lastRawVoltage = avg;

// 2) Медианный фильтр

medianBuf[medianIdx++] = avg;

if (medianIdx >= MEDIAN_SAMPLES) { medianIdx = 0; medianFull = true; }

int cntMed = medianFull ? MEDIAN_SAMPLES : medianIdx;

// копируем в tmp для сортировки

static float tmpMed[MEDIAN_SAMPLES];

memcpy(tmpMed, medianBuf, cntMed * sizeof(float));

// простой пузырьковый сорт для маленького массива

for (int i = 0; i < cntMed - 1; i++)

for (int j = i + 1; j < cntMed; j++)

if (tmpMed[j] < tmpMed[i]) {

float t = tmpMed[i];

tmpMed[i] = tmpMed[j];

tmpMed[j] = t;

}

float med = tmpMed[cntMed/2];

// 3) Скользящее среднее

movavgBuf[movavgIdx++] = med;

if (movavgIdx >= MOVAVG_SAMPLES) { movavgIdx = 0; movavgFull = true; }

int cntMov = movavgFull ? MOVAVG_SAMPLES : movavgIdx;

float sumMov = 0.0f;

for (int i = 0; i < cntMov; i++) sumMov += movavgBuf[i];

float mavg = sumMov / cntMov;

// 4) IIR‑фильтр

if (isnan(iirVoltage)) {

iirVoltage = mavg;

} else {

iirVoltage = iirVoltage * (1 - IIR_ALPHA) + mavg * IIR_ALPHA;

}

float filt = iirVoltage;

// Логи для отладки

logf(LOG_DEBUG,

"[PH] raw:%.2f mV → med:%.2f → movavg:%.2f → filt:%.2f",

avg, med, mavg, filt);

return filt;

}

Для получения чистого и стабильного сигнала с pH-сенсора я использую многоступенчатую фильтрацию.

Всё начинается с простого усреднения — берутся 30 замеров подряд, и по ним считается среднее напряжение.

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

И в конце — финальный этап: IIR-фильтр (экспоненциальное сглаживание), который делает сигнал максимально плавным, но при этом достаточно быстрым в реакции на изменения. Такой подход позволяет получать надёжные и устойчивые данные, на которые уже можно опираться при расчёте текущего уровня pH или при управлении системой.

Заключение.

Таким образом я измеряю PH своего раствора.
Вот обещанные ссылки на компоненты из этого поста:

https://aliexpress.ru/item/1005001317266554.html?spm=a2g2w.o...

https://aliexpress.ru/item/1005006366896348.html?sku_id=1200...

https://www.ozon.ru/product/komplekt-kalibrovochnyh-rastvoro...

Дальше останется только привязать это к вашим интерфейсам взаимодействия с пользователем и в целом готово. Не претендую на какую то 100% правильность, вы можете сделать это иначе, но сейчас у меня работает отлично всё, напомню, что я в первую очередь 3д художник, который открыл для себя мир программирования и контроллеров)

Спасибо за внимание! Надеюсь скоро выпущу про TDS/EC сенсор, температурный датчик.

Показать полностью 5
[моё] Инженер Arduino Электроника Гаджеты Тестирование pH-фактор Гидропоника Аэропоника Растения Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии