Прошивка MegaD-328 (релизы, обсуждения, предложения)

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
alexsis_76

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение alexsis_76 » 06 дек 2015, 13:28

С того момента и заблуждаюсь
бывает :)

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Dron » 06 дек 2015, 17:14

Andrey_B писал(а):Да, из новостей. Тестируется проект на atmega2560/atmega2561.
Планируется плавный переход на этот чип. На первом этапе atmega328 будет заменена на atmega2561 с полной аппаратной совместимостью с ранее выпущенными исполнительными модулями.
несколько модулей на 1 голову?
и выходы ШИМ будут все свободны для использования? их там немного..

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 06 дек 2015, 22:36

Dron писал(а):
Andrey_B писал(а):Да, из новостей. Тестируется проект на atmega2560/atmega2561.
Планируется плавный переход на этот чип. На первом этапе atmega328 будет заменена на atmega2561 с полной аппаратной совместимостью с ранее выпущенными исполнительными модулями.
несколько модулей на 1 голову?
и выходы ШИМ будут все свободны для использования? их там немного..
Как я и написал, полная аппаратная совместимость на данном этапе означает, что можно будет просто заменить плату/модуль в уже существующей и работающей системе и все будет работать как прежде.
То есть модуль внешне и по части подключений и разъемов будет полностью идентичным. Все те же 14+2 портов, но: а) оперативной памяти в 4 раза больше; б) флеша в 8 раз больше; в) 8 АЦП портов и 7 ШИМ портов. г) доп. АЦП порты, которые были ранее, смогут работать и как входы/выходы. Это будет модуль для прямой замены существующего. А дальше посмотрим.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 06 дек 2015, 22:56

kod.begemot писал(а):
Andrey_B писал(а):kod.begemot, боюсь даже отказавшись от DHT мы не разместим реализацию I2C. Впрочем, есть одна мысль. Проверю - доложу. Вот только датчика у меня такого нет, поэтому нужно время, чтобы его заказать.
Это было бы шикарно. Эх... ведь если удастся реализовать I2C - ведь можно будет и дисплей небольшой, к примеру, прикошачить :) без костылей 1-wire и задействуя только 2 ноги...
Итак, тестирование показало, что MegaD-328 МОЖЕТ работать с шиной I2C. Ура?
И вот, как это работает.

Конечно, в существующую прошивку реализация I2C поместиться не может. И дело даже не в самой реализации базовых функций. I2C достаточно простой протокол. Сложность в том, что все устройства для I2C разные, схема взаимодействия с ними разная. Все это тянуть в прошивку нецелесообразно. Поэтому я решил вопрос проще и как мне кажется интереснее.
Я немного поправил прошивку, чтобы имелась возможность через HTTP менять режим работы порта типа NC, то есть переключать его в режим входа или выхода. А далее написал реализацию I2C на PHP. Что в итоге?

Теперь мы берем, к примеру, MegaD-14-IN, подключаем ведомое устройство (датчик или еще что) к 2 портам (один порт тактирование SCL, другой шина данных SDA) и настраиваем их как NC.
Далее запускаем программу, которая дергает этими портами через HTTP, получает/отправляет данные.

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

I2C - протокол, у которого нет минимальной скорости работы. Для большинства устройств максимальная частота 100кГц. В режим вот такой программной эмуляции, происходящей через HTTP получается скорость порядка 70-75 Гц. Это немного, но стоит сказать, что чаще всего нужно считать всего несколько байт, поэтому сеанс такой связи будет занимать, может быть, 1-3 секунды. При этом устройство не блокируется.

Более подробно с публикованием кода I2C-PHP напишу позже, когда у меня будет датчик BMP180.

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение kod.begemot » 06 дек 2015, 22:59

А что по ценам? 2560 вроде бы как в 3 раза дороже, а 2561 так и вообще раз в 5...
P.S. а так - всё вкусно предлагаете :)
Приятно, если будет поддерживаться и ветка для старой версии...
P.P.S. Программная реализация I2C через скрипт - по моему идея великолепная!

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Dron » 06 дек 2015, 23:04

Andrey_B писал(а): Как я и написал, полная аппаратная совместимость на данном этапе означает, что можно будет просто заменить плату/модуль в уже существующей и работающей системе и все будет работать как прежде.
То есть модуль внешне и по части подключений и разъемов будет полностью идентичным. Все те же 14+2 портов, но: а) оперативной памяти в 4 раза больше; б) флеша в 8 раз больше; в) 8 АЦП портов и 7 ШИМ портов. г) доп. АЦП порты, которые были ранее, смогут работать и как входы/выходы. Это будет модуль для прямой замены существующего. А дальше посмотрим.
имхо... только личное мнение:
сделать обратную совместимость со старыми исполнительными модулями важно и нужно. НО!! при этом можно полноценно подключать ДВА любых исполнительных модуля.
зачем полностью и абсолютно кастрировать новый камень ради обратной совместимости?
просто два разъёма под два исполнительных модуля. как минимум. а ещё можно сделать возможность (это усложнение, но памяти реально много) работать в режиме совместимости (кастрированный режим, со старыми модулями) и новый полноценный режим для использования всех (или большинства) новых возможностей.
ещё раз повторюсь, это просто моё личное видение перехода на новый процессор
kod.begemot писал(а):А что по ценам? 2560 вроде бы как в 3 раза дороже, а 2561 так и вообще раз в 5...
Вы ошибаетесь. ATmega2560 и ATmega2561
61я дешевле

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 06 дек 2015, 23:49

Dron, ну хорошо, а куда вы разместите второй шлейф? На плате и главным образом в корпусе для этого не очень много места.
А размер корпуса в данном случае имеет важное значение. Вот, к примеру, у вас смонтированный щиток, все под завязку. Захочется сделать апгрейд, а корпус в уже существующее посадочное место не лезет...

"61я дешевле"
Это зависит от того, где, как и сколько брать. ;) Да и при сегодняшних резких скачках курсов валют цена компонента понятие не очень точное.
А даже если разница и есть, то в стоимости конечного продукта она несущественна.

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение kod.begemot » 07 дек 2015, 00:46

Dron, признаю - таких цен не видел. Смотрел на ebay.com.
Андрей, А что если оптимизировать использование пинов нынешнего разъёма? Можно сделать переходник с нового разъёма (к примеру 40 pin) на два старых, а в новом уменьшить количество "земли"... При этом чередование "земли" и сигнальных жил можно сохранить после переходника... Простой печатный переходник, 40 pin - 2x34.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 07 дек 2015, 00:53

kod.begemot, думал о таком варианте. Но тоже возникает масса разных вопросов.
Все-таки считаю целесообразным на данный момент пойти поэтапно.

alexsis_76

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение alexsis_76 » 07 дек 2015, 03:48

Итак, тестирование показало, что MegaD-328 МОЖЕТ работать с шиной I2C
:)
А далее написал реализацию I2C на PH
а если задействовать аппаpатный модуль i2c, там кода всего с десяток строк
а как Вы видите управление индикатором по шине ? нет сервера нет и индикации о как
А что если оптимизировать использование пинов нынешнего разъёма? Можно сделать переходник с нового разъёма (к примеру 40 pin) на два старых, а в новом уменьшить количество "земли"...
а может задуматься о переходе на последовательный интерфейс, выйдет дороже но и возможностей поболее

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 07 дек 2015, 11:40

alexsis_76 писал(а):
А далее написал реализацию I2C на PH
а если задействовать аппаpатный модуль i2c, там кода всего с десяток строк
Я говорю о проекте в целом, а не о конкретном устройстве, которое делается для себя.
Преимущество программной реализации и заключается в том, что можно использовать уже готовый контроллер и ничего дополнительно не задействовать.
Это во-первых. А, во-вторых, работа с каждым устройством для шины I2C строится по-разному. Одни устройства нужно инициализировать, другие управляются через запись данных в контрольные регистры, третьи требуют получение калибровочных коэффициентов и расчет значения по сложной формуле. И что, все это тянуть в прошивку? Громадным преимуществом программной реализации является то, что весь код можно хранить на сервере. А контроллер, таким образом, позволяет подключать любые устройства, работающие по шине I2C, не привязываясь к каким-то "поддержкам" со стороны прошивки.
alexsis_76 писал(а): а как Вы видите управление индикатором по шине ? нет сервера нет и индикации о как
Снова и снова вынужден повторять. Я рассматриваю "Умный Дом" как систему в целом, а не как набор отдельных элементов. Во главе этой системы стоит главный управляющей элемент - сервер. Конечно, остановка сервера приведет с ограничениям в работе Умного Дома. Но можно ли полноценно реализовать абсолютно гибкую автоматику в "распределенной" системе? Вопрос дискуссионный и не для данной темы. С моей точки зрения нельзя.
Простой пример. Я хочу отображать данные с метеостанции с USB-интерфейсом. Как эти данные в принципе могут отображаться без сервера? Различных устройств в доме может быть очень много. Все они могут работать по разным шинам, протоколам и т.д. Сервер является связующим звеном. Делать из MegaD-328 сервер я не хочу, так как писать алгоритмы (а именно алгоритмы и есть Умный Дом), использовать массу уже готового ПО, на сервере на порядки проще. Все это проговаривалось сотни раз...

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Dron » 07 дек 2015, 12:30

Andrey_B писал(а):Вот, к примеру, у вас смонтированный щиток, все под завязку. Захочется сделать апгрейд, а корпус в уже существующее посадочное место не лезет...
к примеру, у меня 4 головы и 4 исполнителя. после апгрейда будет 2 головы и 4 исполнителя. так что "головы" можно делать крупнее. и экономически это на треть дешевле выйдет, чем 2 головы
как вариант, делать разъёмы на голове не 40-пин, а 20-пин. для совместимости можно использовать платку-переходник 20->40. всё равно выгоднее.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 07 дек 2015, 12:35

Dron, возможно. Подумаю по этому поводу.

llams
Сообщения: 192
Зарегистрирован: 23 ноя 2015, 04:20

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение llams » 07 дек 2015, 13:40

Можно попробовать уместить второй разъём на стороне ethernet, вполне должен влезть. ISP вынести на плату с индикаторами, используется редко, мешать не будет. А от аналоговых портов на 3 пина можно отказаться. Конечно сложновато будет все это упаковать, вместе с ENC, но и они есть в других корпусах. :-) И обратная совместимость и правильные размеры устройства в одном флаконе.

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение comparator » 07 дек 2015, 16:16

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

Код: Выделить всё

typedef struct
{
    uint8_t     address; // адрес устройства на шине
    uint8_t     access;  // доступ 1 запись, 2 чтение, остальные биты игнорируются
    uint8_t     write;	// байт на запись, сейчас не используется
    uint8_t     read;    // байт на чтение
    uint8_t     data[];  // данные для записи
} TWI_FRAME_t;
т.е. для всех устройств у нас один драйвер, а обработка ваполняется на стороне сервера.
собственно сами драйвера
BMP180 довольно сложна для работы, рассмотрим LM75

на вход драйвера даем структуру: addr, 0x03, 0x01, 0x02, 0x00
address: адрес 0x48 - 0x4F
access: 0x03 - чтение/запись
write: 1 - не используется
read: 2 байта на чтение.
data[]: 0x00 - данные для записи, start conversion

после получаем ответ
address: адрес 0x48 - 0x4F
access: 0x10 - все в порядке либо ошибки
write: 1 - байт записано
read: 2 - байта считано
data[]: 0x16, 0x66 - 22.4 градуса

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 07 дек 2015, 16:51

comparator, я думал о таком режиме. Примерно в том же виде реализована сейчас работа с ИК.
Часть черновой работы выполняет контроллер, а сервер раздает команды.
Но проблема в том, что в atmega328 нет доступного флеша даже для этого. Ну то есть приходится выкраивать каждый байт под какие-то правки.
Отчасти поэтому были форсированы работы по переезду на 2561.

С другой же стороны, у нас есть GET-параметр "cmd", который предназначен для выполнения сценария типа ""8:1;9:1;8:0" и так далее.
Это позволяет реализовать в одном запросе не один дрыг, а сразу пачку.
В результате, к примеру, опрос простейшего ведомого занимает порядка 0,3-0,4 секунды. То есть вполне себе быстро.
И в этом смысле какая разница, как именно это реализовано. Зато 0 байт в графе потраченного флеша и десяток строк на PHP.

Но в 2561 к аппаратной реализации можно будет вернуться, если в этом будет реальная необходимость. Ведь работа с подобными датчиками не требует сверхвысокой скорости. Им еще и время подавай для формирования/конвертации значений.

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение kod.begemot » 07 дек 2015, 19:05

Да, чую что следующий давай будет уже "Ultra-2561", если ещё и поддержка дисплеев, термодатчиков дешёвых, bmp-180... А ИК управление, а можно добавить и считывание... Да если ещё можно будет и термостаты строить на внутренней логике на LM75...
И так комбайн универсальный, а будет и того круче!
P.S. 2561 выбрана из-за более удобного корпуса?

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 07 дек 2015, 22:39

kod.begemot писал(а):P.S. 2561 выбрана из-за более удобного корпуса?
Развитию проекта мешает, прежде всего, ограничения в виде отсутствия достаточного количества памяти. Поэтому не так важно сколько портов, важен объем памяти.
У 2561 меньше ног. Часть из них не будет на первом этапе даже разведена на плате. Исполнительный модуль тоже не хочется увеличивать в размерах, так как это приличное удорожание, а не всем нужно много портов.
Идея с двумя исполнительными модулями лучше, но эта тема для отдельной проработки.

А вот "бренд" MegaD-328 уже стал таким привычным, что название менять не хочется... Но какое-то отличие, наверное, должно быть.

Evgeniy
Сообщения: 32
Зарегистрирован: 14 ноя 2014, 10:25

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Evgeniy » 08 дек 2015, 19:52

Андрей, подскажите, может ли Мега отрабатывать длинные нажатия без помощи внешнего сервера? Очень хотелось бы иметь такой функционал

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 08 дек 2015, 22:19

Evgeniy, а что значит "отрабатывать"? Полагаю это означает, что должно быть два разных поля Action для обычного и длинного нажатия. К сожалению в рамках atmega328 это реализовать нельзя.
Или вы имеете ввиду отправку на сервер информации о длинном нажатии?

Ответить