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

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

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

Сообщение Andrey_B » 17 янв 2015, 11:45

VladF, спасибо за программу. В целом работает, но есть ряд вопросов.
1. Поскольку мы имеем дело с десктопным приложением, возможно удобнее было бы запускать сканирование устройств при старте программы.
2. Список устройств отсортировать по IP (сейчас 110 стоит выше 14)
3. Если устройство не выбрано и нажать кнопку "Авто" - программа выпадает.
4. Возможно было бы нелишним на кнопки "Прошивка", "Авто", "Загрузить" повесить предупреждающие попап окна, потому что одно неловкое движение и пользователь может немного подпортить конфигурацию Умного Дома.
5. После серии операций программа перестает выполнять действия на нажатие кнопки "Прошивка"
6. Окно журнала нужно то ли расширить, то ли как-то иначе с ним работать. Часто бывает, что не видно что происходит.
7. Есть проблемы с загрузкой конфигурации. Загружается неправильно. Конфигурационный файл сильно отличается от того, что генерирует megad-cfg. Например, на чистом устройстве после считывания и записи конфигурации доп. ADC порты превращаются в IN. В megad-cfg считывание конфигурации основано на парсинге HTML-форм.

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

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

Сообщение Andrey_B » 17 янв 2015, 16:07

http://ab-log.ru/files/File/ip_manager3 ... _beta3.zip
http://ab-log.ru/files/File/ip_manager3 ... a3-hex.zip

Это пробная бета, так как я не вполне уверен в целесообразности (а точнее в логике работы) новой функции.
В этой прошивке реализован функция плавного включения/выключения ШИМ портов.

В данной прошивке плавное включение/выключение происходит как для команд сервера, так и для сценариев по умолчанию.
И хотя основное назначение ШИМ (управление освещением), я не исключаю ситуаций, когда потребуется неплавная установка конкретного значения ШИМ порта или, к примеру, другая скорость изменения значения при управлении сервером. Возможно для плавной (или напротив неплавной) регулировки потребуется добавление семантического модификатора.
Какие есть мысли у общественности?

dimonix
Сообщения: 368
Зарегистрирован: 19 фев 2012, 22:01
Откуда: Сколково

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

Сообщение dimonix » 17 янв 2015, 19:08

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

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

#include <avr/pgmspace.h>

#define PWM_LOG(a) (pgm_read_word_near(pwm_table + a))
/*
    In the table below, the index 0 value corresponds to absence
   of light. The 16 bit value 65535 at index 0 corresponds to the
   match value that should be applied for inverse PWM at this
   light value, i.e. "fully off"
*/

const uint16_t pwm_table[] PROGMEM = {  
        65535,  65515,  65495,  65475,  65455,  65436,  65416,  65396,
        65376,  65356,  65336,  65316,  65294,  65271,  65247,  65222,
        65195,  65168,  65139,  65108,  65077,  65044,  65009,  64973,
        64936,  64898,  64858,  64817,  64774,  64730,  64684,  64637,
        64588,  64538,  64487,  64434,  64379,  64323,  64265,  64205,
        64144,  64082,  64018,  63952,  63884,  63815,  63745,  63672,
        63598,  63522,  63445,  63365,  63285,  63202,  63117,  63031,
        62943,  62854,  62762,  62669,  62574,  62477,  62378,  62277,
        62175,  62071,  61965,  61857,  61747,  61635,  61521,  61406,
        61288,  61169,  61047,  60924,  60799,  60671,  60542,  60411,
        60278,  60143,  60005,  59866,  59725,  59582,  59436,  59289,
        59140,  58988,  58835,  58679,  58521,  58361,  58200,  58035,
        57869,  57701,  57531,  57358,  57183,  57007,  56827,  56646,
        56463,  56277,  56090,  55900,  55707,  55513,  55316,  55118,
        54916,  54713,  54507,  54300,  54089,  53877,  53662,  53445,
        53226,  53005,  52781,  52555,  52326,  52095,  51862,  51626,
        51389,  51148,  50906,  50661,  50413,  50164,  49912,  49657,
        49400,  49141,  48879,  48615,  48348,  48079,  47808,  47534,
        47258,  46979,  46698,  46414,  46128,  45839,  45548,  45254,
        44958,  44659,  44358,  44054,  43748,  43439,  43128,  42814,
        42497,  42178,  41857,  41533,  41206,  40877,  40545,  40210,
        39873,  39534,  39191,  38847,  38499,  38149,  37796,  37441,
        37083,  36722,  36359,  35993,  35624,  35253,  34879,  34502,
        34123,  33741,  33356,  32968,  32578,  32185,  31790,  31392,
        30991,  30587,  30180,  29771,  29359,  28944,  28527,  28106,
        27683,  27257,  26829,  26397,  25963,  25526,  25086,  24644,
        24198,  23750,  23299,  22845,  22388,  21929,  21466,  21001,
        20533,  20062,  19588,  19112,  18632,  18150,  17664,  17176,
        16685,  16191,  15694,  15194,  14691,  14186,  13677,  13166,
        12651,  12134,  11614,  11090,  10564,  10035,  9503,   8968,
        8430,   7889,   7345,   6798,   6248,   5695,   5139,   4580,
        4018,   3453,   2885,   2314,   1740,   1163,   583,    0
};


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

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

Сообщение kod.begemot » 17 янв 2015, 19:14

В этой прошивке плавное включение всегда? Т.е. любое включение ШИМ порта будет плавное?
Буду пробовать, думаю что функция будет востребована, сам хотел такую делать программно.

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

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

Сообщение Andrey_B » 17 янв 2015, 22:00

dimonix, ну любое плавное включение будет бить по глазам меньше, чем когда сразу 100%. Но я соглашусь с вами. Если использовать линейную функцию, то субъективно яркость в самом начале цикла нарастает быстрее, чем в конце. Я не думаю, что в МК стоит использовать табличную функцию. Полагаю, можно обойтись каким-нибудь алгоритмом попроще. Только вот есть опасения, что увеличивая таймаут в начале цикла глаз будет фиксировать ступенчатость изменения яркости.

kod.begemot, в данной версии да. Любое изменение (не только включение/выключение) происходит плавно. Таймаут между изменением 5 мс. Так сказать, пробный вариант.
В идеале необходимо предусмотреть либо команду, которая задает тип управления (резкое, плавное), что более гибко, либо настройку порта.

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

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

Сообщение Andrey_B » 18 янв 2015, 12:38

http://ab-log.ru/files/File/ip_manager3 ... _beta4.zip

Данная прошивка уже размещена на сайте.
Добавлена опция в настройке PWM порта, которая называется Smooth. Именно она определяет (когда установлена) производить ли "аппаратное" плавное изменение или нет.
Плавное изменение обеспечивается как для команд сервера, так и для сценариев по умолчанию.
mega-d-smooth-pwm.gif
mega-d-smooth-pwm.gif (4.94 КБ) 8158 просмотров

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

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

Сообщение kod.begemot » 18 янв 2015, 13:52

Попробовал :)
Работает! Но для светодиодов, всё-же походу придётся делать нелинейных форму изменения... Выглядит сейчас при выключении как задержка реакции на команду. А так вообще прикольно получается..
Вопрос ещё - а этой функцией как нибудь командой управлять можно?
P.S. Хотя, если ограничить максимальное значение ШИМ верхним различимым уровнем яркости задержка не так заметна...

THK
Модератор
Сообщения: 588
Зарегистрирован: 18 мар 2011, 19:00
Откуда: Серпухов, МО

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

Сообщение THK » 18 янв 2015, 14:26

ИМХО Для управления светодиодами достаточно менять шаг приращения яркости по условию в паре точек. Вот здесь можно посмотреть, как реализовано...

Спрошу для интереса, а какая частота ШИМ'а?

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

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

Сообщение Andrey_B » 18 янв 2015, 15:06

kod.begemot, а можете вот эту спец версию попробовать?
http://ab-log.ru/files/File/ip_manager3 ... eta4-1.zip
http://ab-log.ru/files/File/ip_manager3 ... -1-hex.zip
THK писал(а):ИМХО Для управления светодиодами достаточно менять шаг приращения яркости по условию в паре точек.
Вот именно такая же мысль пришла.
Частота ШИМ? Это же надо в даташит лезть. ;)

VladF
Сообщения: 12
Зарегистрирован: 12 янв 2015, 23:21

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

Сообщение VladF » 18 янв 2015, 18:21

Andrey_B, насчет вопросов:
1. Если делать сканирование устройств при запуске программы, то не будет возможности указать IP адрес для сканирования.
2. В следующей версии программы сделаю.
3. Как я и писал, кнопка "Авто" не проверена, в следующей версии все будет исправлено.
4. Если я правильно понял, при нажатии кнопки спрашивать, действительно ли выполнять действие? Сделаю в следующей версии.
5. Если можно, хотелось бы знать каких именно операций, так как программа использует потоки, то она ждет завершения всех действий перед началом следующего.
6. Расширить можно или предложите варианты работы с ним.
7. Да, конфигурация считывается по другому. Когда я ее проверял, то она была идентичной запросам, которые отправляет браузер, а у megad-cfg отличалась. Я взял за основу запросы генерируемые самим браузером(то есть запросы прописанные в прошивке). С дополнительными портами все немного сложнее, могут быть ошибки. Пока не нашел лучшего варианта парсинга HTML средствами C#.

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

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

Сообщение kod.begemot » 18 янв 2015, 18:56

Хм... Почему-то не шьется у меня "offline", когда напрямую указываю .HEX
Онлайн - шьётся аж бегом, а тут пишет
"Donloading firmware... Ok
Connecting ..."
и всё, так и висит.

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

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

Сообщение kod.begemot » 18 янв 2015, 20:45

Сорри, это я чего-сь то запутался, сейчас переписал строку в скрипте на оригинал "из учебника", поменяв IP, всё прошлось.
в заголовке пишет "MegaD-328 by ab-log.ru (fw: 3.28b4)"
шил строкой
php megad-cfg.php --ip 10.10.0.203 --fw megad-328.hex -p sec --ee
файл брал из вложения megad-328_328_beta4-1-hex
Визуально - поменялось, но чуть чуть поведение.
Включается - ощущение что мгновенно, выключается с меньшей задержкой и плавно.
Буду тестировать "на кошках", в смысле посмотрим как жене понравится новый вариант.
Идея очень хорошая, будет востребованно, я считаю.
Из пожеланий - регулируемую скорость хотелось бы попробовать. Хотя чую - на это памяти много надо..
Хотя бы не командой а просто текстовое поле...

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

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

Сообщение Andrey_B » 18 янв 2015, 21:14

С точки зрения кода включение/выключение - одинаковый алгоритм.
По времени включение от 0 до 255 занимает чуть больше секунды. С точки зрения бытового использования, как мне кажется, это вполне нормально.
Другое дело, почему у вас выключается плавно, а включается сразу. А если при 0 выставить сначала, скажем, 5, а потом 255? Будет тоже самое?

Регулировка скорости - это чуть сложнее и действительно потребует больше ресурсов.
Но нужна ли она в действительности. В сложных схемах любую специфическую скорость может легко обеспечить сервер.

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

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

Сообщение kod.begemot » 18 янв 2015, 21:22

Для чего регулировка скорости - ну к примеру... Утром свет в комнате плавно разгорается, иммитируя рассвет? Как идейка?
Или утром вклчаете свет в ванной/туалете/кухне, собираетесь на работу... вначале всё включается на минимуме, постепенно набирая яркость до 100%.
Хотя тут да - согласен - сервер вполне может это сделать, а Мега в данной конфигурации - поможет - сгладив изменения яркости :)
Насчет резкого включения сейчас - не знаю, может мне так кажется, завтра может ткнусь осциллом или если найду свой стрелочный прибор - посмотрю, что там получается с нарастанием..

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

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

Сообщение Andrey_B » 18 янв 2015, 22:57

http://ab-log.ru/files/File/ip_manager3 ... _beta5.zip
http://ab-log.ru/files/File/ip_manager3 ... a5-hex.zip

В автозагрузку не выкладывал. Здесь пришлось принять ряд мер для оптимизации использования памяти. Нужно тестировать.
Добавлена возможность управлять скоростью плавного регулирования ШИМ.
mega-d-smooth-pwm2.gif
mega-d-smooth-pwm2.gif (5.08 КБ) 8058 просмотров
Здесь величина примерно (ОЧЕНЬ ПРИМЕРНО) соответствует секундам. Это время, за которое ШИМ изменяет свое значение от 0 до 255. То есть 1 - самая быстра скорость.
А можно поставить 200 - будет реальный восход. ;)
В общем, получите и распишитесь.

dimik2000
Сообщения: 34
Зарегистрирован: 13 сен 2012, 12:51

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

Сообщение dimik2000 » 19 янв 2015, 00:11

Не понятно зачем расходовать память на то что может сделать сервер?
Может все таки стоило сделать контроль перехода через "0"?

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

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

Сообщение Andrey_B » 19 янв 2015, 00:29

dimik2000, ну как вы это себе представляете в рамках текущей идеологии и модульности?
Между тем:
а) исполнительный модуль с функцией диммирования вовсе не обязательно должен быть построен на симисторах. И здесь не раз приводились работающие схемы.
б) в исполнительном модуле с функцией диммирования может содержаться собственный маленький МК, принимающий сигнал от ШИМ или I2C.

А что касается сервера. Как справедливо замечали тут многие уважаемые пользователи. Зачем нам вообще Web, HTTP, TCP? Ведь все может сервер, зачем тратить память? А ведь на HTML уходит не просто много, а очень много памяти... А затем, что это удобно. Ну вот просто удобно отправить не 255 пакетов с сервера, а один (легче интегрироваться в существующее ПО). Удобно, когда свет плавно регулируется не только при наличии сервера, но и при его отсутствии. Низкоуровневые сервисные функции как раз и задача микроконтроллера. Всевозможные условия, связи, алгоритмы и прочее - вот это надо держать на сервере. А тупо отправлять в цикле сотни пакетов... не уверен.

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

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

Сообщение kod.begemot » 19 янв 2015, 01:07

Прошил. Работает. Удобно, что можно менять скорость, действительно стало удобнее. Выставляю значение "10" - плавность включения становится заметнее. Но при значении 10 много времени уходит до тех пор, пока не начнется снижение яркости.
Не знаю даже, как правильно тут делать... делать разное время нарастания/снижения? Опять память ++
Или чекбокс "LED+", при котором нарастание происходит медленнее, а снижение быстрее?
Мне вообще хотелось бы иметь возможность как-то растянуть ШИМ-диапазон, но подозреваю что тут чисто программным решением не обойтись.
Но вообще классно, скоро подключу датчики движения, с ними будет "вообще тема" :)
А касаемо диммера с ловлей нуля - тут согласен с Андреем, нет смысла и сложно пихать это в мега-д.
Ну максимум отдельный девайс - диммер 7i/7o с управлением по LAN. Но при этом, разумеется, отправлять с сервера порт, значение, ну и время, наверное :) входы - для выключателей, выходы - вход для фазы и 7 выходов "диммированной фазы". А входы - общий (+12 вольт) + входы, а минус 12 вольт на общий входов, тогда меньше проводов и проще подключение - просто кидаем на каждый выключатель один провод от DimMegaD :) второй провод - на массу, и выходы на лампочки тоже "классические" получатся. Из такого девайса надо убрать всё, что относится к аналоговым портам, к цифровым датчикам DHT, не нужна настройка режимов вход/выход (ну только разве что режимы P/R/P&R), думаю память подосвободится..
Хотя - а насколько оно нужно - в основном пригодится только для ламп накаливания... КЛЛ недиммируемые в большинстве, LED на 220 тоже. Галогенки можно неплохо диммировать, но они часто на 12 вольт - тут ловить 0 и не нужно, пойдет и схема классической меги + модуль на мосфетах (я себе собрал такой для своих LED 12v - очень простой)
P.S. размечтался я, конечно.. у нынешнего камня только 3 ШИМ порта... так что облом :(

Sergey Borovkov
Сообщения: 77
Зарегистрирован: 22 ноя 2013, 03:17

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

Сообщение Sergey Borovkov » 19 янв 2015, 04:27

Я когда делал нечто подобное (регулировку яркости подсветки монитора в carpc), изменял каждый раз по-моему на 1/16 от текущего значения, но не меньше чем на 1 и не больше, чем нужно. В итоге имел достаточно плавное регулирование и в полной темноте и на ярком солнце, подобрал, чтобы яркость изменялась в 2 раза за секунду. Понятно, что вместо изменения на 1/16 можно менять на 1/2^n, считается оно просто сдвигом...

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

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

Сообщение Dron » 19 янв 2015, 09:52

dimik2000 писал(а):Может все таки стоило сделать контроль перехода через "0"?
давно об этом мечтаю =)
Andrey_B писал(а):а) исполнительный модуль с функцией диммирования вовсе не обязательно должен быть построен на симисторах. И здесь не раз приводились работающие схемы.
схемы действительно есть. точнее работающий вариант один - к1182мп. работает, регулирует.
"плавное включение-выключение", причём, реализовано железячно.
но у схемы выявился серьёзный недостаток: при отсутствии питании на усройстве, симистр открыт. т.е. когда МегаД выключен, все регулируемые порты с ШИМ светят на полную катушку.
не смертельно, контроллеры всегда включены, но на мой взгляд это неправильно))
Andrey_B писал(а):dimik2000, ну как вы это себе представляете в рамках текущей идеологии и модульности?
а вот именно в рамках текущей идеологии и модульности легко и абсолютно без изменении контроллера:
создаётся новый исполнительный модуль (1-IN_S + 6-IN + 7-OUT_PWM) или (1-IN_S + 13-OUT_PWM), т.е. один вход в исполнительном модуле используется для подачи синусоиды в контроллер.
железячно то это очень просто, а вот программно... даже представить сложно.

Ответить