Опрос: нужна ли обществу плата расширения малины
-
Собираюсь для себя создать на базе малины «B» центр контроля всего и вся — будут задействованы: датчики движения, температуры, звука, освещённости и некоторые другие. Кроме того, система должна будет подавать сигналы тревоги, в виде «BEEP-BEEP-...» например, если один из арендованных мной серверов (что тоже будет контролироваться) недоступен.
GPIO для подключения целого ряда тех же датчиков движения, да ещё и термометров недостаточно, да и не хорошо это тянуть много метров провода напрямую от нервов идущих в мозг — котик пробежит, статикой счёлкнет (или утечка фазы 220 где) и давай, доссвидания, малинка.Планирую разработать плату расширения, которая бы подключалась по USART, опрашивала бы датчики, выдавала бы разные уровни на разные свои ножки, а с малиной коммуницировала бы по простому текстовому протоколу.
Платка будет или на AVR ATmega64 или ATmega8 (пока не определился сколько линий IN/OUT будет).Суть вопроса — интересно ли кому ни будь кроме меня поиметь плату расширения, которая бы:
- Подключалась по 4 проводам к малине и словно обычный старый добрый модем управлялясь бы текстовыми командами вида «GET VALUE THERMAL SENSOR 1» на что бы приходили опять же текстовые ответы вида «VALUE THERMAL SENSOR 1=2019» что означало бы «Датчик 1 имеет температуру 20,19 градусов цельсия».
- Содержала бы в своём составе ADC (оцифровщик звука) с частотой дискретизации до 15кГц.
- Могла бы отсчитывать установленные и сохранённые в энергонезависимой памяти заданные защитные интервалы (скажем 60 минут) и если в рамках этого интервала нет никаких данных из малины то ребутить малину (или по суровому, отрубая питания или мягко — давая сигнал «типа замыкания кнопки»).
- Контролировала бы питание и управляла бы питанием от двух источников: аккумулятор и сетевой адаптер, содержала бы в вебе все цепи для бесперебойного питания малины (зарядка для аккумулятора, переключение на аккумулятор при исчезновении сетевого питания).
- Имела бы NN цифровых выходов и входов управляемых такими же такстовыми командами, вида: «PO1=1,PO2=0,PO3=1,...» и давала бы в ответ «PI8=1,PI7=0,...».
- Имела бы в соём составе «BEEP-ку» управляемую командами «SOUND=NNNN» и «SOUND-EFFECT=NN».
Скажем по цене платки 1500 рублей — это было бы интересно?
— Зачем я спрашиваю: мне в моём проекте вряд ли потребуется много функций от такой платки, но мне не составит большого труда (всё же электроника и программирование моё хобби) одновременно с нужными заложить и много дополнительных функций. Так же есть и возможность не делать только 1 плату себе по ЛУТ технологии, а потом бросить заказ местной конторе и наклепать 20 или 50 или 100 плат.
В принципе вопрос чуть шире: ведь можно сделать не всё на одной плате, а например плату контроллера питания бесперебойного отдельно или сделать ещё что-то или на одной плате или отдельно.
Что скажет общественность?
-
ИМХО: для озвученных целей применять микроконтроллер «в довесок» к Малинке вовсе не нужно. Всё перечисленное решается с помощью расширителей портов, например, по I2C и, если надо, с оптоэлектронными развязками. Лишние сложности ни к чему.
Микроконтроллер нужен Малинке только если надо контролировать/управлять процессом в реальном времени. Да и то в некоторых случаях можно обойтись своим драйвером, работающим на уровне ядра Linux. В интернете есть даже пример «программного осциллографа» на Малинке с полосой 1 МГц на быстродействующем АЦП без всякого микроконтроллера. -
Согласен, почти всё указанное можно реализовать, по этому и спросил в оффтопике у общественности.
Почти, потому что на малине не реализовать контроль зависания малины, да и контроль питания с преобразователями импульсными тоже не лучшая идея реализовывать.
Опять же стоит учесть, что микросхема расширителя портов через I2C по цене не дешевле микроконтроллера, а если сюда прибавить АЦП, то затея становиться экономически выгодной.Собственно почему я хочу вынести функции контроля датчиков «за малину» — что бы разгрузить процессор малины от «аппаратных задач», думаю люди которые ещё помнят обычные проводные модемы, помнят и то как печально работали софтверные модемы, а это именно был тот случай, когда производители свалили большую часть аппаратных задач на процессор.
Говоря по другому: хорошо если малина ничем более не занята, кроме как опрашивает GPIO, но если на неё возложить задачи по доступу к WEB, хранению и выборке данных, да ещё и видео заставить играть, то наверняка начнуться проблемы с опросом датчиков, не говоря уже о том, что отдельный контроллер в состоянии организовывать буфер (стек) опросов датчиков, то есть даже если процессор малины был занят 10 секунд разбором некого регулярного выражения на языке высокого уровня, то потом обратившись к платке можно будет считать сколько раз за это время срабатывал датчик движения, какая была температура датчиков. -
Полностью согласен про контроль зависания (он же «watchdog») с помощью внешнего устройства. Сам такую штуку сейчас отлаживаю, только у меня всё проще — на 555 таймере. Программный watchdog на драйвере bcm2708 тоже настроил, кстати, но он довольно ущербный.
И заставлять Малину ПОСТОЯННО опрашивать GPIO — тоже ни разу не хорошо, поэтому и надо использовать ПРЕРЫВАНИЯ по таймеру. Тогда Linux обеспечит все одновременно работающие процессы ресурсами. И при этом собранные с датчиков значения записываются в базу данных и грамотно построенный WEB-сервер в качестве пользовательского интерфейса вполне себе живенько работает.
А вот «видео играть» — это уже совсем не совместимо с задачами сбора/обработки/передачи данных на одной Малинке. Если кому надо, то пусть «видео играет» другая Малинка — для этого есть OpenELEC, XBMC и «иже с ними».
-
Остановлюсь на следующем функционале:
-
Аппаратный биппер.
Конфигурируемый командами вида «BEEP(1750:125-0:125-)» что означает 1750Гц 1 сек, потом тишина 1 сек потом повторять, пока не придёт другая команда, например вида «BEEP(0:0)» что означает «выключить бипку». -
Контроль зависания RPI.
Конфигурирование командами вида «WDT(450000)» что означает «если не пришла никакая команда за 3600 сек» то считать RPI зависшим. -
Контроль любой шины I/O свободной от ADC и бипки командами вида «OUT(1,2,3)», «IN(4,5)» и потом чтение и запись: «RD(4)» или «WR(2)» соответственно задать что I/O 1,2,3 — выходы и в них писать, а 4 и 5 входы и с них читать.
-
ADC встроенный в AVR считывать командой «RA(3)».
-
Встроенный PWM в AVR будет управляться командами вида «PWMO(128)» что будет соответствовать выдаче меандра, соответственно 0 — постоянному лог0, а 255 постоянной лог1.
В общем будет такая нехитрая платка расширения способная быть подключенной хоть к другому AVR хоть к малине.
Реализована будет на AVR ATmega8.
ATmega8 — это 12 шин I/O, 2 выхода PWM (или ещё 2 шины I/O), 8 аналоговых входов (или ещё 8 шин I/O).
По-моему достаточно дла расширения.Мне этого хватит.
Проект как сворганю с схемкой, прошивкой и исходниками, SDK протокола и платкой в формате Sprint-Layout выложу.
Учитывая цену ATmega8 на сегодняшний день 131.84 (по ценам вот здесь), думаю это весьма бюджетное решение для разного рода расширений.Если кому надо будет, то соберут сами, если не смогут собрать, то обратяться к друзьям умеющим утюгом тонер лазерного принтера прилеплять к текстолиту и паяльником тыкать
-
-
- — реализуется в Малинке программно «на раз»
- и 4) — да, необходимы, т.к. отсутствуют в Малинке
- — неясно назначение
- — в Малинке есть свой
Ну и как пожелание — энергонезависимые часы реального времени.