Альтернативные прошивки MegaD

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
zero
Сообщения: 57
Зарегистрирован: 28 фев 2013, 14:56

Re: Альтернативные прошивки MegaD

Сообщение zero » 13 дек 2014, 22:35

Зачем, если тот же распбери пи стоит дешевле меги и позволяет сделать больше и гибче?

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

Re: Альтернативные прошивки MegaD

Сообщение Andrey_B » 13 дек 2014, 22:51

Мне кажется вопрос тут не столько в мегагерцах (аппаратных ресурсах микроконтроллеров), сколько в возможности быстрого и простого изменения алгоритмов.
Я разделяю точку зрения zero, что вариантов и алгоритмов может быть настолько много, что если и возможно будет как-то формализовать все это на уровне микроконтроллера, пользоваться этим будет скорее всего неудобно. А менять алгоритм, написанный на C, компилировать, прошивать МК все же несколько сложнее, чем зайти на сервер и поправить скрипт на каком-либо высокоуровневом языке. И если рядовой среднестатистический "программист" и даже продвинутый пользователь справится с Bash/Python/PHP/Basic/Perl и т.д. и т.п (причем инструмент он может выбрать сам, с каким он работал), то порог вхождения в клуб любителей микроконтроллеров чуть выше. И это только один довод за сервер (нечто под управлением полноценной ОС). А доводов этих много.
foolhome, прошивка для управления двигателем, какая бы сложная она ни была, это все же нечто статичное. Она разрабатывалась в рамках определенных задач и работает с определенным оборудованием. А вот в части Умного Дома, тут не все так однозначно.

zero, но я призываю вас с пониманием отнестись к альтернативной точке зрения. А мое мнение следующее. Если бы я ставил задачу сделать из Мегадевайса сервер, то идеология устройства была принципиально другой. Но, впрочем, посмотрим что из всего это выйдет.

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

Re: Альтернативные прошивки MegaD

Сообщение Andrey_B » 13 дек 2014, 23:00

zero писал(а):Зачем, если тот же распбери пи стоит дешевле меги и позволяет сделать больше и гибче?
Блок управления двигателем стоит значительно дешевле приводов, коробки передач и колес.
Он, конечно в миллион раз умнее, но на процессоре без колес не уедешь ;) Ваше сравнение все же не совсем корректно.
Коллеги говорят, что вместо электронного блока управления двигателем (это я попытаюсь провести аналогию) можно уехать и на механическом карбюраторе. Это ведь надежно!
Ну, в некотором роде они правы. Есть и такая точка зрения. Ну а дальше каждый должен решить самостоятельно - подкручивать жиклеры или править скрипты на сервере. И в том и в другом варианте есть свои плюсы и минусы.
Я как и вы считаю, что централизация и сервер - это, конечно, потенциально опасно. Но это меньшее зло, чем куча автономных устройств, которыми сложнее управлять. При этом я не настаиваю, что разработка абсолютно автономной прошивки - это неправильно.

zero
Сообщения: 57
Зарегистрирован: 28 фев 2013, 14:56

Re: Альтернативные прошивки MegaD

Сообщение zero » 13 дек 2014, 23:53

Andrey_B писал(а): zero, но я призываю вас с пониманием отнестись к альтернативной точке зрения. А мое мнение следующее. Если бы я ставил задачу сделать из Мегадевайса сервер, то идеология устройства была принципиально другой. Но, впрочем, посмотрим что из всего это выйдет.
Извините, если мои посты показались резкими. Ни кого не хочу обидеть, лишь доношу свою точку зрения.
Andrey_B писал(а):Блок управления двигателем стоит значительно дешевле приводов, коробки передач и колес.
Он, конечно в миллион раз умнее, но на процессоре без колес не уедешь ;) Ваше сравнение все же не совсем корректно.
Коллеги говорят, что вместо электронного блока управления двигателем (это я попытаюсь провести аналогию) можно уехать и на механическом карбюраторе. Это ведь надежно!
Ну, в некотором роде они правы. Есть и такая точка зрения. Ну а дальше каждый должен решить самостоятельно - подкручивать жиклеры или править скрипты на сервере. И в том и в другом варианте есть свои плюсы и минусы.
Я как и вы считаю, что централизация и сервер - это, конечно, потенциально опасно. Но это меньшее зло, чем куча автономных устройств, которыми сложнее управлять. При этом я не настаиваю, что разработка абсолютно автономной прошивки - это неправильно.
Выражаясь Вашими примерами, коллеги просят научить карбюратор заменять электронный блок, что не правильно ИМХО. Вы меня не совсем верно поняли, я не призываю заменять мегу кубибоардом. Все должно работать на своих местах. Продолжая Ваш пример - можно вместо руля колесо прикрутить и оно даже как-то работать будет, но целесообразность этой затеи весьма сомнительна. Колесо все же предназначено для езды по дороге.

В целом моя точка зрения почти полностью совпадает с Вашей.

alexsis_76

Re: Альтернативные прошивки MegaD

Сообщение alexsis_76 » 14 дек 2014, 04:37

Полностью поддерживаю сторонников безсерверной концепции, необходим один модуль командир, сценарист, пусть даже на базе мегад328, но с прошивкой раздающей просто команды другим солдатам (юнитам), условий не так уже и много:
Статус охраны:
1. Сигнализация отключена
2. Охрана периметра участка (включена вечером и ночью)
3. Охрана контура дома (включается ночью)
4. Полная охрана (включены все периметры плюс движение в доме)
Статус режимов освещения:
1. День
2. Вечер
3. Ночь
4. Утро
Статус освещенности
1. Светло
2. Темно
3. Сумерки
Ну и простецкий таймер с полями action по времени
например в 00-00 включить контур периметра дома
в 01-00 перевести освещение в режим плавного розжига
ну и т.д., жаль что среди сторонников нет нормального СИшника
по сути простейший алгоритм , прицепляем к устройству фотодиод, заводим часы , можно прицепить что то из внешних часов можно сделать на контроллере например вот
// I/O register definitions for the ATmega103
#include <mega103.h>
// bit definitions for the TIMSK register
#define TOIE0 0
#define OCIE0 1
// bit definitions for the ASSR register
#define AS0 3

char not_leap(void);

typedef struct{
unsigned char second; //enter the current time, date, month, and year
unsigned char minute;
unsigned char hour;
unsigned char date;
unsigned char month;
unsigned int year;
}time;

time t;

void main(void)
{
// init_rtc();
int temp0,temp1;

for(temp0=0;temp0<0x0040;temp0++) // Wait for external clock crystal to stabilize
{
for(temp1=0;temp1<0xFFFF;temp1++);
}
DDRB=0xFF;
TIMSK &=~((1<<TOIE0)|(1<<OCIE0)); //Disable TC0 interrupt
ASSR |= (1<<AS0); //set Timer/Counter0 to be asynchronous from the CPU clock
//with a second external clock(32,768kHz)driving it.
TCNT0 = 0x00;
TCCR0 = 0x05; //prescale the timer to be clock source / 128 to make it
//exactly 1 second for every overflow to occur
while(ASSR&0x07); //Wait until TC0 is updated
TIMSK |= (1<<TOIE0); //set 8-bit Timer/Counter0 Overflow Interrupt Enable
#asm("sei") //set the Global Interrupt Enable Bit

while(1)
{
MCUCR = 0x38; //entering sleeping mode: power save mode
#asm("sleep") //will wake up from time overflow interrupt
#asm("nop")
OCR0 = 0; //Write dummy value to Output Compare register
while(ASSR&0x02); //Wait until OCR0 is updated
}
}

interrupt [TIM0_OVF] void counter(void) //overflow interrupt vector
{
if (++t.second==60) //keep track of time, date, month, and year
{
t.second=0;
if (++t.minute==60)
{
t.minute=0;
if (++t.hour==24)
{
t.hour=0;
if (++t.date==32)
{
t.month++;
t.date=1;
}
else if (t.date==31)
{
if ((t.month==4) || (t.month==6) || (t.month==9) || (t.month==11))
{
t.month++;
t.date=1;
}
}
else if (t.date==30)
{
if(t.month==2)
{
t.month++;
t.date=1;
}
}
else if (t.date==29)
{
if((t.month==2) && (not_leap()))
{
t.month++;
t.date=1;
}
}
if (t.month==13)
{
t.month=1;
t.year++;
}
}
}
}
PORTB=~(((t.second&0x01)|t.minute<<1)|t.hour<<7);


}

char not_leap(void) //check for leap year
{
if (!(t.year%100))
return (char)(t.year%400);
else
return (char)(t.year%4);
}
затем смотрим ,cверяем,включаем, выключаем

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

Re: Альтернативные прошивки MegaD

Сообщение kod.begemot » 15 дек 2014, 22:04

Интересная дискуссия пошла!
Касаемо моих "хотелок":
Я хотел чуть-чуть расширить логику - добавить 2 зависимых [от сервера] поля Action/NetAction, и увеличить их размер. Я не предлагаю отказаться от сервера. Я предлагаю имеющуюся минимальную логику чуть расширить и всё. Для обеспечения примитивного функционирования системы в режиме аварийном - при неисправности/сбое сервера. Ну или для совсем уж простых задач, не требующих сервера как такового.
По большому счету - уже добавление чекбокса зависимости Action, которую предлагает zero в ветке основной прошивки - и есть версия этого самого расширения логики.

Насчет "Меги-командира", идею которого предлагает foolhome я одобряю как дополнительное устройство для сети умного дома, возможно это будет неплохое устройство, кому-то оно подойдёт для простой автоматизации, возможно посодейтвует ещё более широкому применению МегаД - если устройство будет намного проще в конфигурировании минимального сервера. К тому-же такое устройство проще питать бесперебойно (хотя да, Raspberry тоже недорогое и малопотребляющее устройство).

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: Альтернативные прошивки MegaD

Сообщение foolhome » 16 дек 2014, 00:04

/* Изменения стандартной прокрутки на полоску */

@media screen and (-webkit-min-device-pixel-ratio:0) {
.metro-layout .content { overflow: auto; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track:enabled { background-color: #0d0d0d; }
::-webkit-scrollbar-thumb:vertical { background-color: #fff; }
::-webkit-scrollbar-thumb:horizontal { background-color: #fff; }
}

Нашел, вставляем выше написанное в текст html и получаем нормальную полоску прокрутки.

Теперь по делу, мне видеться, что отображать состояние входов будет уместным так как оно есть, если на входе 0, то LOW, если 1, то HI, а не так как есть сейчас, входы подтянуты на землю, а они все HI, ну бред полный. И еще бы хотелось чтоб данные состояния на страничке обновлялись самостоятельно хоть раз в секунду-две

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

Re: Альтернативные прошивки MegaD

Сообщение GruNT » 16 дек 2014, 02:06

foolhome писал(а):Теперь по делу, мне видеться, что отображать состояние входов будет уместным так как оно есть, если на входе 0, то LOW, если 1, то HI, а не так как есть сейчас, входы подтянуты на землю, а они все HI, ну бред полный. И еще бы хотелось чтоб данные состояния на страничке обновлялись самостоятельно хоть раз в секунду-две
Так и задумывалось :roll: Переменные перепутал и не заметил :roll: ..Исправлю.
Все замечания будут исправлены к следующей версии. Сейчас времени просто нет. К следующей недели думаю сделаю...

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

Re: Альтернативные прошивки MegaD

Сообщение GruNT » 16 дек 2014, 02:17

foolhome писал(а):/* Изменения стандартной прокрутки на полоску */

@media screen and (-webkit-min-device-pixel-ratio:0) {
.metro-layout .content { overflow: auto; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track:enabled { background-color: #0d0d0d; }
::-webkit-scrollbar-thumb:vertical { background-color: #fff; }
::-webkit-scrollbar-thumb:horizontal { background-color: #fff; }
}

Нашел, вставляем выше написанное в текст html и получаем нормальную полоску прокрутки.
Просто удалите
html {
overflow-y: scroll;
}
;) И не надо ниче добавлять! (скрол исчезнет)

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: Альтернативные прошивки MegaD

Сообщение foolhome » 16 дек 2014, 23:24

в режиме ADC, значения VAL через html не устанавливаются, причем в стандартном интерфейсе установить можно, но при обновлении странички html, в стандартном тоже сбрасываются.

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

Re: Альтернативные прошивки MegaD

Сообщение GruNT » 18 дек 2014, 15:01

foolhome писал(а):в режиме ADC, значения VAL через html не устанавливаются, причем в стандартном интерфейсе установить можно, но при обновлении странички html, в стандартном тоже сбрасываются.
В новой версии я это исправил ;) Выложу на следующей неделе.

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

Re: Альтернативные прошивки MegaD

Сообщение GruNT » 26 дек 2014, 16:04

Исправленно неправильное отображение HI/LOW
Убрано ADC из списка Type для портов без АЦП
Добавлен верхний заголовок
Добавленно считывание версий Html/MegaD и проверка взаимной совместимости!
Исправлен встроенный датчик температуры
foolhome писал(а):в режиме ADC, значения VAL через html не устанавливаются, причем в стандартном интерфейсе установить можно, но при обновлении странички html, в стандартном тоже сбрасываются.
исправил...

Пожалуй можно теперь 1-ware помучать на DS2482-100. :)
Вложения
main.rar
Только изменения
(15.3 КБ) 358 скачиваний
web.rar
(75.63 КБ) 357 скачиваний

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: Альтернативные прошивки MegaD

Сообщение foolhome » 26 дек 2014, 18:23

что-то не собирается
Вложения
новый-2.jpg
новый-2.jpg (157.78 КБ) 10399 просмотров

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

Re: Альтернативные прошивки MegaD

Сообщение GruNT » 26 дек 2014, 18:51

foolhome писал(а):что-то не собирается
я надеюсь вы остальные файлы то в проект добавили? ;) Это только тот что я изменил!
Вложения
MegaD.rar
)))
(118.24 КБ) 357 скачиваний

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: Альтернативные прошивки MegaD

Сообщение foolhome » 26 дек 2014, 19:34

Конечно же добавил, проверил старую прошивку - все собралось, а новая нет, ругается на ошибки посмотри скриншот, внизу все видно на какие строчки ругается

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

Re: Альтернативные прошивки MegaD

Сообщение GruNT » 27 дек 2014, 12:18

foolhome писал(а):Конечно же добавил, проверил старую прошивку - все собралось, а новая нет, ругается на ошибки посмотри скриншот, внизу все видно на какие строчки ругается
Исправил
Вложения
main.rar
(15.3 КБ) 351 скачивание

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: Альтернативные прошивки MegaD

Сообщение foolhome » 28 дек 2014, 23:51

Собралась, работает, спасибо, тестирую.

kID
Сообщения: 69
Зарегистрирован: 29 май 2013, 19:36
Откуда: Новосибирск

Re: Альтернативные прошивки MegaD

Сообщение kID » 29 дек 2014, 05:46

Спасибо за новую версию
Осталась старая проблема - при первом обращении к DHT получаем нули, так же пару раз нули вылетали и в произвольное время.
На старой web страничке у последнего порта коверкается имя, при этом
при компиляции появился варнинг
websrv_help_functions.c:68: warning: control reaches end of non-void function
Раньше такое бывало, когда я пытался добавить еще один порт и увеличивал IO_SIZE до 17.
Видимо пришло время резать старый web, освобождать место и возвращать загрузку по сети.
Уж очень эта опция удобна.
Вложения
port.jpg
port.jpg (59.32 КБ) 10229 просмотров

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

Re: Альтернативные прошивки MegaD

Сообщение GruNT » 29 дек 2014, 22:34

kID писал(а):Спасибо за новую версию
Осталась старая проблема - при первом обращении к DHT получаем нули, так же пару раз нули вылетали и в произвольное время.
На старой web страничке у последнего порта коверкается имя, при этом
при компиляции появился варнинг
websrv_help_functions.c:68: warning: control reaches end of non-void function
Раньше такое бывало, когда я пытался добавить еще один порт и увеличивал IO_SIZE до 17.
Видимо пришло время резать старый web, освобождать место и возвращать загрузку по сети.
Уж очень эта опция удобна.
Загрузка будет...))) Поясните проблему подробнее... У меня таковой нет :?
Вложения
Безымянный.png
Безымянный.png (31.23 КБ) 10183 просмотра

GruNT
Сообщения: 281
Зарегистрирован: 27 авг 2014, 16:42

Re: Альтернативные прошивки MegaD

Сообщение GruNT » 13 янв 2015, 18:26

Закинул интерфейс... временно... Решил плату наконец-то собрать :) Т.к. нет программатора...сделал USBusp.
Случайно прошил кривые фьюзы у Atmega теперь «Atmega fusebit doctor» собирать надо :? .... А там почитав захотелось еще и UART шнурок сделать для обмена контроллера с компом (для отладки и не только). Короче все сделаю, а потом продолжу :D
P.S. Кстати появилась идея вживить в интерфейс "megad-cfg.php", ну чтоб не отходя от кассы так сказать....Думаю смогу на java перевести. Не всем же через php хочется прошивку обновлять ;)
Последний раз редактировалось GruNT 13 янв 2015, 18:46, всего редактировалось 1 раз.

Ответить