Chicken Feeder
Постановка задачи

В ноябре 2018 к нам обратились ирландские производители технологичных устройств для ферм. Дело в том, что фермеры подкармливают животных и птиц полезными витаминами и пищевыми добавками по расписанию. Полезные компоненты подмешивают к питьевой воде. Установка состоит из трубы с водой, нескольких бочек с примесью, помп для дозированной прокачки жидкости, датчиков, управляющей платы и интерфейса пользователя.  Приложение для телефона разрабатывает контора в России, они нашли нас, а мы пригласили помочь Умбру (Анатолия Аксенова).

Бочек с примесями и помп на ферме до шести штук. В каждой  — ультразвуковой датчик уровня. Установка управляет помпами, получает информацию об уровне жидкости, снимает данные с импульсных и аналоговых счетчиков воды, передает информацию на сервер и отображает на экране. Фермер управляет системой непосредственно, по сети, по телефону через специальное приложение или по шине RS-485, если Wi-Fi нет. Установка убрана в корпус, но фермеру должно быть удобно подключать разъемы оборудования, а приезжающий инженер должен при необходимости без проблем заменить плату.

Общее техническое решение

Часть задач  — управление помпами с точностью до десятых долей миллисекунд, измерение напряжения с нужной периодичностью, генерация напряжений, ШИМ-сигнал для внешних выходов, коммуникация по шине RS-485 — требуют realtime скорости.  Это невозможно для Linux, но легко на микроконтроллере STM32. Другие задачи — картинки на немаленьком экране, тач-сенсор, связь с сервером, TCP/IP, WiFi, модем связи с сотовой сетью — хороши для Linux и тяжелы для STM32. В такой системе легко разделить уровни.

На плате закреплен недорогой удобный в работе микрокомпьютер Raspberry Pi с Linux на борту. Заказчик хотел монолитную плату сразу и с STM32, и процессором Linux с обвязкой, но это и дороже (придется сделать крупную плату высокого класса точности), и гораздо дольше. Для удобства подключения и корпусировки мы разделили железную часть на управляющую плату и плату разъемов.

Задачами нижнего уровня (спроектировать плату, написать прошивку) занялся Крэйл (ТГ «Остранна»), а программированием Raspberry — Умбра. Эта статья описывает железные решения.

Плата разъемов

На плате шесть разъемов для помп, установка посылает на них импульсы. В этот момент помпа прокачивает через себя определенный объем жидкости, а над разъемом вспыхивает светодиод. Фермер глядит на плату и понимает, что происходит.  Еще шесть разъемов для датчиков уровня — в каждой бочке установлен ультразвуковой датчик с миллиметровой точностью в диапазоне от 15 см до 5 м.  Плата определяет, воткнут ли разъем датчика или помпы. Для этого замыкаются ножки разъема. Если их замыкать близко к помпе, то это дает некоторую гарантию целостности кабеля.  Три разъема для счетчиков воды с импульсным отсчетом (крыльчатка замыкает геркон каждые несколько литров). Данные с датчиков и счетчиков отправляются в Raspberry. 

По желанию заказчика мы заложили три разъема для аналоговых счетчиков воды. Информация с них передается при помощи стандартной в индустриальных решениях токовой петли 4–20 мА.  2 разъема  RJ-45 и микросхема ADM3485 на главной плате для управления по шине RS-485. Разведены разъемы аналогового входа, цифрового выхода (аналогичен выходу для помпы, можно подключить и седьмую помпу), current out  и два разъема DC output 12В. 

Разъем Ethernet и три разъема USB  мы пробросили через главную плату для коннекта с соответствующими разъемами Raspberry. И, наконец, разъем USB-B ведет к процессору STM32.

Плата сделана как можно проще, единственный полупроводниковый компонент — светодиод, управление и защита цепей — на главной плате. Для удобства фермера выбранные разъемы — вертикального монтажа.

Питание

На основной плате два блока питания с универсальным входом 110–220В и выходом на 12В (столько нужно ультразвуковым датчикам). Блоки питания и Raspberry Pi задают размер платы. Один источник — для питания выходов постоянного тока на плате разъемов (то есть необходимость этих выходов заметно увеличила основную плату). Второй питает остальную систему. Мы хотели обойтись одним источником, но мощные блоки или требуют охлаждения или в дырчатом корпусе, что не подходит для условий фермы.

Когда на плате пропадает питание от сети, она не выключается, а отслеживает это и сохраняет работоспособность Raspberry Pi, пока тот не передаст информацию на сервер, а потом переходит в спящий режим, сохранив данные. Для этого используется резервная батарея, причем одного аккумулятора 18650 недостаточно: Raspberri требует 5В. Дальше это напряжение понижается, но не хочется экспериментов с пониженным питанием, поэтому мы поставили два 18650 и микросхему питания с контролем зарядки. При отключении внешнего источника плата переходит на аккумулятор, питание датчиков и периферии пропадает. При появлении напряжения обратно автоматически возвращается к питанию от сети, а 18650 начинают заряжаться.

Особенности основной платы
  • Процессор CortexM4 F405. Нам нужно было 128Кб оперативной памяти для удобной работы и 144 ноги. Для меньшего числа выводов пришлось бы ставить микросхемы расширителей портов, что затрудняет программирование и вводит ненужные сущности;
  • Для управления помпами установлены замыкающие цепь транзисторы;
  • Измерение напряжения аналоговых датчиков производится средствами АЦП STM32;
  • Прямо под Raspberry установлен датчик температуры для отслеживания перегрева или переохлаждения содержимого ящика с установкой;
  • Для хранения параметров алгоритмов при выключенном питании установлена микросхема независимой памяти EEPROM. Устройство при включении должно продолжить работу с заданными параметрами при отсутствии связи с Raspberry  и сервером, но нет необходимости хранить большой объем данных и ставить MicroSD;
  • У процессора есть специальная область памяти, которая может сохранять значения, пока ее питает установленная на плате батарейка cr2032, даже если вся остальная система обесточена. Этой памяти всего 20 регистров по 32 бита, но для параметров помп и данных с датчиков хватает.

Из всех сделанных нами плат эта самая крупная (150 на 145 мм плата разъемов, 232 на 125 основная), содержат суммарно около 1500 точек пайки и 90 различных компонентов (одних конденсаторов на 0,1мкф 73 шт.!)

Над проектом работали

Постановка задачи: Андрей Чибуничев;
Разработка платы, программирование нижнего уровня: Крэйл;
Программирование Raspberry Pi: Умбра;
Менеджмент проекта, документация, закупки, текст статьи: Нотиэль;
Сборка прототипов: Хьёрдис, Ветта, волонтеры Остранны.

 

Search

Tags
klnfc led nfc starwars uart usb wifi антураж артефакт без корпуса браслет в корпусе ведьмак взлом вибро видео волшебство время все проекты грибы дверь дерево детектор для дома дорожка древа жесты замок заряжается звездные войны звук значки игроку игротехника ик как в сеттинге камни кинжал китайцы код косплей кристаллы лазер лайтсабер люстра мастеру медальон механика музыкальный движок на батарейках носимое обзор образование освещение от аккумулятора от сети отзывы отладка перчатка пилюли портрет проводная связь промышленное пульт радиация радио речь решения роботы свет светлячок светодиоды станок статьи стационарное стимпанк телефон терминал толкин удобные приборы универсальное устройства игрока фантастика флейта фоллаут девайс цветы часы чуять друг друга экран