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

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

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

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

ИМХО, принимать решения (по моделям и поддержке) должен один человек. У коллектива только аргументы можно спросить. Иначе iPhone не сделать.

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

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

Сообщение k_w_m » 29 сен 2016, 13:38

Андрей, действительно, Вы проводите огромную работу, в том числе и по тестированию датчиков. И на эти результаты очень многие ориентируются. Они, кстати действительно объективные, за что отдельное спасибо. Вполне достаточно будет по одному датчику (освещенность, температура, давление...) на Ваш выбор.

Alex_Jet
Сообщения: 1251
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

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

Сообщение Alex_Jet » 29 сен 2016, 13:49

Andrey_B писал(а):Я думаю можно переложить на контроллер всю черновую работу, связанную с функционированием шины I2C.
Например, считывание данных об освещенности с датчика BH1750 могло бы выглядеть как-то так (последовательность HTTP-запросов)
Считаю это предложение хорошим решением для работы с разнообразными I2C устройствами (их настройка, опрос всех показаний/значений). Однако поддержу форумчан по реализации в прошивке 2561 аппаратной поддержки наиболее дешевых/распространенных датчиков. Хотя бы по одному из каждой категории - температура, температура/влажность, освещенность, атмосферное давление. Если будет реализован предложенный универсальный механизм опроса I2C датчиков, то много кода не уйдет на поддержку ЧТЕНИЯ поддерживаемых датчиков одной командой.
Особенно это будет востребовано у новичков и будет подкупать монтажников/наладчиков простотой (маркетинговый ход). Хотя с умным домом должны иметь дело люди, способные с помощью php разобрать строку "temp:25,61/hum:65" :), получаемую от Мегадевайса.

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

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

Сообщение Andrey_B » 29 сен 2016, 17:46

http://ab-log.ru/files/File/megad-2561/ ... a1-hex.zip

HTU21D (датчик температуры/влажности)
Пример:

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

Влажность
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d
Температура
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d&i2c_par=1
?pt=35 -- порт, к которому подключена линия DATA (SDA). В данном случае P35 (зеленый клеммник на модуле MegaD-2561)
&scl=34 -- порт, к которому подключена линия SCL. В данном случае P34 (зеленый клеммник на модуле MegaD-2561)
Датчики можно подключать к любым из доступных портов.

&i2c_dev=htu21d -- пояснения лишние
&i2c_par=1 -- в данном случае запрос температуры. Без данного параметра (по умолчанию) контроллер возвращает значение влажности.

Хочу напомнить, что для загрузки данной прошивки через скрипт megad-cfg необходима новая версия загрузчика и новая версия megad-cfg. Ссылки я давал.

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

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

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

Попытался обновить загрузчик MegaD-2561 с помощью программатора USBASP и avrdudeprog33 и ни чего не получилось, не смог прочитать его пишет ошибка:
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: error: programm enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude.exe done. Thank you.
Подключаю MegaD-328 и всё читает без проблем.

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

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

Сообщение kran17 » 29 сен 2016, 20:02

Немного беспокоит исправления на плате как раз на разъеме программирования
Вложения
IMG_2823.JPG
IMG_2823.JPG (186.48 КБ) 8683 просмотра

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

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

Сообщение Andrey_B » 29 сен 2016, 20:25

Перемычки - особенность первой версии платы, которая никак не влияет на процесс перепрошивки программатором. В последующих релизах перемычек не будет.
Вероятнее всего, ваш USBASP не поддерживает atmega2561.
Напомню, что любой владелец MegaD-2561 Ver 1.0 может выслать модуль для замены загрузчика и прошивки.

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

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

Сообщение kran17 » 29 сен 2016, 20:33

В меню atmega2561 есть. Возможно в avrdudeprog33 есть ошибки или чего то не хватает.
Мы не ищем лёгких путей, будем разбираться, отослать ради перепрошивки это не наш метод.

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

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

Сообщение nevkon » 29 сен 2016, 22:03

Медленный режим пробовали для usbasp?

alex946
Сообщения: 204
Зарегистрирован: 05 дек 2015, 22:48
Контактная информация:

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

Сообщение alex946 » 30 сен 2016, 12:05

По I2C выскажусь, хоть и чайник.
Стоит ещё учесть, что на шину I2C кроме датчиков можно навесить изрядное число простых самодельных и заводских модулей расширения - реле, ADC, диммеры...
В этом смысле уж точно не нужно заставлять контроллер знать обо всех этих штуках. Пусть сервер думает, у него голова большая.

И сразу вопрос - а не будет ли весьма выгодно и входы-кнопки дополнительные вешать на I2C, чтобы не тратить на это полноценные порты IN контроллера?

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

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

Сообщение Andrey_B » 30 сен 2016, 12:33

alex946 писал(а):И сразу вопрос - а не будет ли весьма выгодно и входы-кнопки дополнительные вешать на I2C, чтобы не тратить на это полноценные порты IN контроллера?
Теоретически, думаю, это возможно. Практически не знаю, насколько большая будет экономия, будет ли это технологично, достаточная ли будет скорость работы.
Возникают вопросы, например, как и где будет реализована в этом случае защита от дребезга.

По кнопкам не знаю, а вот диммеры, управляемые по I2C (и вообще в целом исполнительные устройства) - это интересная тема.

alex946
Сообщения: 204
Зарегистрирован: 05 дек 2015, 22:48
Контактная информация:

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

Сообщение alex946 » 30 сен 2016, 13:21

Аппаратный антидребезг это дорого? Сходу только MC14490 попался на глаза, стоит он, конечно, от души...

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

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

Сообщение nevkon » 30 сен 2016, 14:05

Нашел способ запрограммировать мегу2561 без программатора: http://www.avislab.com/blog/raspberry-pi-avrdude_ru/, скоро попробую и отпишусь. Кстати какая распиновка у меги? Пока нашел только питание 2 нога и 6 земля.

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

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

Сообщение llams » 30 сен 2016, 14:09

Andrey_B писал(а):...как и где будет реализована в этом случае защита от дребезга....
Андрей, приветствую!
Защиту от дребезга лучше будет сделать по пину INT с I2C экспандера, а это -1 пин на контроллере, единственный недостаток этого подхода невозможность обработки двух событий на разных пинах расширителя одновременно (время на обработку события примерно будет равно времени установления логического состояния на кнопке в случае программного антидребезга). Но если речь о подключении кнопок данное время незначительно.

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

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

Сообщение d.v.ermakov » 30 сен 2016, 14:18

I2C - шина, созданная для общения микросхем между собой в пределах одной платы. С ростом расстояния скорость надёжной работы шины должна падать катастрофически. Для большинства датчиков это, видимо, не важно. Но не думаю, что использовать I2C для кнопок и исполнительных устройств на расстояниях в десятки метров - это хорошая идея. Хотя и не пробовал пока.

alex946
Сообщения: 204
Зарегистрирован: 05 дек 2015, 22:48
Контактная информация:

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

Сообщение alex946 » 30 сен 2016, 14:38

Ой, нет, я не предлагаю расстояния в десятки метров для шины I2C. Мне нужно подключать дополнительные устройства внутри щита, и изредка, в пределах метра от него. Фактически, это способ повесить больше I/O модулей на одну Мегу, не более того.

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

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

Сообщение llams » 30 сен 2016, 15:04

alex946 писал(а):Ой, нет, я не предлагаю расстояния в десятки метров для шины I2C. Мне нужно подключать дополнительные устройства внутри щита, и изредка, в пределах метра от него. Фактически, это способ повесить больше I/O модулей на одну Мегу, не более того.
Расстояние между устройствами, как и скорость передачи данных по шине напрямую зависит от ёмкости линии и количества устройств которые в свою очередь вносят дополнительную ёмкость. От этого зависит форма сигнала, а следовательно вероятность возникновения ошибки.

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

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

Сообщение Dron » 30 сен 2016, 17:59

по поводу поддержки устройств головой: а почему бы не выделить определённый объём памяти внутри MegaD-2561 и изменить загрузчик так, что бы перепрошивать именно этот кусочек памяти?
тогда была возможность выбрать из длинного списка поддерживаемых устройств те, которые нужны.
и подгружать необходимые конечному пользователю.
понимаю, технически это достаточно сложно...

но зашёл в отдельный раздел вэб-морды, поставил галочек (к примеру, максимум 5-7 из возможных 100), и вуаля! отдельный блок памяти меги перепрошился и в голове появилась поддержка нужных устройств.
надеюсь, не очень сумбурно написал) и кстати, сам I2C пока не использую...

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

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

Сообщение Andrey_B » 30 сен 2016, 19:34

http://ab-log.ru/files/File/megad-2561/ ... a2-hex.zip

"Как бы" I2C API
---
pt - номер порта, к которому подключена линия SDA
scl - номер порта, к которому подключена линия SCL
i2c_cmd - команды (1 - инициализация; 2 - старт; 3 - стоп)
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_cmd=1

i2c_send - отправка данных в HEX-виде
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_send=80

i2c_read - считывание данных в HEX-виде (0 - на конце ACK; 1 - на конце NACK [конец связи])
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_read=0

Все. Этого достаточно, чтобы подключить к MegaD-2561 любое I2c-устройство.
---

http://ab-log.ru/files/File/i2c-php-lib.zip
Адаптированная под "как бы" I2C API библиотека I2C-PHP
Те, кто ее использует, могут попробовать заменить в коде, например, mod_dev_htu21d.php
define("V", "2"); // Частично аппаратная реализация
на
define("V", "3"); // Аппаратная реализация
Это для примера. Я опускаю, что MegaD-2561 и сам может работать с HTU21D без дополнительных библиотек.

По скорости. По сравнению с частично аппаратной реализацией скорость опроса датчиков выросла в несколько раз. В основном за счет аппаратной реализации считывания данных.
А вот работа с дисплеем ускорилась приблизительно на 25%. Это связано с тем, что в дисплей данные в основном только передаются. А с этим и частично аппаратный режим справлялся неплохо. Данных, которые передаются в дисплей много. А передача осуществляется по типу один байт - один HTTP-запрос.
Чтобы еще ускорить работу необходимо, думаю, реализовать отправку данных пачкой. Это существенно ускорит работу с дисплеем.

alex946
Сообщения: 204
Зарегистрирован: 05 дек 2015, 22:48
Контактная информация:

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

Сообщение alex946 » 30 сен 2016, 20:14

В принципе, в пределах одного TCP-пакета может прокатить. Наверное, этого будет достаточно.

Ответить