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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Andrey_B
Администратор
Сообщения: 4013
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 13 апр 2019, 14:02

https://ab-log.ru/files/File/megad-2561 ... a7-hex.zip

- Добавлена поддержка датчика освещенности OPT3001

OPT3001 - это высокоточный датчик, измеряющий интенсивность света в видимом человеку спектре. Заявлены хорошие характеристики.
Отличаются ли его показания от показаний MAX44009, покажет тестирование.
С точки зрения работы в паре с MegaD-2561 датчик OPT3001 лучше тем, что немного быстрее отдает результат, но хуже тем, что требует инициализации, а значит обязательного выбора "Dev: OPT3001" в настройках порта. И, кроме того, он дороже.

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

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

Сообщение Andrey_B » 13 апр 2019, 21:30

Краткое сравнительное тестирование датчиков освещенности OPT3001 и MAX44009.

opt3001-vs-max44009-1.png
opt3001-vs-max44009-1.png (2.46 КБ) 727 просмотров

Красный график - OPT3001, зеленый - MAX44009.
На большом временном отрезке в целом форма графиков идентична. Но люксов у сенсора OPT3001 получается больше.
За неимением эталонного прибора трудно сказать, какие значения более правильные.

opt3001-vs-max44009-2.png
opt3001-vs-max44009-2.png (2.34 КБ) 727 просмотров

Но вот в условиях низкой освещенности (0-0.2 люкса) хорошо видно, что график OPT3001 плавнее, совсем нет ступенек. Похоже, этот датчик чувствительнее и с более высокой разрешающей способностью. Где-то в узких задачах, где требуется высокая чувствительность при сверхнизком освещении, OPT3001 будет более полезен. В остальном же и в разрезе практического применения в системах домашней автоматизации оба датчика будут работать хорошо.

pppkadaf
Сообщения: 26
Зарегистрирован: 01 ноя 2017, 20:39

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

Сообщение pppkadaf » 14 апр 2019, 07:37

Драйверов на 7 сегментные дисплее с I2C я не нашел. Все делают на MAX7219/MAX7221, а это SPI/Microwire или TM1637, а это "two-wire serial interface (CLK, DIO)".
Т.е. без поддержки со стороны контроллера не обойтись.

Андрей реально добавить протокол для TM1637 в прошивку?
Даташит на TM1637

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

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

Сообщение Andrey_B » 14 апр 2019, 11:45

"Two-wire serial interface" - это тот же I2C, прозванный так из-за некогда существующих лицензионных сложностей.
Вопрос в другом. Если вы собираетесь выводить просто цифры, контроллер, наверное, сможет чем-то помочь. А если произвольные символы, то будет проще взять библиотеку I2C-PHP и управлять отдельными сегментами дисплея через I2C-API. Получится немногим медленнее. В данном случае передается мало информации. Я бы сказал, что это тот случай, когда использование I2C-API оправдано.

alexsis_76
Сообщения: 1062
Зарегистрирован: 26 авг 2011, 05:09
Откуда: Забайкальский край п Оловянная

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

Сообщение alexsis_76 » 14 апр 2019, 12:59

В данном случае передается мало информации
тут вопрос в другом, эти индикаторы позволяют реализовать только динамическую индикацию, если использовать один контроллер то он должен очень шустро шевелить ногами что бы избежать мигания символов. Должно поддерживаться местное управление индикатором, не о каком управлении скриптом не может быть и речи.

pppkadaf
Сообщения: 26
Зарегистрирован: 01 ноя 2017, 20:39

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

Сообщение pppkadaf » 14 апр 2019, 15:03

Andrey_B писал(а):
14 апр 2019, 11:45
"Two-wire serial interface" - это тот же I2C"
Если это так, то PHP-I2C достаточно. Чтобы контроллер сам выводил инфу на дисплей в моем случае не нужно.
Закажу модуль, попробую.

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

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

Сообщение Andrey_B » 14 апр 2019, 15:06

pppkadaf писал(а):
14 апр 2019, 15:03
Закажу модуль, попробую.
Да, я тоже попробую.

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

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

Сообщение Andrey_B » 14 апр 2019, 15:28

Рассвет.

opt3001-vs-max44009-31.png
opt3001-vs-max44009-31.png (2.33 КБ) 648 просмотров

OPT3001 - красный, MAX44009 - зеленый.

pppkadaf
Сообщения: 26
Зарегистрирован: 01 ноя 2017, 20:39

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

Сообщение pppkadaf » 15 апр 2019, 20:03

Andrey_B писал(а):
11 апр 2019, 19:55
// Компенсированная и скорректированная температура термопары
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=mcp9600
Возможно добавить в get запрос параметр addr, чтобы на один порт несколько модулей подключить?

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

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

Сообщение Andrey_B » 16 апр 2019, 10:28

https://ab-log.ru/files/File/megad-2561 ... a8-hex.zip

pppkadaf, попробуйте
http://192.168.0.14/sec/?pt=31&scl=30&i ... 00&addr=ce

"addr" - 8-битный адрес в HEX! 7-бит адреса [7:1] и бит записи "0" [0].
Именно в таком формате устройства исторически отображаются по команде "scan". Чтобы не возникло путаницы.
Адресация пока работает только для MCP9600.

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

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

Сообщение Andrey_B » 16 апр 2019, 10:38

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

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

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

Сообщение Andrey_B » 16 апр 2019, 11:10

https://ab-log.ru/files/File/megad-2561 ... a9-hex.zip

Теперь I2C-адресация соответствует общим представлениям и спецификации.
Адрес 7-битный [7:1] или иначе A6-A0 без бита направления (R/W).

http://192.168.0.14/sec/?pt=31&scl=30&i ... 00&addr=67
0x67 => 1100 111

pppkadaf
Сообщения: 26
Зарегистрирован: 01 ноя 2017, 20:39

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

Сообщение pppkadaf » 16 апр 2019, 12:26

Отлично. Спасибо.
На выходных соберу вместе 5 модулей и попробую. У этих модулей не удобно адрес задавать, нужно внешний делитель напряжения делать, могли бы на плате развести сразу.

martiniman
Сообщения: 225
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

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

Сообщение martiniman » 16 апр 2019, 17:10

Andrey_B, посмотрите пожалуйста видео, такое мерцание прошивкой возможно победить?
Снял на айфон в ЗАМЕДЛЕННОМ режиме, это вроде 120 кадров в сек.
https://www.dropbox.com/s/u8j0oi0r5uho5 ... 1.mp4?dl=0
Лампа ИКЕЯ LEDARE LED GU10 600lm, обзор делали на lamptest.ru

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

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

Сообщение Andrey_B » 16 апр 2019, 17:32

Прошивка контроллера сама ничего не регулирует. Она только формирует сигнал ШИМ с определенной частотой.
Если речь идет о модуле MegaD-8I7O-SD, то принимает управляющий ШИМ-сигнал и регулирует нагрузку микросхема К1182ПМ1Р. Как-то повлиять на этот процесс прошивка не может.
С помощью прошивки основного микроконтроллера можно только менять частоту ШИМ.

Igor78
Сообщения: 131
Зарегистрирован: 26 янв 2015, 14:44
Откуда: Москва

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

Сообщение Igor78 » 18 апр 2019, 18:57

Andrey_B писал(а):
09 апр 2019, 12:13
...
- Добавлена поддержка I2C-энкодера. Подробнее.
Андрей, а как правильно настроить Мегу, чтобы управлять освещением только через сервер, также как RGB подсветкой энкодера?

И еще заметил такую вещь, если отправить на Мегу команду типа ...?pt=8&scl=9&i2c_dev=encoder&rgb=0000FF (включить синий на максимум), получаю от Меги ответ 0000F , т.е. куда-то пропадает последняя F, да и горит синий не очень ярко...

Прошивка MegaD-2561 by ab-log.ru (fw: 4.35b9)
С уважением, Игорь

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

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

Сообщение Andrey_B » 19 апр 2019, 12:22

Поправил.
https://ab-log.ru/files/File/megad-2561 ... a1-hex.zip

Что касается управления через сервер. Изначально я хотел предусмотреть такую возможность. Но выяснилось, что работает это не очень. Энкодер слишком быстро генерирует прерывания. Связка контроллер-сервер-ПО не успевает.
Контроллер отправляет сообщение о событии, сервер запрашивает состояние счетчика, контроллер отправляет состояние счетчика, сервер отправляет команду выходу, сервер отправляет команду на изменение подсветки. Вот это все не успевает за вращением ручки. Порт регулируется не плавно. Я не стал анонсировать этот режим и убрал из прошивки функцию запроса состояния счетчика. Ее можно вернуть, но вам вряд ли понравится.

Igor78
Сообщения: 131
Зарегистрирован: 26 янв 2015, 14:44
Откуда: Москва

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

Сообщение Igor78 » 20 апр 2019, 08:53

Спасибо.

Попробую протестировать работу через сервер (у меня большенство диммируемого света на PCA9685), указав какой-нибудь PWM порт в качестве балласта..
С уважением, Игорь

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

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

Сообщение Andrey_B » 20 апр 2019, 09:48

Как оказалось, функцию считывания значения счетчика я из прошивки не убирал.
Алгоритм примерно такой:

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

if ( $_GET['pt'] == 35 )
{
	$cnt = file_get_contents("http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=encoder");
	file_get_contents("http://192.168.0.14/sec/?cmd=13:$cnt");
}
Но здесь нет обработки "нажатия" на ручку энкодера.
Нажатие можно кодировать звездочкой, предшествующей значению счетчика, но я бы на вашем месте сперва оценил работоспособность такого режима.
Дело в том, что весьма велика вероятность "затыка". Почти 100%. Энкодер работает по такому принципу. Он дергает порт прерывания (в примерах P35) и не отпускает его, пока контроллер не считает регистр ESTATUS. Когда энкодером управляет сервер, при резком вращении ручки достаточно потеряться какому-нибудь пакету (а их генерируется огромное количество, и возникает что-то вроде коллизии на уровне сетевого стэка), чтобы P35 остался в ON. Это похоже на зависание энкодера, но зависанием не является. Пока не знаю, что с этим можно сделать, как эффективно компенсировать. Понятно, что когда мастером выступает сам контроллер, то ничего такого быть не может, и все работает стабильно.

pppkadaf
Сообщения: 26
Зарегистрирован: 01 ноя 2017, 20:39

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

Сообщение pppkadaf » 21 апр 2019, 05:43

Igor78 писал(а):
20 апр 2019, 08:53
Спасибо.

Попробую протестировать работу через сервер (у меня большенство диммируемого света на PCA9685), указав какой-нибудь PWM порт в качестве балласта..
А после PCA9685 чем диммируете?

Ответить