Перейти к содержанию

·Naasson Agro

Почему в одной ферме пять разных микроконтроллеров

ESP32 на климате, nRF52840 с Zephyr на гидравлике, Pico W на свете, Pico на дозировании, ESP32-S3 с LoRa на улице. Единая платформа была бы удобнее — и хуже.

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

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

Кто где стоит

Климатический узел — вентиляция, датчики CO₂ и VPD — собран на ESP32. Узел нужен в сети, у него много аналоговых входов, и он всегда под питанием. Wi-Fi и щедрая периферия здесь именно то, что нужно.

Гидравлический узел — насосы, поток, pH, EC — работает на nRF52840 под операционной системой Zephyr. Это узел, который управляет насосами: у него должно быть предсказуемое время реакции и понятная модель задач. Zephyr даёт настоящую операционную систему реального времени вместо цикла в главной функции.

Узел освещения — диммирование и фотопериод — на Raspberry Pi Pico W. Задача простая и ритмичная: держать расписание и уровень яркости. Здесь не нужно ни много памяти, ни сложной сети.

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

Наружные метеостанции и удалённые датчики — ESP32-S3 со встроенным модулем LoRa. Дальность связи без развёртывания Wi-Fi по всей площадке.

Почему единая платформа была бы хуже

Свести всё к одной плате можно. Взять самую мощную — ESP32-S3 — и поставить её везде. Тогда узел дозирования получит радиомодуль, который ему не нужен и который придётся отключать программно; узел освещения получит вычислительную мощность, за которую заплачено; гидравлика останется без нормальной операционной системы или потянет за собой Zephyr на плату, где он не первоклассный гражданин.

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

Чем это оплачено

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

Часть из них реально работает в штатном виде: гидроузел собирается через Zephyr и west, один из климатических узлов на AVR — через Arduino-CLI. То есть это не бумажные заглушки, а работающий конвейер сборки прошивки по декларативной спецификации.

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

Что решает, а что нет

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

Ответы на эти три вопроса и дают распределение выше. Тактовая частота и объём флеша в этом решении не участвуют вообще — на всех перечисленных задачах их хватает с большим запасом у любой из плат.