
И вот изучая теорию и постепенно покупая в китайских алиэкспрессах разные приспособы для программирования МК (демо плата, макетная плата, перемычки гибкие и жесткие, различне датчики), у меня скопилась критическая масса и созрел реальный проект, который принес бы удобство, полезность и т.д.
Задумал я сделать систему автополива горшочных цветов, стоящих на подоконнике в четырех горшках. Система должна учитывать влажность грунта, температуру воздуха уровень воды в баке, не зависеть от электрической сети (по крайней мере на один, два дня), и в перспективе с контролем через интернет текущих параметров и их изменением.
В ТЗ я себе поставил следующие задачи:
- часы реального времени
- контроль уровня воды в баке
- контроль температуры воздуха
- контроль влажности грунта
- управление внешней подсветкой для увеличения светового интервала в задаваемый промежуток времени
- настраиваемый интервал времени суток для полива
- продвинутый алгоритм анализа влажности земли: летом полив вечером, зимой полив утром. При температуре воздуха больше +30С - полив не зависит от вермени дня, но в заданный разрешенный промежуток времени. Настраиваемая продолжительность отсрочки перед поливом, для исключения переувлажнения грунта
- ручной режим полива: активируется в меню на 3 минуты, после чего система вновь переводится в автоматический режим
- отображение информации в режиме ожидания: температура воздуха, влажность грунта, текущее время, время оставшееся до проверки датчика влажности или до начала полива, уровень заряда резервного аккумулятора, контроль воды в резервуаре
- резервное питание от аккумулятора 7А/ч
- встроенный блок зарядки аккумулятора
- на будущее: использование Wi-Fi для передачи данных на сервер и управления настройками по сети
В процессе разработки научился работать в среде CooCox IDE, изучил как инициализировать периферию микроконтроллера, как работать с датчиком температуры DS18B20 через DMA - т.е. без использования ресурсов кристалла МК, как считывать значения напряжения с АЦП, как выводить информацию, в том числе кириллицей, на 16-ти символьный двухстрочный LCD экран, как выводить нестандартные пользовательские символы на этот экран.
В ходе разработки пришлось разбираться в принципах работы MOSFET (полевых) транзисторов для управления подсветкой и электродвигателем насоса.
Изучая возможность заказа изготовления плат для устройства на производстве в Китае (Российские производители проигрывают или в качестве или в цене), познакомился с сервисами по моделированию плат в 3D или формата Garber (об этом напишу подробнее отдельно).
Правда в итоге все же отказался от идеи заказа плат и в Китае, потому что начался очередной кризис и приходится экономить средства. Решил разводить платы ЛУТом и травить раствором по новому рецепту на основе перекиси водорода, купленной в аптеке, и лимонной кислоты, купленной в продуктовом магазине.
Для управления параметрами полива и для настройки основных параметров системы нужна была какая-то панель с кнопками и экраном. В качестве такой панели почти идеально подошла панель от Xerox PE120, которых у меня имелось несколько штук от не выдержавших офисной жизни МФУ. Кстати, как показала практика использования этих МФУ - очень не надежная модель. В течении года у 10 из 12 устройств сгорел блок питания.
Из этой панели была безжалостно вырезана средняя часть с экраном, кнопками навигации по меню и кнопками START, STOP. В программе SprintLayout развел плату для панели управления, на которой развел дорожки под кнопки и сделал выводы на LCD экран (на фото выше 3D вид этой платы).
В качестве корпуса под руку подвернулся ИБП АРС 500.
Он удовлетворял большинству требований:
- возможность размещения в корпусе аккумулытора
- достаточного места для импульсного БП, блока зарядки аккумулятора, платы с МК и платы с обвязкой
- местом для установки панели управления
- наличием разъема для питания 220В
- наличием разъемов для подключения насоса, подсветки и датчиков
По хорошему, конечно, можно было бы сделать отдельную плату с импульсным блоком питания и схемой зарядки аккумулятора. Все для этого у меня было, но решил при наличии отдельных исправных блоков от старой техники не тратить время и средства на их разработку, а использовать готовые.
В качестве блока питания использовал блок от какого-то принтера hp на 20В и 2.5А, напряжение с которого подается на плату автомата заряда аккумулятора, взятую из промышленного ИБП для сигнализаций БПП-20. С этой платы пришлось выпаять фильтрующий конденсатор 4000х50В, т.к. из-за него плата не влазила в удобное для установки место и кроме того в блоке питания от принтера уже есть большой электролитический кондер.
В этом БПП-20 в качестве индикации использовались хитрые светодиоды: сдвоеные в одном корпусе красно-зеленые включенные встречно-параллельно и имеющие соответственно только два вывода. Решил вывести их на переднюю панель корпуса и использовать имеющиеся там светодиоды. Правда при этом немного не в тему стали надписи под индикаторами: On battary в АРС показывает режим работы от батареи, а с платой от БПП-20 он показывает в принципе исправность батареи и горит при этом вместе с индикатором сети On Line. Индикатор Overload в АРС показывает что слишком мощная нагрузка подключена к ИБП, а с новой платой стал показывать исправность нагрузочного предохранителя номиналом 3.5А (штатный был на 2А, но я поставил побольше, схема позволяет). Индикатор Replace Battary теперь показывает что батарея вышла из строя или ее отсутствие в корпусе - что в принципе совпадает с функционалом индикатора в АРС.
Продолжение следует...
![]() |
Блок питания от принтера hp |
![]() |
Плата из БПП-20 |
![]() |
В БПП-20 удачно вынесен силовой транзистор и плата с индикаторами на проводах. Можно разместить в удобном месте на подходящем радиаторе. |
Продолжение следует...