Аквастраж / База знаний / Контроллер своими руками

Контроллер для УЗВ своими руками на Arduino и ESP32

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

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

Arduino или ESP32: в чем разница для этой задачи

Оба варианта это платы для любительской электроники с открытой средой разработки, но для контроллера узв они закрывают разные задачи.

ПараметрArduino (Uno, Mega, Nano)ESP32
Связь с сетьюНет своей, нужен отдельный модульWi-Fi и Bluetooth встроены
Число входов и выходовБольше на платах вроде MegaМеньше, часть пинов занята под Wi-Fi
Потребление энергииНизкое в простом режимеВыше из-за постоянной радиосвязи
Типичная роль в системеСъем датчиков и управление реле на местеТо же самое плюс отправка данных на сервер или в приложение

На практике многие самодельные схемы используют Arduino как рабочую лошадку для снятия сигнала с датчиков и управления реле, а ESP32 или отдельный GSM/Wi-Fi модуль поверх нее уже для передачи данных наружу, потому что закладывать беспроводную связь в саму плату управления не всегда оправдано с точки зрения энергопотребления и надежности контактов.

Какие датчики реально снять своими руками

  • Температура. Цифровой датчик температуры на один провод (тип DS18B20 и аналоги) один из самых надежных и дешевых узлов самодельной схемы, погрешность обычно укладывается в десятые доли градуса, что для контроля воды более чем достаточно.
  • Уровень воды. Поплавковые концевики, ультразвуковые дальномеры и схемы на электродах реально собрать самому, но у каждой схемы свой набор отказов: электроды со временем электролизуются и обрастают, поплавок может залипнуть на направляющей. Подробный разбор четырех рабочих схем и того, что в них ломается раньше самого датчика, есть в статье датчик уровня воды своими руками.
  • pH. Готовый аналоговый pH-модуль со стеклянным электродом подключается к аналоговому входу платы, но требует калибровки по буферным растворам не реже раза в несколько недель, иначе показание постепенно съезжает и самодельный контроллер начинает принимать решения по неверным данным.
  • Ток и напряжение нагрузки. Токовые клещи или датчик тока на плате позволяют косвенно понять, работает ли насос или компрессор, по тому, потребляет ли он ток, это дешевле и надежнее, чем пытаться напрямую мерить сам факт движения воды или воздуха.

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

Логика автоматизации: с чего начать

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

  1. Чтение и вывод показаний. Первый шаг: снять сигнал с одного датчика и вывести число на экран или в последовательный порт, убедиться, что показание стабильно и повторяемо.
  2. Пороговая тревога без управления. Второй шаг: завести условие "если значение вышло за диапазон, зажечь светодиод или подать звук", еще без автоматического управления оборудованием, чтобы проверить логику на практике без риска для рыбы.
  3. Управление одним реле по одному условию. Третий шаг: например включение подсветки по времени суток, самая безопасная задача для первой автоматизации, потому что ошибка в ней не угрожает рыбе напрямую.
  4. Управление критичным оборудованием только с ручным override. Автоматическое отключение или переключение насоса и компрессора по показанию датчика стоит вводить только тогда, когда есть понятный и быстрый способ вручную отменить решение автоматики, если оно окажется ошибочным.
  5. Логирование и уведомления наружу. Финальный шаг: отправка показаний и тревог за пределы локальной сети, чтобы узнавать о проблеме не только стоя рядом с самим контроллером.

Питание и связь: где самоделка обычно проигрывает готовому прибору

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

Если контроллер запитан от той же розетки, за которой должен следить, при пропадании света он гаснет вместе с насосом и компрессором и не может ни зафиксировать аварию, ни тем более сообщить о ней. Резервное питание для самого контроллера, отдельное от основной нагрузки, обязательное условие, а не опция для галочки. Как устроена проводка и защита у пруда в целом, откуда берутся такие обесточки и что стоит проверить в щитке заранее, разобрано в статье электрика у пруда.

Второе слабое место: канал связи. Контроллер на ESP32, который отправляет тревогу через домашний Wi-Fi роутер, зависит от того же самого источника питания, что и остальной объект: роутер обесточился вместе со светом, и сообщение просто некуда уйти. Независимый канал связи, не завязанный на локальную сеть объекта (например GSM модуль со своей сим-картой или готовый прибор с собственным модулем связи), закрывает именно этот сценарий, самый частый по факту среди реальных аварий на фермах.

Типичные ошибки самодельного контроллера

  • Нет watchdog-таймера. Если программа зависает (а на самодельной прошивке это происходит чаще, чем хочется признавать), без аппаратного watchdog контроллер просто замирает и перестает и снимать показания, и слать тревоги, при этом внешне выглядит так, будто все в порядке.
  • Один источник питания на контроллер и на силовую часть. Просадка напряжения от пускового тока насоса может перезагрузить саму плату управления в момент, когда она особенно нужна.
  • Датчики без гальванической развязки от силовых цепей. Наводки от насоса или компрессора на аналоговый вход датчика дают ложные скачки показаний, которые сложно отличить от реальной аварии.
  • Прошивка без проверки на разумность значения. Если датчик температуры физически отвалился, он часто выдает либо ноль, либо предельное значение, без проверки на правдоподобие контроллер может принять это за реальную аварию или, хуже, за норму.
  • Реле без защиты от дребезга контактов и без учета индуктивной нагрузки. Коммутация обмотки компрессора или насоса без искрогасящей цепи на реле сокращает его ресурс и может выводить из строя саму плату управления через наводки.

Из чего собрать корпус и как защитить плату от влаги

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

  • Герметичный корпус с классом защиты не ниже IP54. Обычный пластиковый бокс без уплотнителя пропускает влажный воздух, и конденсат на плате рано или поздно закорачивает дорожки или разъемы.
  • Вывод кабелей датчиков через герметичные сальники. Место ввода проводов в корпус самая частая точка попадания влаги, кабельный ввод без уплотнения сводит на нет герметичность самого корпуса.
  • Разнос силовой и сигнальной части. Реле и силовые провода лучше физически отделить перегородкой от платы и слаботочных проводов датчиков внутри одного корпуса, это снижает наводки и риск короткого замыкания на плату при пробое реле.
  • Влагопоглотитель внутри корпуса. Пакетик силикагеля в закрытом корпусе снижает риск конденсата в местах с перепадами температуры, например когда контроллер стоит у стены рядом с открытым бассейном.
  • Проверка после первого сезона. Первую зиму или первое лето с перепадом влажности стоит открыть корпус и посмотреть на состояние пайки и разъемов, а не считать, что раз заработало один раз, значит будет работать всегда.

Что не стоит доверять самоделке

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

Аквастраж пока тоже проходит опытную проверку: подтверждена температура, остальные каналы требуют приемки. Предлагать его как готовую замену критичной сигнализации с независимой связью сейчас рано; кислород, pH и GSM готовыми не обещаем. Если хотите участвовать в проверке на своем хозяйстве, подберем опытный состав и согласуем сценарии приемки. Собираем пять подписанных бета-договоров до 7 декабря 2026 года, сборка начнется после пятого. Детали плюс 15%, работа в бете бесплатна, установка рядом отдельно.

Подберем контроль под ваше хозяйство

В Аквастраже проверен канал температуры. Контроль питания, насоса и аэрации обсуждаем отдельно: сначала выбираем датчик и проверяем канал на площадке. Опишите один бассейн или узел, предложим состав бета-комплекта и смету.

Обсудить бета-комплект

Частые вопросы

С чего начать, если раньше не занимался электроникой

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

Хватит ли Arduino без ESP32 для полноценного контроллера

Для локального снятия датчиков и управления реле без выхода в сеть Arduino достаточно. Как только нужна отправка данных или тревоги наружу, требуется либо ESP32 со встроенным Wi-Fi, либо отдельный сетевой или GSM модуль поверх обычной платы Arduino.

Можно ли построить полностью независимый от готовых приборов контроллер

Технически да, но объем работы по надежности (резервное питание, независимая связь, защита от зависаний прошивки, защита входов от наводок) на практике сопоставим с разработкой отдельного прибора, а не с одним вечером пайки, и именно этот объем работы чаще всего недооценивают на старте.

Что делать с автоматикой на время отпуска или отъезда

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

Сколько времени реально уходит на доведение самодельного контроллера до рабочего состояния

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

Можно ли использовать один контроллер сразу на несколько бассейнов

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

Нужен ли отдельный контроллер, если уже стоит готовый прибор мониторинга

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

Из чего складывается бюджет сборки

Плата это меньшая часть сметы, основные деньги уходят на обвязку и защиту.

КомпонентОриентир по ценеКомментарий
ESP32 (базовая плата)690-990 рубМодели с Wi-Fi и Bluetooth встроены
Датчик температуры DS18B20 герметичныйот 370 рубПогрешность ±0,5 градуса в диапазоне минус 10 плюс 85
Ультразвуковой датчик расстояния JSN-SR04Tот 445 рубМертвая зона около 25 см, разрешение 1 мм
Модуль реле на несколько каналов300-800 рубЗависит от числа каналов и наличия оптронной развязки
Герметичный корпус IP54 и вышеот 500 рубРастет с размером и числом кабельных вводов
Мини-ИБП или powerbank для резервного питанияот 3500 рубОтдельно от основной силовой розетки объекта

Итоговая сумма для одного бассейна с температурой, уровнем и одним реле обычно укладывается в 5-8 тысяч рублей без учета времени на пайку, отладку и доработку прошивки, а именно время редко закладывают в план на старте.

Watchdog на практике: как работает защита от зависания

Watchdog это встроенный аппаратный таймер, который считает время до нуля и по достижении нуля перезагружает контроллер. Программа обязана периодически "кормить" таймер, то есть сбрасывать его вручную в рабочем цикле, пока все идет штатно. Если прошивка зависла и перестала доходить до строчки со сбросом таймера, watchdog срабатывает сам и делает аппаратный сброс без участия человека. На платах Arduino таймер считает обычно до нескольких секунд, у ESP32 схема сложнее: есть отдельный таймер задач внутри операционной системы FreeRTOS (Task WDT), таймер на уровне аппаратных прерываний (IRAM WDT) и таймер, который следит за питанием и часами реального времени даже в спящем режиме (RTC WDT). Библиотека для Arduino Core называется esp_task_wdt.h, и разработчики советуют включать сразу связку из task и RTC watchdog, чтобы закрыть и зависание кода, и провал по питанию.

Пример логики для одного порога: от чтения до тревоги

На уровне псевдокода пороговая логика для одного датчика выглядит как последовательность из нескольких простых шагов, и именно в такой последовательности имеет смысл писать прошивку самому.

  1. Считать сырое значение с датчика температуры.
  2. Проверить значение на правдоподобие: если число вне физически возможного диапазона (например ниже минус 5 или выше 45 градусов для рыбоводной воды), считать это отказом датчика, а не реальной аварией.
  3. Сравнить правдоподобное значение с заданным порогом нормы.
  4. Если значение вне порога дольше нескольких циклов подряд, а не один раз, поднять тревогу: одиночный выброс чаще помеха, а не авария.
  5. Отправить тревогу минимум по одному независимому от локальной сети каналу и сбросить watchdog в конце цикла.

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

ESP32 против ESP8266: если уже стоит выбор между двумя ESP

Кроме связки Arduino и ESP32 на рынке остается более старая и дешевая плата ESP8266. У нее меньше выводов и один аналоговый вход вместо нескольких, поэтому для схемы с одним датчиком температуры и простой логикой ее достаточно, а как только нужно снять больше двух-трех аналоговых сигналов сразу (pH, уровень, ток), выводов начинает не хватать и разумнее сразу брать ESP32 с большим числом входов и двумя ядрами процессора, что дает свободу держать сетевую часть и чтение датчиков в разных потоках, не мешая друг другу.

Провод датчика: длина, помеха и почему аналоговый сигнал врет первым

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

Во что обходится сэкономленное на резервном питании

Экономия на отдельном источнике питания для самого контроллера выглядит невинно ровно до первого отключения света. Стоимость мини-ИБП или повербанка для платы и модуля связи начинается в районе трех с половиной тысяч рублей, это меньше, чем стоит одна ночь без сигнала при реальной аварии с насосом в холодное время года. Оценка стоимости конкретно вашей аварии по часам и по видам рыбы разобрана в статье пропала вода: что делать, там же по шагам расписано, что успевает произойти с рыбой и биофильтром, пока никто не в курсе отключения.

Среда разработки: Arduino IDE или что-то посерьезнее

Для первого датчика и простой логики Arduino IDE со стандартными библиотеками более чем достаточно, порог входа низкий, а примеров кода под датчики температуры, уровня и реле в открытом доступе много. Как только логика разрастается до нескольких десятков строк условий, нескольких датчиков и вывода в сеть одновременно, разумно переходить на более серьезную среду вроде PlatformIO, которая дает версионирование библиотек, более удобную отладку и сборку под разные платы из одного проекта без переключения программ вручную. Само по себе усложнение среды не делает прошивку надежнее, но облегчает поддержку кода, когда его набирается достаточно, чтобы забыть, что делает каждая строчка через полгода после написания.

Календарь обслуживания самодельной схемы

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

ПериодичностьЧто проверять
Раз в неделюПоказания датчиков на разумность, сверка с ручным контрольным замером
Раз в месяцКалибровка pH-модуля по буферным растворам, если он подключен
Раз в сезонОсмотр корпуса на конденсат, состояние пайки и разъемов, замена влагопоглотителя
Раз в годТестовое зависание прошивки для проверки watchdog, тестовое отключение основного питания для проверки резерва

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

Частый вопрос от новичков: обязательно ли программировать самому

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

Чек-лист перед тем, как оставить самодельный контроллер без присмотра

  • Watchdog включен и проверен намеренным зависанием тестового кода: контроллер должен сам перезагрузиться в течение заданного времени.
  • Резервное питание для платы отдельное от розетки, к которой подключены насос и компрессор.
  • Канал связи для тревоги не зависит от домашнего Wi-Fi роутера объекта.
  • В прошивке есть проверка значений датчиков на физическую правдоподобность, а не голое сравнение с порогом.
  • Корпус закрыт, кабельные вводы герметичны, силовая часть отделена от датчиков и логики.
  • Критичное оборудование (насос, компрессор) имеет ручной override, который не зависит от состояния прошивки контроллера.
  • Есть человек, который получает тревогу и умеет на нее среагировать, а не только сама плата с исправной логикой.
  • Заведен календарь обслуживания схемы с датами последней калибровки, последнего теста watchdog и последней проверки резервного питания.

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

Источники

Технические характеристики плат Arduino и ESP32 (число входов, наличие Wi-Fi, энергопотребление): официальная документация проектов Arduino и Espressif.
Текущий статус проверки и условия беты Аквастража: страница прибора на сайте akvastrazh.ru.
Точность и цена датчика температуры DS18B20: amperka.ru.
Цена и мертвая зона ультразвукового датчика JSN-SR04T: youbot.ru.
Принцип работы watchdog-таймера и аппаратный сброс по истечении времени: habr.com.
Типы watchdog в ESP32 (Task WDT, IRAM WDT, RTC WDT) и библиотека esp_task_wdt.h: geekmatic.in.ua.

Рядом в разделе