Альтернативные прошивки MegaD
Re: Альтернативные прошивки MegaD
Зачем, если тот же распбери пи стоит дешевле меги и позволяет сделать больше и гибче?
Re: Альтернативные прошивки MegaD
Мне кажется вопрос тут не столько в мегагерцах (аппаратных ресурсах микроконтроллеров), сколько в возможности быстрого и простого изменения алгоритмов.
Я разделяю точку зрения zero, что вариантов и алгоритмов может быть настолько много, что если и возможно будет как-то формализовать все это на уровне микроконтроллера, пользоваться этим будет скорее всего неудобно. А менять алгоритм, написанный на C, компилировать, прошивать МК все же несколько сложнее, чем зайти на сервер и поправить скрипт на каком-либо высокоуровневом языке. И если рядовой среднестатистический "программист" и даже продвинутый пользователь справится с Bash/Python/PHP/Basic/Perl и т.д. и т.п (причем инструмент он может выбрать сам, с каким он работал), то порог вхождения в клуб любителей микроконтроллеров чуть выше. И это только один довод за сервер (нечто под управлением полноценной ОС). А доводов этих много.
foolhome, прошивка для управления двигателем, какая бы сложная она ни была, это все же нечто статичное. Она разрабатывалась в рамках определенных задач и работает с определенным оборудованием. А вот в части Умного Дома, тут не все так однозначно.
zero, но я призываю вас с пониманием отнестись к альтернативной точке зрения. А мое мнение следующее. Если бы я ставил задачу сделать из Мегадевайса сервер, то идеология устройства была принципиально другой. Но, впрочем, посмотрим что из всего это выйдет.
Я разделяю точку зрения zero, что вариантов и алгоритмов может быть настолько много, что если и возможно будет как-то формализовать все это на уровне микроконтроллера, пользоваться этим будет скорее всего неудобно. А менять алгоритм, написанный на C, компилировать, прошивать МК все же несколько сложнее, чем зайти на сервер и поправить скрипт на каком-либо высокоуровневом языке. И если рядовой среднестатистический "программист" и даже продвинутый пользователь справится с Bash/Python/PHP/Basic/Perl и т.д. и т.п (причем инструмент он может выбрать сам, с каким он работал), то порог вхождения в клуб любителей микроконтроллеров чуть выше. И это только один довод за сервер (нечто под управлением полноценной ОС). А доводов этих много.
foolhome, прошивка для управления двигателем, какая бы сложная она ни была, это все же нечто статичное. Она разрабатывалась в рамках определенных задач и работает с определенным оборудованием. А вот в части Умного Дома, тут не все так однозначно.
zero, но я призываю вас с пониманием отнестись к альтернативной точке зрения. А мое мнение следующее. Если бы я ставил задачу сделать из Мегадевайса сервер, то идеология устройства была принципиально другой. Но, впрочем, посмотрим что из всего это выйдет.
Re: Альтернативные прошивки MegaD
Блок управления двигателем стоит значительно дешевле приводов, коробки передач и колес.zero писал(а):Зачем, если тот же распбери пи стоит дешевле меги и позволяет сделать больше и гибче?
Он, конечно в миллион раз умнее, но на процессоре без колес не уедешь Ваше сравнение все же не совсем корректно.
Коллеги говорят, что вместо электронного блока управления двигателем (это я попытаюсь провести аналогию) можно уехать и на механическом карбюраторе. Это ведь надежно!
Ну, в некотором роде они правы. Есть и такая точка зрения. Ну а дальше каждый должен решить самостоятельно - подкручивать жиклеры или править скрипты на сервере. И в том и в другом варианте есть свои плюсы и минусы.
Я как и вы считаю, что централизация и сервер - это, конечно, потенциально опасно. Но это меньшее зло, чем куча автономных устройств, которыми сложнее управлять. При этом я не настаиваю, что разработка абсолютно автономной прошивки - это неправильно.
Re: Альтернативные прошивки MegaD
Извините, если мои посты показались резкими. Ни кого не хочу обидеть, лишь доношу свою точку зрения.Andrey_B писал(а): zero, но я призываю вас с пониманием отнестись к альтернативной точке зрения. А мое мнение следующее. Если бы я ставил задачу сделать из Мегадевайса сервер, то идеология устройства была принципиально другой. Но, впрочем, посмотрим что из всего это выйдет.
Выражаясь Вашими примерами, коллеги просят научить карбюратор заменять электронный блок, что не правильно ИМХО. Вы меня не совсем верно поняли, я не призываю заменять мегу кубибоардом. Все должно работать на своих местах. Продолжая Ваш пример - можно вместо руля колесо прикрутить и оно даже как-то работать будет, но целесообразность этой затеи весьма сомнительна. Колесо все же предназначено для езды по дороге.Andrey_B писал(а):Блок управления двигателем стоит значительно дешевле приводов, коробки передач и колес.
Он, конечно в миллион раз умнее, но на процессоре без колес не уедешь Ваше сравнение все же не совсем корректно.
Коллеги говорят, что вместо электронного блока управления двигателем (это я попытаюсь провести аналогию) можно уехать и на механическом карбюраторе. Это ведь надежно!
Ну, в некотором роде они правы. Есть и такая точка зрения. Ну а дальше каждый должен решить самостоятельно - подкручивать жиклеры или править скрипты на сервере. И в том и в другом варианте есть свои плюсы и минусы.
Я как и вы считаю, что централизация и сервер - это, конечно, потенциально опасно. Но это меньшее зло, чем куча автономных устройств, которыми сложнее управлять. При этом я не настаиваю, что разработка абсолютно автономной прошивки - это неправильно.
В целом моя точка зрения почти полностью совпадает с Вашей.
Re: Альтернативные прошивки MegaD
по сути простейший алгоритм , прицепляем к устройству фотодиод, заводим часы , можно прицепить что то из внешних часов можно сделать на контроллере например вотПолностью поддерживаю сторонников безсерверной концепции, необходим один модуль командир, сценарист, пусть даже на базе мегад328, но с прошивкой раздающей просто команды другим солдатам (юнитам), условий не так уже и много:
Статус охраны:
1. Сигнализация отключена
2. Охрана периметра участка (включена вечером и ночью)
3. Охрана контура дома (включается ночью)
4. Полная охрана (включены все периметры плюс движение в доме)
Статус режимов освещения:
1. День
2. Вечер
3. Ночь
4. Утро
Статус освещенности
1. Светло
2. Темно
3. Сумерки
Ну и простецкий таймер с полями action по времени
например в 00-00 включить контур периметра дома
в 01-00 перевести освещение в режим плавного розжига
ну и т.д., жаль что среди сторонников нет нормального СИшника
затем смотрим ,cверяем,включаем, выключаем// 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);
}
-
- Сообщения: 400
- Зарегистрирован: 21 сен 2013, 00:38
Re: Альтернативные прошивки MegaD
Интересная дискуссия пошла!
Касаемо моих "хотелок":
Я хотел чуть-чуть расширить логику - добавить 2 зависимых [от сервера] поля Action/NetAction, и увеличить их размер. Я не предлагаю отказаться от сервера. Я предлагаю имеющуюся минимальную логику чуть расширить и всё. Для обеспечения примитивного функционирования системы в режиме аварийном - при неисправности/сбое сервера. Ну или для совсем уж простых задач, не требующих сервера как такового.
По большому счету - уже добавление чекбокса зависимости Action, которую предлагает zero в ветке основной прошивки - и есть версия этого самого расширения логики.
Насчет "Меги-командира", идею которого предлагает foolhome я одобряю как дополнительное устройство для сети умного дома, возможно это будет неплохое устройство, кому-то оно подойдёт для простой автоматизации, возможно посодейтвует ещё более широкому применению МегаД - если устройство будет намного проще в конфигурировании минимального сервера. К тому-же такое устройство проще питать бесперебойно (хотя да, Raspberry тоже недорогое и малопотребляющее устройство).
Касаемо моих "хотелок":
Я хотел чуть-чуть расширить логику - добавить 2 зависимых [от сервера] поля Action/NetAction, и увеличить их размер. Я не предлагаю отказаться от сервера. Я предлагаю имеющуюся минимальную логику чуть расширить и всё. Для обеспечения примитивного функционирования системы в режиме аварийном - при неисправности/сбое сервера. Ну или для совсем уж простых задач, не требующих сервера как такового.
По большому счету - уже добавление чекбокса зависимости Action, которую предлагает zero в ветке основной прошивки - и есть версия этого самого расширения логики.
Насчет "Меги-командира", идею которого предлагает foolhome я одобряю как дополнительное устройство для сети умного дома, возможно это будет неплохое устройство, кому-то оно подойдёт для простой автоматизации, возможно посодейтвует ещё более широкому применению МегаД - если устройство будет намного проще в конфигурировании минимального сервера. К тому-же такое устройство проще питать бесперебойно (хотя да, Raspberry тоже недорогое и малопотребляющее устройство).
Re: Альтернативные прошивки MegaD
/* Изменения стандартной прокрутки на полоску */
@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, ну бред полный. И еще бы хотелось чтоб данные состояния на страничке обновлялись самостоятельно хоть раз в секунду-две
@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, ну бред полный. И еще бы хотелось чтоб данные состояния на страничке обновлялись самостоятельно хоть раз в секунду-две
Re: Альтернативные прошивки MegaD
Так и задумывалось Переменные перепутал и не заметил ..Исправлю.foolhome писал(а):Теперь по делу, мне видеться, что отображать состояние входов будет уместным так как оно есть, если на входе 0, то LOW, если 1, то HI, а не так как есть сейчас, входы подтянуты на землю, а они все HI, ну бред полный. И еще бы хотелось чтоб данные состояния на страничке обновлялись самостоятельно хоть раз в секунду-две
Все замечания будут исправлены к следующей версии. Сейчас времени просто нет. К следующей недели думаю сделаю...
Re: Альтернативные прошивки MegaD
Просто удалите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;
}
И не надо ниче добавлять! (скрол исчезнет)
Re: Альтернативные прошивки MegaD
в режиме ADC, значения VAL через html не устанавливаются, причем в стандартном интерфейсе установить можно, но при обновлении странички html, в стандартном тоже сбрасываются.
Re: Альтернативные прошивки MegaD
В новой версии я это исправил Выложу на следующей неделе.foolhome писал(а):в режиме ADC, значения VAL через html не устанавливаются, причем в стандартном интерфейсе установить можно, но при обновлении странички html, в стандартном тоже сбрасываются.
Re: Альтернативные прошивки MegaD
Исправленно неправильное отображение HI/LOW
Убрано ADC из списка Type для портов без АЦП
Добавлен верхний заголовок
Добавленно считывание версий Html/MegaD и проверка взаимной совместимости!
Исправлен встроенный датчик температуры
Пожалуй можно теперь 1-ware помучать на DS2482-100.
Убрано ADC из списка Type для портов без АЦП
Добавлен верхний заголовок
Добавленно считывание версий Html/MegaD и проверка взаимной совместимости!
Исправлен встроенный датчик температуры
исправил...foolhome писал(а):в режиме ADC, значения VAL через html не устанавливаются, причем в стандартном интерфейсе установить можно, но при обновлении странички html, в стандартном тоже сбрасываются.
Пожалуй можно теперь 1-ware помучать на DS2482-100.
Re: Альтернативные прошивки MegaD
что-то не собирается
- Вложения
-
- новый-2.jpg (157.78 КБ) 10398 просмотров
Re: Альтернативные прошивки MegaD
я надеюсь вы остальные файлы то в проект добавили? Это только тот что я изменил!foolhome писал(а):что-то не собирается
- Вложения
-
- MegaD.rar
- )))
- (118.24 КБ) 357 скачиваний
Re: Альтернативные прошивки MegaD
Конечно же добавил, проверил старую прошивку - все собралось, а новая нет, ругается на ошибки посмотри скриншот, внизу все видно на какие строчки ругается
Re: Альтернативные прошивки MegaD
Исправилfoolhome писал(а):Конечно же добавил, проверил старую прошивку - все собралось, а новая нет, ругается на ошибки посмотри скриншот, внизу все видно на какие строчки ругается
- Вложения
-
- main.rar
- (15.3 КБ) 351 скачивание
Re: Альтернативные прошивки MegaD
Собралась, работает, спасибо, тестирую.
Re: Альтернативные прошивки MegaD
Спасибо за новую версию
Осталась старая проблема - при первом обращении к DHT получаем нули, так же пару раз нули вылетали и в произвольное время.
На старой web страничке у последнего порта коверкается имя, при этом
при компиляции появился варнинг
websrv_help_functions.c:68: warning: control reaches end of non-void function
Раньше такое бывало, когда я пытался добавить еще один порт и увеличивал IO_SIZE до 17.
Видимо пришло время резать старый web, освобождать место и возвращать загрузку по сети.
Уж очень эта опция удобна.
Осталась старая проблема - при первом обращении к DHT получаем нули, так же пару раз нули вылетали и в произвольное время.
На старой web страничке у последнего порта коверкается имя, при этом
при компиляции появился варнинг
websrv_help_functions.c:68: warning: control reaches end of non-void function
Раньше такое бывало, когда я пытался добавить еще один порт и увеличивал IO_SIZE до 17.
Видимо пришло время резать старый web, освобождать место и возвращать загрузку по сети.
Уж очень эта опция удобна.
- Вложения
-
- port.jpg (59.32 КБ) 10228 просмотров
Re: Альтернативные прошивки MegaD
Загрузка будет...))) Поясните проблему подробнее... У меня таковой нетkID писал(а):Спасибо за новую версию
Осталась старая проблема - при первом обращении к DHT получаем нули, так же пару раз нули вылетали и в произвольное время.
На старой web страничке у последнего порта коверкается имя, при этом
при компиляции появился варнинг
websrv_help_functions.c:68: warning: control reaches end of non-void function
Раньше такое бывало, когда я пытался добавить еще один порт и увеличивал IO_SIZE до 17.
Видимо пришло время резать старый web, освобождать место и возвращать загрузку по сети.
Уж очень эта опция удобна.
- Вложения
-
- Безымянный.png (31.23 КБ) 10182 просмотра
Re: Альтернативные прошивки MegaD
Закинул интерфейс... временно... Решил плату наконец-то собрать Т.к. нет программатора...сделал USBusp.
Случайно прошил кривые фьюзы у Atmega теперь «Atmega fusebit doctor» собирать надо .... А там почитав захотелось еще и UART шнурок сделать для обмена контроллера с компом (для отладки и не только). Короче все сделаю, а потом продолжу
P.S. Кстати появилась идея вживить в интерфейс "megad-cfg.php", ну чтоб не отходя от кассы так сказать....Думаю смогу на java перевести. Не всем же через php хочется прошивку обновлять
Случайно прошил кривые фьюзы у Atmega теперь «Atmega fusebit doctor» собирать надо .... А там почитав захотелось еще и UART шнурок сделать для обмена контроллера с компом (для отладки и не только). Короче все сделаю, а потом продолжу
P.S. Кстати появилась идея вживить в интерфейс "megad-cfg.php", ну чтоб не отходя от кассы так сказать....Думаю смогу на java перевести. Не всем же через php хочется прошивку обновлять
Последний раз редактировалось GruNT 13 янв 2015, 18:46, всего редактировалось 1 раз.