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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

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

Сообщение x13dev » 28 сен 2016, 14:44

kod.begemot писал(а): Не совсем понятно, куда должна вести эта ссылка, у меня просто открывается ветка "Умный Дом своими руками".
Исправил
kod.begemot писал(а): Ещё вопрос: Я так понимаю, в 328 мегу уже ничего не запихается, так может в 2561 влезет поддержка интерфейса Wiegand?
C этим интерфейсом очень много "вкусных" считывателей...
Я думаю это Вы уже видели.
Andrey_B писал(а):I2C описывает принципы работы на физическом, канальном, сетевом уровне, но, разумеется, набор команд, их последовательность, для разных устройств различна. Я даже не говорю о то, что для многих
...
У нас в версии 2 были драйвера для некторых I2C устройств реализованы, но очень быстро надоело это поддерживать.

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

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

Сообщение Andrey_B » 28 сен 2016, 19:49

Есть две новости.

Сперва о хорошем.
Я думаю можно переложить на контроллер всю черновую работу, связанную с функционированием шины I2C.
Например, считывание данных об освещенности с датчика BH1750 могло бы выглядеть как-то так (последовательность HTTP-запросов)

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

?pt=30&scl=31&icc_cmd=1  (Инициализация шины)
?pt=30&scl=31&icc_cmd=2  (Старт)
?pt=30&scl=31&icc_send=46  (Передача адреса: режим записи)
?pt=30&scl=31&icc_send=10 (Передача команды)
?pt=30&scl=31&icc_cmd=3  (Стоп)
?pt=30&scl=31&icc_cmd=2  (Старт)
?pt=30&scl=31&icc_send=47  (Передача адреса: режим чтения)
?pt=30&scl=31&icc_read  (Чтение байта. Сервер запоминает значение)
?pt=30&scl=31&icc_read  (Чтение байта. Сервер запоминает значение)
?pt=30&scl=31&icc_cmd=3  (Стоп)
То есть вместо сотен HTTP-запросов, обеспечивающих работу шины, мы используем только несколько. Два байта полученных данных - это значение освещенности.
Думаю, в отличие от I2C PHP такую реализацию можно будет значительно легче интегрировать в любое ПО.
Каждая команда в отдельном HTTP-запросе, так как последовательность команд для разных датчиков/устройств разная. И в данном случае обеспечивается максимальная гибкость при хорошей скорости работы.
Фактически на сервере будет храниться только мини-драйвер (последовательность команд). Я проверю как изменится скорость работы с SSD1306 (OLED-дисплей). Думаю, она вырастет в несколько раз (или в несколько десятков раз).
Есть ли по этому поводу у кого-нибудь предложения/пожелания? Особенно это касается разработчиков ПО/плагинов.

Теперь о грустном. В первой версии загрузчика для MegaD-2561 была выявлена ошибка, которая не даст загружать в модуль прошивку более 32Кб.
К сожалению нет иной возможности обновить загрузчик, кроме как с использованием программатора (Atmel запрещает писать во флеш не из секции bootloader'а). Прошить программатором загрузчик нетрудно, но связано с небольшими хлопотами.

Все модули, которые будут отгружены после 28.09.2016 будут идти уже с новым загрузчиком.
Новый загрузчик версии 2.3
http://ab-log.ru/files/File/megad-2561- ... oot-23.zip
Новый скрипт megad-cfg версии 2.03
http://ab-log.ru/files/File/megad-cfg/m ... g-2561.zip

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

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

Сообщение Petros » 28 сен 2016, 20:16

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

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

sda=30&scl=31&type=BH1750
Далее просто добавлять поддержку необходимых устройств с новыми прошивками

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

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

Сообщение empenoso » 28 сен 2016, 21:04

Как потребитель продукта поддерживаю Petros.

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

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

Сообщение Andrey_B » 28 сен 2016, 21:49

Petros писал(а):даже такая небольшая последовательность команд вызовет шквал вопросов как сделать, чтобы оно работало...
У кого вызовет шквал вопросов? Для любого серверного ПО реализация такого простейшего драйвера - дело двух минут. Пользователю же важен результат и ему все равно как именно это работает.
Petros писал(а):Мое мнение - делать поддержку основных устройств
Что такое "основное устройство"? I2C-устройств сотни. Какие из них считать основными? Что делать в ситуации, когда выпуск конкретного датчика/устройства прекращен/заменен на другую версию? Убирать из прошивки или тянуть весь этот груз шлейфом всегда?
Предложенный мною вариант позволяет малой кровью решать все возможные проблемы. Более того, если вы решили подключить какое-нибудь новое I2C-устройство, нет необходимости ждать/убеждать кого-то внедрять поддержку в прошивку. Например, вы нашли замечательный датчик. Но он нужен только вам и больше никому. Я отвечаю, что не имею желания в силу малой популярности и распространенности датчика внедрять его поддержку в прошивку. Все - вопрос закрыт. Вы не сможете подключить этот датчик. Но если пойти по пути, предложенном мною, то вы, открыв даташит на устройство, сможете без какой-либо дополнительной доработки прошивки легко добавить поддержку любого датчика самостоятельно. Это гораздо важнее.
Petros писал(а):sda=30&scl=31&type=BH1750
Далее просто добавлять поддержку необходимых устройств с новыми прошивками
На мой взгляд, это тупиковый путь. И бессмысленный.
Скажите, какая в сущности для сервера разница - сделать 1 запрос или 10?

В предложенном мною решении мы получаем:
а) сопоставимую с полностью аппаратной скорость взаимодействия с I2C-устройством
б) получаем фактически удобный интерфейс к любому I2C-устройству, а не только к тому, который "поддерживается" прошивкой
в) можем использовать полные возможности устройства (режимы, настройки и т.д.), а не только "задушенную" ради экономии памяти реализацию, что могла бы быть в памяти микроконтроллера
г) фактически не тратим память микроконтроллера

И последнее. Некоторые устройства (типа дисплеев) могут требовать последовательное выполнение сотен команд. Если реализация полностью будет в прошивке, то это означает, что если за это время была нажата кнопка на выключателе (или отправлена команда с сервера), то это событие будет пропущено. Не все I2C-девайсы поддерживают высокую скорость работы. В моем же случае работа с шиной как-бы фрагментируется и устройство успевает слушать все остальные события. Мне кажется это крайне важный аргумент.

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

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

Сообщение Petros » 28 сен 2016, 22:11

Не обижайтесь, но предполагаю, что в предложенном Вами варианте именно Вы в конечном итоге будете читать даташиты на устройства и рассказывать потом на форуме какую последовательность нужно выполнить на сервере :)

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

И еще. Для меня, как для разработчика действительно нет никакой разницы отправить 1 или 10 запросов подряд, но в случае каких-то проблем с софтом - будет гадание где возникла проблема - в плагине, в меге, в сети или в настройках пользователя.

И такой вопрос - а что будет, если в эту последовательность вклинится запрос на другой порт?

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

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

Сообщение Andrey_B » 28 сен 2016, 22:36

Petros писал(а):предполагаю, что в предложенном Вами варианте именно Вы в конечном итоге будете читать даташиты на устройства и рассказывать потом на форуме какую последовательность нужно выполнить на сервере :)
Во-первых, разумеется, буду. Во-вторых, работа с различными I2C-устройствами строится по одним и тем же принципам. И разобравшись в их сути (или посмотрев примеры), любой пользователь сможет интегрировать какую-нибудь новую "железку" и самостоятельно.
Petros писал(а):Второе - поддержку сотен устройств софтом/плагинами всё равно придется реализовывать, но разработчикам софта/плагинов.
Совершенно верно. Но в отличие от маленького микроконтроллера у большого сервера есть и ресурсы и свои собственные требования к перечню таких устройств.
Фактически опрос состояния входов или выходов в сущности мало чем будет отличаться от опроса I2C-датчика. Разве что запросов в последнем случае несколько больше.
Petros писал(а):Кроме того - на мой взгляд - у мегадевайса есть определенные задачи, под которые не требуется сотни датчиков. Достаточно описать самые ходовые.
DS18B20 - датчик ходовой.
Но возьмем I2C-датчик давления от Bosch... Тут и BMP085 и BMP180 и BMP280, а что дальше? Не многовато ли?
Но это ерунда. А теперь возьмем-ка температуру: TMP10x, HTU21D, LM75A, ADT7420, MCP9808, AM2315, Si7005, EMC100, TC74/TNC75A, MAX663x, HYT271 и т.д. и т.п.
Это только навскидку. И какой прикажете считать "ходовым"? А завтра появится еще столько же...
Я еще не касался темы датчиков освещенности, коих наберется еще 3 десятка... Вам по-прежнему кажется, что реализацию надо тащить в прошивку? А "ходовые" выбирать народным голосованием? Или все же пусть каждый выберет себе то, что ему больше нравится?
Petros писал(а):И такой вопрос - а что будет, если в эту последовательность вклинится запрос на другой порт?
В том то и фокус, что все отработает нормально. Но я на всякий случай проведу дополнительно тесты.

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

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

Сообщение Petros » 28 сен 2016, 22:41

Про датчики - убедили. Хоть я и уверен, реально пользуются 3-4 моделями... Есть только один вариант на мой взгляд - проверить в деле. А дальше - можно вернуться к этому обсуждению.

filippovsky
Сообщения: 75
Зарегистрирован: 30 авг 2015, 21:44

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

Сообщение filippovsky » 29 сен 2016, 10:13

Andrey_B писал(а):Есть две новости.
Теперь о грустном. В первой версии загрузчика для MegaD-2561 была выявлена ошибка, которая не даст загружать в модуль прошивку более 32Кб.
К сожалению нет иной возможности обновить загрузчик, кроме как с использованием программатора (Atmel запрещает писать во флеш не из секции bootloader'а). Прошить программатором загрузчик нетрудно, но связано с небольшими хлопотами.

Все модули, которые будут отгружены после 28.09.2016 будут идти уже с новым загрузчиком.
Новый загрузчик версии 2.3
http://ab-log.ru/files/File/megad-2561- ... oot-23.zip
Новый скрипт megad-cfg версии 2.03
http://ab-log.ru/files/File/megad-cfg/m ... g-2561.zip
Andrey_B, подскажите, пожалуйста, где можно купить программатор, какой именно надо покупать, и где можно прочитать какую-нибудь пошаговую инструкцию "для полного чайника" как перепрошить Мегу-2561 программатором?
И, как крайний вариант, если не получится перепрошить самому, возможно ли отправить Вам Мегу для перепрошивки?
Спасибо заранее.

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

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

Сообщение Andrey_B » 29 сен 2016, 10:21

filippovsky, я попробую приобрести дешевый китайский аналог AVRISP mkII (ибо оригинал уже не производится, а Atmel ICE стоит неприличных денег). Если он будет работать, дам конкретные рекомендации.
Отправить модуль на перепрошивку, конечно, можно. Это будет абсолютно бесплатно.

filippovsky
Сообщения: 75
Зарегистрирован: 30 авг 2015, 21:44

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

Сообщение filippovsky » 29 сен 2016, 10:33

Andrey_B писал(а):filippovsky, я попробую приобрести дешевый китайский аналог AVRISP mkII (ибо оригинал уже не производится).
А такой подойдет?
http://www.wizardprog.com/avrisp.htm
или
http://www.chipdip.ru/search/?searchtext=AVRISP+mkII


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

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

Сообщение Andrey_B » 29 сен 2016, 10:44

Фирменный AVRISP MKII подойдет точно. Клон от Waveshare скорее всего тоже.

kran17
Сообщения: 24
Зарегистрирован: 07 сен 2014, 14:53
Откуда: Сургут

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

Сообщение kran17 » 29 сен 2016, 10:50

Вариант предложенный Petros самый простой дешевый и рабочий вариант мною проверенный.
На 328 меге я таким перепрошивал загрузчик. Вечером попробую 2561

k_w_m
Сообщения: 98
Зарегистрирован: 19 июл 2013, 13:41

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

Сообщение k_w_m » 29 сен 2016, 12:00

http://www.ebay.com/itm/Latest-USBASP-U ... 0985446258

Да. Только таким и пользуюсь. Только еще переходник 10 на 6 нужен. Если кому срочно надо в Москве, могу одолжить

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

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

Сообщение Petros » 29 сен 2016, 12:01

Без переходника на али по 70 рублей :)

d.v.ermakov
Администратор
Сообщения: 2188
Зарегистрирован: 29 май 2015, 21:23
Откуда: Екатеринбург, Нижний Тагил

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

Сообщение d.v.ermakov » 29 сен 2016, 12:13

to Petros & Andrey_B:
Про поддержку датчиков прошивкой.
А я считаю, что имеет смысл реализовать хотя бы по одной модели (самой крутой, скажем) из каждой группы датчиков на уровне прошивки. Для тех, у кого нет выбора (сервера, скажем, нет и не предвидится) цена и модель датчика будет не важна. Если поддержка датчика в Меге есть - можно купить именно тот, что нужен. Дисплей в прошивке, ИМХО, наверно, лишнее.
И правильно Petros сказал, присутствие поддержки датчика в прошивке для людей с отсутствием опыта - большой шаг вперёд, даже в маркетинговом плане. Ведь МегаД - это потребительское устройство, а не самоделка?

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 29 сен 2016, 12:40

Андрей, через ардуину можно прошить? Какие сигналы нужны для прошивки? MISO, MOSI, RST, GND, 3.3V - это все? А то чипы то атмега8а прошивал через ардуину. Разве что я так понимаю нужно будет обеспечить уровни сигнала 3.3В.
Инструкция по прошивке готового контроллера не помешала бы. 12В подключать надо или брать общее питание?
Последний раз редактировалось nevkon 29 сен 2016, 12:48, всего редактировалось 1 раз.

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 29 сен 2016, 12:42

По поводу реализации I2C можно попробовать сделать двойной стандарт - если мега видит название датчика, то берет из своих заготовок, а если видит некий код для прямого обращения, то переходит в режим прямого доступа.

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

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

Сообщение Petros » 29 сен 2016, 12:51

d.v.ermakov писал(а):to Petros & Andrey_B:
Про поддержку датчиков прошивкой.
А я считаю, что имеет смысл реализовать хотя бы по одной модели (самой крутой, скажем) из каждой группы датчиков на уровне прошивки. Для тех, у кого нет выбора (сервера, скажем, нет и не предвидится) цена и модель датчика будет не важна. Если поддержка датчика в Меге есть - можно купить именно тот, что нужен. Дисплей в прошивке, ИМХО, наверно, лишнее.
И правильно Petros сказал, присутствие поддержки датчика в прошивке для людей с отсутствием опыта - большой шаг вперёд, даже в маркетинговом плане. Ведь МегаД - это потребительское устройство, а не самоделка?
Кстати -да. Аппаратно сделать поддержку проверенных датчиков температуры, влажности, давления итд по одной-две модели, скажем самой крутой и самой ходовой. Этого будет вполне достаточно, чтобы, скажем при планировании сети можно было ориентироваться на какие-то устройства, поддерживаемые нативно

И чует мое сердце придется купить 14-in и 2561 :D

Ответить