|
Умный дом. |
|
|
|
Mar 25 2006, 21:46
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Прошу знающих посоветовать с чего начать. Делать буду для себя. Идеи такие: В комнате, корридоре и на кухне в стенах утоплены панели управления каждая представляет из себя: - дисплей ЖК 16х2 - кнопки управления стрелка вверх, вниз, выбор и назад, т.е. всего 4 кнопки. - датчик температуры для каждой панели - управляющая микросхемка (атмега8 или 16 наверное) - датчик ИК для приема комманд с пульта ДУ А также есть исполнительные устройства, например в выключателе освещения, которые слушают, что им говорят панели и выполняют команды (например выключить свет).
Вопросы: Какие мк использовать? (для панелей наверное что нибудь из серии мега а для исполнительных - тини) Как организовать между мк одноранговую сеть? (желательно удобную для прокладки в стенах) Как узнать какую систему комманд использует пульт? (от тв-тюнера маленький плоский, на одной таблетке-батарейке)
Сообщение отредактировал ps1x - Mar 25 2006, 21:55
|
|
|
|
|
 |
Ответов
(1 - 76)
|
Mar 26 2006, 00:32
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Цитата В ATtiny25/45/85 есть встроенный датчик температуры. - за это спасибо Цитата Сеть - 2-проводная шина RS-485, аппаратный UART подключается через м/с-преобразователь (MAX487). - с ее помощью можно организовать такую связь: исполнительное устройство --- панель---- панель. Нажать кнопку на последне панели, получить результат в виде "выполнено" от исполнительного устройства? т.е. панели имеют одинаковый приоритет, исполнительные устройства подключаются к определенной панели и общаются только с ней. Или лучше совместить исполнительное устройство и панель - налицо экономия, но сразу теряется гибкость системы. По поводу пульта - информации по этому экземплярчику, к сожалению, не обнаружил, может есть другой метод? Ведь есть же программы которые можно надрессировать на любые пульты... Только как это реализовать в Меге
|
|
|
|
|
Mar 26 2006, 05:43
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Хорошее описание некоторых популярных ИК протоколов http://www.xs4all.nl/~sbp/knowledge/ir/ir.htmПо поводу интерфейса все намного сложнее. Надо сначала определиться с логикой обмена: 1. Мастер-слэйв, логическая звезда. В сети есть только один мастер, все остальные - слуги. Разговор всегда происходит между мастером и одним из млуг, слуги между собой сами разговаривать не могут. Мастер по очереди опрашивает всех слуг. Если у слуги есть новая информация (например, нажата кнопка), мастер получает ее, затем по своим таблицам смотрит кому она нужна, и рассылает исполнительным механизмам. Достоинства: простая реализация; отсутствие столкновений, легкои надежно делается на RS485 Недостатки: для получения хорошего времени реакции скорости обмена должны быть довольно большими (порядка 100кбит/сек); центральный мастер является критическим звеном, если мастер помрет - ничего работать не будет. 2. Peer-to-peer В каждый момент времени в сети есть один координатор. Координатор по очереди срашивает остальные узлы "тебе нужно управление?". Если да, то узел получает от координатора управление (токен) на какое-то время. После этого узел сам передает другим узлам информацию, по окончании обмена рапортует координатору. Если координатор помирает, то остальные узлы рано или поздно это обнаруживают по отсутствию опроса. После этого они "договариваются между собой" и назначают нового координатора. Достоинства: отсутствие столкновений, легко и надежно делается на RS485; обмен может быть ускорен по сравнению с (1), особенно если надо обмениваться большими пакетами; надежность выше, т.к. обмен не зависит от работоспособности одного узла. Недостатки: довольно сложно реализовать, много возни; скорости обмена все равно должны быть довольно большими, чтобы координатор мог быстро передать токен. 3. Анархия - мать порядка (CSMA) Координатора нет, мастера нет. Кому надо что-то передать - захватывает интерфейс и передает, после этого замолкает. Проблема возникает в тот момент, когда нескольким узлам взбредет передавать в одно и то же время. RS485 для этого не подходит, т.к. не приспособлен для работы со столкновениями. Здесь напридумывано много вариантов, например 3.1. "По фигу, рано или поздно пробьемся"Узел тупо передает свое сообщение и ждет подтверждения приема. Если ответа нет, исполняется псевдослучайная задержка, и передача повторяется. Надежда на то, что два столкнувшихся узла сделают разную задержку. Это вариант довольно гнилой, зато относительно простой. 3.2. Обнаружение столкновений (CSMA/CD)Узлы "слушают" линию во время передачи и обнаруживают, что произошло столкновение. В этом случае происходит "разборка" тем или иным способом, один передает, другой встает в очередь. Примерно так работает LON 3.3. Избегание столкновений (CSMA/CA)Линия работает по принципу "монтажного ИЛИ", один уровень "сильнее" другого. Узлы "слушают" каждый бит во время передачи и обнаруживают, что кто-то передает "сильный" уровень, в то время как они сами транслируют "слабый" уровень. После этого они тихо отцепляются от линии и не мешают "более старшим ребятам" разговаривать (первые биты в пакете задают приоритет). Последний вариант - самый интересный. Так (или примерно так) работают CAN, EIB, C-Bus. При этом физическая скорость обмена может быть очень низкой (в C-Bus, например, всего 5 кбит/сек), а реактивность получается очень высокой, особенно если информация передается не одному узлу (как в том же LON в обычном режиме), а сразу всем, широковещательно (как в EIB, C-Bus и в кривовато реализованном широковещательном режиме LON).
|
|
|
|
|
Mar 26 2006, 10:20
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Большое спасибо за подробное разъяснение протоколов связи, думаю реализовать МАСТЕР - СЛЕЙВ, ибо опыта пока маловато, а поскольку делаю для себя, если что починить всегда можно ) а время реакции не важно. По поводу электропроводки - есть специальные микросхемки которые этим занимаются? Если прийдется городить - паять то я пас. К томуже зачастую бывает что разные розетки в одной квартире идут от разных фаз - чтобы распределять нагрузку. Думаю, этот вариант окажется дорогим, сложным и малопригодным в моем случае (ИМХО). По поводу ИК - еслиб я знал какой протокол в нем используется, я и не спрашивал бы )) Есть программа для кпк которая с помошью встроенного в кпк ИРДА может натренироваться пулять в любой телевизор. Там это работает так - нажимаем вирт. кнопку на кпк, которую нужно запрограммировать, затем жмем соответствующую кнопку на пульте д.у. она запоминает последовательность импульсов, думаю, прийдется делать что-либо подобное, но как это запихнуть в мегу? ресурсов то мало....  И еще как будет выглядеть физически подключение мастер-слейв? Вот так?:: Цитата слейв...... _______ ...........слейв =======|.мега...|========= ................|мастер|.................... ................|..........|.................... =======|..........|.................... слейв........---------.....................
Сообщение отредактировал ps1x - Mar 26 2006, 10:30
|
|
|
|
|
Mar 26 2006, 16:37
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Почему код: Цитата unsigned char kod; char disp1[16],disp2[16]; unsigned int cur; struct menu // Declare PERSON struct type { char menu1[16]; char menu2[16]; char menu3[16]; char menu4[16]; char menu5[16]; } family_member; // Define object of type PERSON
// Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { switch (kod) { case 'u': if (cur==0){cur=4;} cur--; switch (cur) { case 0: disp1="d"; disp2='Preferences'; break; }; break; case 'd':
break; case 's':
break; case 'c':
break;
};
} выдает ошибку в строчках: disp1="d"; disp2='Preferences --- must be lvalue ????
|
|
|
|
|
Mar 26 2006, 16:49
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(ps1x @ Mar 26 2006, 19:37)  выдает ошибку в строчках: disp1="d"; disp2='Preferences
--- must be lvalue ???? вы перепутали понятие строки и понятие одного символа. в ДВОЙНЫХ ковычках пишутся СТРОКИ в ОДИНАРНЫХ ковычках пишется ОДИН символ
|
|
|
|
|
Mar 26 2006, 17:07
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Цитата unsigned char kod; char disp1[16]; unsigned int cur; struct menu // Declare PERSON struct type { char menu1[16]; char menu2[16]; char menu3[16]; char menu4[16]; char menu5[16]; } family_member; // Define object of type PERSON
// Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { switch (kod) { case 'u': if (cur==0){cur=4;} cur--; switch (cur) { case 0: disp1="Dsad"; break; }; При двойных кавычках тоже ругается... (
|
|
|
|
|
Mar 26 2006, 18:16
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(ps1x @ Mar 26 2006, 19:07)  При двойных кавычках тоже ругается... ( Либо: char *disp1; либо, если нужен именно буфер для других целей: strcpy( &disp1[0], "abracadabra" ); либо, дабы избежать потенциальных ошибок: strncpy( &disp1[0], "abracadabra", sizeof(disp1)-1 );
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 26 2006, 18:39
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Код char *disp1; disp1="Не работает"; - такой код выдает ошибку "pointers are to different memory classes" ДОБАВЛЕННО: а такой вроде как работает Код char *disp1; *disp1="Не работает";
Сообщение отредактировал ps1x - Mar 26 2006, 18:41
|
|
|
|
|
Mar 26 2006, 20:30
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(ps1x @ Mar 26 2006, 20:39)  1) char *disp1; disp1="Не работает"; - такой код выдает ошибку "pointers are to different memory classes"
2) а такой вроде как работает char *disp1; *disp1="Не работает"; 1. Это уже конкретные AVRовские заморочки с flash - я не в курсе, как я понимаю Вам "vet" ответил. 2.Бред, если компилятор на такое хотя-бы одно предупреждение не выдал, то хреновый компилятор, либо ему все предупреждения задавили. Ну а сделать он мог, максимум, в память по адресу на который указывает указатель disp1 (кстати в пределах данного фрагмента не инициализированный! ) запихнуть один байт 'Н'. И выдать пару варнингов: - неинициализированный указатель; - хрен знает какое преобразование строки к байту;
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 26 2006, 21:01
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
В общем правильны вариант оказался: Код char *mainm[7]={" Time"," Date"," Preferences"," Devices"," Info"," Time",">>"}; lcd_puts(mainm[cur]); - работает полностью в полном обьеме Вот недоделаное меню: Код /***************************************************** This program was produced by the CodeWizardAVR V1.24.5 Standard Automatic Program Generator © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com e-mail:office@hpinfotech.com
Project : Version : Date : 26.03.2006 Author : ps1x Company : ccc Comments:
Chip type : ATmega8 Program type : Application Clock frequency : 1,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 *****************************************************/ #asm .equ __lcd_port=0x18;PORTB #endasm #include <mega8.h> #include <stdio.h> #include <STRING.h> #include <lcd.h> #include <delay.h>
unsigned char kod,m;//kod- код нажатой кнопки, м - флаг в каком меню находимся char *mainm[7]={" Time"," Date"," Preferences"," Devices"," Info"," Time",">>"};//пункты главного меню int cur,temp;//сur-текущий пункт меню, temp - температура (на будущее) unsigned int hour,min,sec;//переменные для показа часов (на будущее)
void showmm(int cur) //функция показа главного меню, в зависимости от значения активного пункта { lcd_clear(); lcd_gotoxy(0,0); lcd_puts(mainm[cur]);//выводим текущ. пункт меню lcd_gotoxy(0,0); lcd_puts(mainm[6]);//выводим символ ">>" для обозначения активного пункта. lcd_gotoxy(0,1); lcd_puts(mainm[cur+1]);//следующий пункт
} interrupt [TIM0_OVF] void timer0_ovf_isr(void) { switch (kod) { //в зависимости от нажатой кнопки
case 'u'://если кнопка вверх if (cur==0){cur=5;}//ограничене для закольцовывания меню )) cur--;//уменьшение указателя switch (m) {//если активно главное меню case 'm': showmm(cur);//отображение гл. мен. break; } break; case 'd'://кнопка вниз if (cur==4){cur=-1;}//ограничение cur++; showmm(cur); break; case 's'://нажатие кнопки селект switch(cur){ case 3: lcd_clear(); lcd_putsf("Выполняем этот пункт!");//если активен пункт 3 то выполняем этот код }; break; case 'c':
break; case 'z': break;
}; kod='z'; }
// Declare your global variables here
void main(void) { // Declare your local variables here
// Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00;
// Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00;
// Port D initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00; DDRD=0xFF;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 3,906 kHz TCCR0=0x04; TCNT0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 3,906 kHz // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x04; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off // INT1: Off MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01;
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;
// Global enable interrupts #asm("sei") lcd_init(16); while (1) //опрашиваем клавиатуру { if (PIND.0==1) {kod='u';delay_ms(250);}
if (PIND.1==1) {kod='d';delay_ms(250);}
if (PIND.2==1) {kod='s';delay_ms(250);}
if (PIND.3==1) {kod='c';delay_ms(250);}
}; } как вам такая реализация??? p.s. КОД НЕЗАКОНЧЕН! Как заставить ISIS показывать русские буквы? И будет ли реальное устройство их показывать (имеется в виду что дисплей АНГ/РУС) если компилировать в CVAVR?
Сообщение отредактировал ps1x - Mar 26 2006, 21:12
|
|
|
|
|
Mar 26 2006, 21:35
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 26-05-05
Пользователь №: 5 441

|
Цитата(ps1x @ Mar 27 2006, 00:01)  Как заставить ISIS показывать русские буквы? И будет ли реальное устройство их показывать (имеется в виду что дисплей АНГ/РУС) если компилировать в CVAVR? #pragma rl+ lcd_putsf("Что-то на русском"); #pragma rl-
|
|
|
|
|
Mar 27 2006, 12:35
|

Местный
  
Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254

|
Цитата(ps1x @ Mar 27 2006, 00:01)  В общем правильны вариант оказался: Код char *mainm[7]={" Time"," Date"," Preferences"," Devices"," Info"," Time",">>"}; lcd_puts(mainm[cur]); - работает полностью в полном обьеме Вот недоделаное меню: Код /***************************************************** This program was produced by the CodeWizardAVR V1.24.5 Standard Automatic Program Generator © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com e-mail:office@hpinfotech.com
Project : Version : Date : 26.03.2006 Author : ps1x Company : ccc Comments:
Chip type : ATmega8 Program type : Application Clock frequency : 1,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 *****************************************************/ #asm .equ __lcd_port=0x18;PORTB #endasm #include <mega8.h> #include <stdio.h> #include <STRING.h> #include <lcd.h> #include <delay.h>
unsigned char kod,m;//kod- код нажатой кнопки, м - флаг в каком меню находимся char *mainm[7]={" Time"," Date"," Preferences"," Devices"," Info"," Time",">>"};//пункты главного меню int cur,temp;//сur-текущий пункт меню, temp - температура (на будущее) unsigned int hour,min,sec;//переменные для показа часов (на будущее)
void showmm(int cur) //функция показа главного меню, в зависимости от значения активного пункта { lcd_clear(); lcd_gotoxy(0,0); lcd_puts(mainm[cur]);//выводим текущ. пункт меню lcd_gotoxy(0,0); lcd_puts(mainm[6]);//выводим символ ">>" для обозначения активного пункта. lcd_gotoxy(0,1); lcd_puts(mainm[cur+1]);//следующий пункт
} interrupt [TIM0_OVF] void timer0_ovf_isr(void) { switch (kod) { //в зависимости от нажатой кнопки
case 'u'://если кнопка вверх if (cur==0){cur=5;}//ограничене для закольцовывания меню )) cur--;//уменьшение указателя switch (m) {//если активно главное меню case 'm': showmm(cur);//отображение гл. мен. break; } break; case 'd'://кнопка вниз if (cur==4){cur=-1;}//ограничение cur++; showmm(cur); break; case 's'://нажатие кнопки селект switch(cur){ case 3: lcd_clear(); lcd_putsf("Выполняем этот пункт!");//если активен пункт 3 то выполняем этот код }; break; case 'c':
break; case 'z': break;
}; kod='z'; }
// Declare your global variables here
void main(void) { // Declare your local variables here
// Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00;
// Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00;
// Port D initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00; DDRD=0xFF;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 3,906 kHz TCCR0=0x04; TCNT0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 3,906 kHz // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x04; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off // INT1: Off MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01;
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;
// Global enable interrupts #asm("sei") lcd_init(16); while (1) //опрашиваем клавиатуру { if (PIND.0==1) {kod='u';delay_ms(250);}
if (PIND.1==1) {kod='d';delay_ms(250);}
if (PIND.2==1) {kod='s';delay_ms(250);}
if (PIND.3==1) {kod='c';delay_ms(250);}
}; } как вам такая реализация??? p.s. КОД НЕЗАКОНЧЕН! Как заставить ISIS показывать русские буквы? И будет ли реальное устройство их показывать (имеется в виду что дисплей АНГ/РУС) если компилировать в CVAVR? А можно на скриншот ISIS посмотреть ???
|
|
|
|
|
Mar 27 2006, 14:10
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
ОБНАРУЖЕНЫ СЛЕДУЮЩИЕ ОШИБКИ Произошла ошибка при загрузке файла, в связи с тем, что директория 'uploads' имеет неправильные атрибуты. Если Вы получили эту ошибку, просим Вас обратиться к Администратору форума и сообщить об этой ошибке. ---вот такая лажа случилась, щас залью на хостинг... http://www.annesemonin.ru/scr.jpg -- вот адрес картинки. Добавленно: http://www.annesemonin.ru/scr1.jpg -- с русскими буквами.
Сообщение отредактировал ps1x - Mar 27 2006, 14:13
|
|
|
|
|
Mar 27 2006, 17:54
|
Участник

Группа: Свой
Сообщений: 41
Регистрация: 16-02-05
Пользователь №: 2 688

|
Цитата(ps1x @ Mar 27 2006, 00:27)  Как я понял, ИСИС с русским не дружит... ) ... Качаеш отсюда редактор симоволов LCDALPHA и отредактируеш шрифты в нем. Quick Help: сохранить .BMP, открыть LCDALPHA.DLL, загрузить сохраненную .BMP и сохранить LCDALPA.DLL. Удачи!
Сообщение отредактировал Balaganov - Mar 27 2006, 17:55
|
|
|
|
|
Mar 27 2006, 18:41
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103

|
Цитата(ps1x @ Mar 27 2006, 20:54)  Не смог я всетаки со своим меню разобраться, посему прошу помощи. Какой самый простой метод организации многоуровнего меню? Есть-ли у кого нибудь ссылки на алгоритмы работы меню (реализации GUI)? з.ы. Все что нашел - под винду, т.е. совершенно не подходит (используют оконные меню и иже с ними) ИМХО, самый простой метод с организацией списка и хождения по его элементам, в полях элемента хранишь все что тебе необходимо. Реализация проста до безобразия, а всю рутину берет на себя компилятор. И главное, что потом добавив поля можешь хоть картинки к каждой менюшке подвесить.
|
|
|
|
|
Mar 27 2006, 18:54
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Цитата(Laptop @ Mar 27 2006, 22:41)  Цитата(ps1x @ Mar 27 2006, 20:54)  Не смог я всетаки со своим меню разобраться, посему прошу помощи. Какой самый простой метод организации многоуровнего меню? Есть-ли у кого нибудь ссылки на алгоритмы работы меню (реализации GUI)? з.ы. Все что нашел - под винду, т.е. совершенно не подходит (используют оконные меню и иже с ними)
ИМХО, самый простой метод с организацией списка и хождения по его элементам, в полях элемента хранишь все что тебе необходимо. Реализация проста до безобразия, а всю рутину берет на себя компилятор. И главное, что потом добавив поля можешь хоть картинки к каждой менюшке подвесить. Дык а есть исходники с комментариями на русском для дебилов? С удовольствием бы поизучал. Насколько я понял из некоторых примеров, надо создать несколько структур - для пункта меню, для меню и для вбранного пункта меню, так?
|
|
|
|
|
Mar 27 2006, 19:23
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103

|
Цитата(ps1x @ Mar 27 2006, 21:54)  Дык а есть исходники с комментариями на русском для дебилов? С удовольствием бы поизучал. Насколько я понял из некоторых примеров, надо создать несколько структур - для пункта меню, для меню и для вбранного пункта меню, так? Исходников к сожалению нет. Несколько структур создавать не обязательно, все элементы могут быть одинаковы, надо только определить для себя каким будет отображение на экране. Самый простой вариант когда отображается один уровень, с вложенностью (точнее с одновременным отображением нескольких уровней вложенности) чуть сложнее, больше работы процессору. Структура элемента следующая: предыдущий пункт следующий пункт вход в нижний уровень вложенности, если есть признак активного пункта поле возможно указателя на функцию, возвращающую значение пункта меню(On, Off, etc.) Необходимо только предусмотреть затычки для неиспользуемых полей.- Вся работа сводится к беготне по ссылкам внутри списка
|
|
|
|
|
Mar 27 2006, 21:45
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Ну, отображаться будут две строки меню (на дисплее 16*2), причем перед одной из них символ ">>" как индикатор активного пункта, вобщем можете взглянуть на скрин-шот из эмулятора http://www.annesemonin.ru/scr.jpgМаксимальная вложенность - 3, тоесть: Главное меню ----настройки ---------контраст ---------яркость ---------идентификатор ----таймер ---------проверить ---------установить и т.п. Гы, а как собственно "бегать" по элементам? (switch?)
|
|
|
|
|
Mar 28 2006, 17:11
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103

|
Цитата(ps1x @ Mar 28 2006, 00:45)  Ну, отображаться будут две строки меню (на дисплее 16*2), причем перед одной из них символ ">>" как индикатор активного пункта, вобщем можете взглянуть на скрин-шот из эмулятора http://www.annesemonin.ru/scr.jpgМаксимальная вложенность - 3, тоесть: Главное меню ----настройки ---------контраст ---------яркость ---------идентификатор ----таймер ---------проверить ---------установить и т.п. Гы, а как собственно "бегать" по элементам? (switch?) Просто активный пункт выбираешь стрелками для беганья по меню и именно его тображаешь как активный, вроде проосто. Дополнительно вычисляешь кто сверху от этого уровня меню, сосед или родитель сверху и в соответствии с отступами отбражаешь. Вся информация содержится в выбранном активном пункте или элементе списка если проще.
|
|
|
|
|
Mar 29 2006, 06:02
|

Профессионал
    
Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264

|
Вообще-то подобный комплекс (умный дом) основанный на коммуникационной технологии BlueTooth и предпологает построение максимально интелектуальной и автоматизированной системы применительно к различным домашним и прочим электро-приборам управляемых от единого мастера (ПК). Об этом еще толковали в момент зарождения BlueTooth, как технологии. Средства коммуникации могут быть различны: USB, прочие разновидности сети, но BlueTooth изначально преспособлена под данный вариант использования, это как идеология, так и беспроводной способ передачи. Так что рекомендую рассмотреть данный вариант, тем более, что он является перспективным как сейчас, так и в будущем.
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
Mar 29 2006, 10:39
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(BVU @ Mar 29 2006, 10:02)  Вообще-то подобный комплекс (умный дом) основанный на коммуникационной технологии BlueTooth и предпологает построение максимально интелектуальной и автоматизированной системы применительно к различным домашним и прочим электро-приборам управляемых от единого мастера (ПК). Об этом еще толковали в момент зарождения BlueTooth, как технологии. Средства коммуникации могут быть различны: USB, прочие разновидности сети, но BlueTooth изначально преспособлена под данный вариант использования, это как идеология, так и беспроводной способ передачи. Так что рекомендую рассмотреть данный вариант, тем более, что он является перспективным как сейчас, так и в будущем. енто Вы откель прочитали ?  Насколько в курсе - просто на сегоднешний момент времени НЕТ единого комуникационного стандарта в данной плоскости. Идёт грызня (или более мягше - перетягивание одеяла на ся) между различными протоколами...1Wire, голубой зуб, WiFi, x-10, LonWorn и т.д.. Более прикольно это всё наблюдать на фоне просьб буржуев-заказчиков - сделать расширитель RS232 к покупаемому у нас в России оборудованию. Очень уж смахивает на обычный пиар различных фирм своих технологий. Или по другому - захват рынка сбыта... удачи Вам (круглый)
|
|
|
|
|
Mar 29 2006, 11:03
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(ps1x @ Mar 29 2006, 14:56)  Думаю я для себя буду делать на rs232 - проще и дешевле. Всего два провода можно и под плинтусом спрятать )) А Ви-Фи и блютусы это для профи и для массового производства (затраты на установку в квартире меньше.) лучший с точки зрения "модернизирования" и развития - всё таки rs485 если уж в последовательный канал близкий к rs232... Но рекомендую глянуть 1Wire - его плюс в 1 проводе данных (в принцепе 485 то же самое даёт), и (на мой взгляд) больше оконечных устройств. Всяких там таблеток, доступ, и прочей лабуды... Но как говориться - хозяин барин... Мы в своих установках юзаем 1Wire (по установке) - просче в мантаже, да и стоимость решения - достаточно низкая... Хотя на плате есть и i2c (ну енто совсем короткие шлейфы) к примеру...Дальнии подключения - то обычно rs232, 485, ethernet... с уважением (круглый)
|
|
|
|
|
Mar 29 2006, 11:08
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(ps1x @ Mar 29 2006, 15:06)  подключения- максимум метров 6. 1 wire имеется ввиду всеже что там 2 провода? Так у rs232 тоже 2 data+ и data- или нет? у RS232 - 3 проводка... уровни -12, +12, GND (земля по нашенски)... с уважением (круглый)
|
|
|
|
|
Mar 29 2006, 11:43
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(beer_warrior @ Mar 29 2006, 15:27)  rs232 я бы не рекомендовал. Ограничение на расстояние, и интерфейс точка-точка....... расстояние звучало - около 6 метров. правда не понятно насколько много помех будет... а вот точка-точка, это решаемо...с помощью пару-тройки милкосхем на рассыпухи (к примеру) , немного поколдовать над протоколом...и штук 8 RS232 уже дышат в шинной топологии... Цена вопроса - затраты на программирование... удачи Вам (круглый)
|
|
|
|
|
Mar 29 2006, 14:34
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Цитата немного поколдовать над протоколом...и штук 8 RS232 уже дышат в шинной топологии... Цена вопроса - затраты на программирование... Я понимаю, только зачем колдовать, если есть стандартные решения? Цитата Ну что, неужели не у кого нет идей или своих наработок? з.ы. просто самому в этом разобраться трудно... Я думаю все переболели этим, и забросили. Сналчала, оно выглядит круто и прикольно, а когда доходит дело до эксплуатации и обслуживания быстро обламываешься...
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Mar 29 2006, 20:05
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 7-01-06
Пользователь №: 12 918

|
Хотелось-бы поговорить об функциях умного дома, а реализация это уже дело техники. Например: - охранная сигнализация - управление отоплением в зависимости от времени суток и выходных - управление кондиционером по времени - при открывании калитки музыкальный звонок и включение освещения (на каждую калитку своя мелодия) - вечерний свет (имитация присутствия дома) - измерение температуры в каждой комнате, на улице и в подвале (актуально при хранинии овощей) - набор будильников для включения различных устройств по времени - администрирование всех контроллеров с ПК Какие будут еще предложения ?
|
|
|
|
|
Mar 30 2006, 11:44
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(александр_в @ Mar 30 2006, 00:05)  Хотелось-бы поговорить об функциях умного дома, а реализация это уже дело техники. Например: - охранная сигнализация - управление отоплением в зависимости от времени суток и выходных - управление кондиционером по времени - при открывании калитки музыкальный звонок и включение освещения (на каждую калитку своя мелодия) - вечерний свет (имитация присутствия дома) - измерение температуры в каждой комнате, на улице и в подвале (актуально при хранинии овощей) - набор будильников для включения различных устройств по времени - администрирование всех контроллеров с ПК Какие будут еще предложения ? +пожарная тематика +аварийная тематика(протечка трубы, обмерзание канализации) +идентификация людей в жилище(метка, СО и т.д.) +управление вентиляцией (не только вкл-выкл) +отопление(не только поддержание температуры) +-администрирование не с ПК а с удобной консоли. Одной, регулируя масштабность. ПК - это вчерашний день.Либо переносной ПК... +домашняя метеостанция +анализатор распорядка дня и необходимых действий (например проверить давление в шинах, т.к. температура на улице ушла более чем на 10 градусов) +видеофон ну там ышо наверное куча всяго... фантазировать мона бесконечно...или хотя бы поднять книгу (например) Войцеховского "Радиоэлектронные игрушки" с уважением (круглый)
|
|
|
|
|
Mar 31 2006, 14:13
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 7-01-06
Пользователь №: 12 918

|
Частично уже реализовано. Голосовое управление очень заманчиво, но ставить под это дело ПК не совсем разумно. А как сделать по другому не знаю.
|
|
|
|
|
Dec 1 2006, 15:13
|

Группа: Новичок
Сообщений: 2
Регистрация: 1-12-06
Из: Санкт-Петербурга
Пользователь №: 22 995

|
А такой вариант не подойдёт ? У меня собрано: центральный контроллер с дисплеем 320х240 точек (можно вывести простейшую графику), имеет 2 - RS232, 2 - I2c, а-ля SPI, шесть кнопок; влево-вправо, вверх-вниз, ввод и сброс процессора (Z84). IR - порт (RC5), ик светодиод, часы реального времени. подсветка кнопок, возможность перепрограммирования (с компа).
|
|
|
|
|
Dec 1 2006, 17:55
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(SasaVitebsk @ Dec 1 2006, 17:14)  Не унывайте выбирите тему по "изящней" и занимайтесь.  Для хобби "само то". Для бизнеса разработчика - бесперспективно, так как все уже разработано. Для бизнеса внедрения - разве только в Москве, богатых разводить. В Европе многие фирмы, которые занимались этой темой, сменили тему. Дорого и сложно. Не для специалиста, а для монтажника и пользователя.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 2 2006, 11:13
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Цитата(ps1x @ Mar 29 2006, 11:56)  Думаю я для себя буду делать на rs232 - проще и дешевле. Всего два провода можно и под плинтусом спрятать )) А Ви-Фи и блютусы это для профи и для массового производства (затраты на установку в квартире меньше.) Как мне кажется наилучшим вариантом для умного дома будет X-10 т.к. не всегда удобно долбить стены или ковырять плинтуса для того чтобе подключить к.л. устройство в сеть. А так где есть 220 есть и сеть.
|
|
|
|
|
Dec 2 2006, 13:37
|

Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 10-05-05
Из: Киргизия Бишкек
Пользователь №: 4 886

|
Покувыркались мы недавно с передачей по сети 220. Выяснили следующее - если в доме нет китайских импульсных преобразователей (компы, зарядки) то по сети можно управлять и даже с фазы на фазу прыгает практически без проблем. Но стоит появиться представителю Великого Желтого соседа, как сеть становится слишком шумной и по ней устойчиво передать данные оченно тяжело, иногда невозможно. А Великий сосед уже в каждом доме и не только у нас. Так что вот так, подобную задачу пробуем пробить на 433 МГц, но в небольшом объеме. У многих клиентов уже все установлено и замазано-покрашено-заклеено, ковырять не хотят, а управлять хотца, скажем, обогревателями. вешаем на стенку хозяина, он меряет температуру и командует обогревателям включить-выключить. На обогревателях приемник и простенькая мега - расшифровали кому и что, выполнили. Вот вроде и все
|
|
|
|
|
Dec 20 2006, 13:12
|
Группа: Новичок
Сообщений: 1
Регистрация: 20-12-06
Пользователь №: 23 714

|
есть ли у кого-то опыт подключения самых разных датчиков (охранных, температуры итд) в сеть ETHERNET ? Может быть есть датчики с Ethernet - интерфейсом (со встроенным ВЕБ-интерфейсом) ? или Ethernet - адаптеры ? Кто-нибудь может, что-нибудь сказать по этому поводу ?
|
|
|
|
|
Dec 22 2006, 21:02
|
Группа: Новичок
Сообщений: 8
Регистрация: 22-12-06
Из: Киев
Пользователь №: 23 789

|
Здравствуйте! Я давно читаю этот форум. И очень много для себя нашел полезного (выражаю всем участникам и создателям сайта свою огромную благодарность), а написать решился впервые. Уж больно тема мне близка. Я как раз сейчас занимаюсь этим. Сразу скажу что я не профессионал ни в электронике ни в программировании, правда радиотехникой увлекаюсь с детства ( а оно было ну очень давно…) так что паяльник держать умею. С вашего позволения немножко пред истории почему у меня возник интерес по данной теме. Где то больше пол года назад купил GSM сигнализацию что бы установить в доме который достался от родителей в наследство и находится где то за 300 км. Продавать не хочется. Так вот посмотрел я на возможности этого устройства (4 канала для дискретных датчиков и 4 канала для управления) и возник вопрос а можно ли сделать покруче? Дальше пошло поехало… Что надо? Как это можно реализовать? После прочтения множества информации ( сразу оговорюсь что решал конкретную свою задачу и не претендую на универсальность хотя есть элементы расширения ) пришел к следующему :
Задачи: 1. контроль дискретных датчиков ( движения, пожарные и т.д.); 2. аналоговые датчики ( наличия 220В, состояния резервных источников АКБ, электростанции и т.д.) ; 3. температурные датчики; 4. управление дискретными устройствами; 5. управление аналоговыми устройствами; 6. возможность дистанционного мониторинга и управления системой ( GSM, Интернет, локальная сеть) ;
Условия: 1.Возможность простого расширения системы (увеличения портов контроля и управления) 2. Малое потребление энергии от резервных источников ( для меня это актуально).
Решение: Мое мнение, что п.п.1-5 оптимально реализовать на микроконтроллерах семейства AVR Mega. Шестой пункт особый он как бы «сердце» его можно реализовать по разному. Я для себя решил ( и уже приобрел ) что это будет плата DSTINIm400+DSTINIs-005 и GSM модем Wavecom Integra M2106 (сразу прошу не бить, я понимаю что это не дешево) . Просто в моем случае это самое то… что нужно.
Топология: Можно все это рассредоточить как здесь предлагается…Но возникает вопрос интерфейса связи, а это на мой взгляд не простая задача и только экономия проводов (я понимаю что не всегда их можно проложить но для меня не проблема). Поэтому я решил что проще все (кроме датчиков и исполнительных устройств разумеется) расположить все в одном месте тем более что это решает проблему интерфейсов и ограничения доступа (хотя с применением TINI это тоже не проблема у нее есть CAN). Думаю что подключение дискретных и аналоговых датчиков вопросов не вызывает. (провод для сигнализации 3-х или 5 парный). В качестве интерфейса между блоками I2C (дает возможность маштабирования системы), между TINI и модемом RS232. Теперь почему TINI? Но во первых это то что я смог приобрести, и то пришлось заказывать в Москве через знакомых (я живу в Киеве и здесь ее нет, не говоря уже о более продвинутых решениях). Не спорю можно сделать все это на микроконтроллере, но еще раз повторюсь я не спец а только учусь. Для тех кому лень искать инфу о TINI: это по сути микрокомпьютер, и основное назначение это сопряжение высокоскоростных интерфейсов с низкоскоростными. В кратце, имеет порты: Ethernet, CAN, 1-Wire, RS232, 8bit paralell. Имеет файловую систему и Java машину. На каком я этапе сейчас: Во первых мое начальное знакомство с микроконтроллерами AVR заканчилось года 3-4 назад когда делал FUN карту для просмотра спутникового ТВ. Поэтому пришлось начинать с нуля. Сделал сначала подобие STK200/300 после нескольких неудачных экспериментов с Atmega 8 решил что нужен аналог STK500. При изучении программирования понял что и без JTAG не обойтись (Как оказалось симуляторы это одно а в железе часто бывает другое). Таким образом некоторое время ушло на создание железа в том числе отладочных плат (о чем совсем не жалею, хотя могу позволить купить себе готовые решения - наборы STK50Х и JTAG). Когда привезли Тиньку немножко поковырялся- запустил посмотрел пару примеров программ в том числе WEB сервер и отложил. Так же с модемом проверил пару AT команд вошел в GPRS сеть и все. Этим буду заниматься позже. Сейчас приступил к отладке программы для контроллера дискретных датчиков (Atmega16), так все вроде бы работает, но есть проблема в проверке правильно ли он шлет информацию по I2C. Пришлось ваять I2C<->RS232. Затык с USARTом, не пойму почему он шлет абракадабру. Интерфейс I2C работает нормально проверил (USB осциллограф с логическим анализатором). Для чего все это я написал? А для того чтобы найти единомышленников и тех кто считает что «мы рождены что бы сказку сделать былью…» . Скептиков и прочих критиков прошу больно не реагировать. Я знаю что здесь много профи которые всегда подходят с точки зрения практически выгодного дела. Но думаю что есть и не мало любителей для которых главное реализация идей, а не сколько денег это принесет и есть ли в этом смысл. Ведь каждый человек имеет право на свои «причуды». Как говорится мир без чудаков скучен а без дураков не возможен…Я ни в коей мере не претендую на истину и на единственно правильный способ решения просто поделился своими идеями. Потому что считаю что все таки эта тема заслуживает внимания. P.S. Как можно выложить фото «железа» дабы показать что это не треп и фантазии…
--------------------
8 бит = 1 Хоббит
|
|
|
|
|
Dec 22 2006, 21:51
|
Участник

Группа: Новичок
Сообщений: 29
Регистрация: 19-12-05
Пользователь №: 12 407

|
Цитата(Snowmen @ Dec 22 2006, 21:02)  Здравствуйте! Я давно читаю этот форум. И очень много для себя нашел полезного (выражаю всем участникам и создателям сайта свою огромную благодарность), а написать решился впервые. Уж больно тема мне близка. Я как раз сейчас занимаюсь этим. Сразу скажу что я не профессионал ни в электронике ни в программировании, правда радиотехникой увлекаюсь с детства ( а оно было ну очень давно…) так что паяльник держать умею. С вашего позволения немножко пред истории почему у меня возник интерес по данной теме. Где то больше пол года назад купил GSM сигнализацию что бы установить в доме который достался от родителей в наследство и находится где то за 300 км. Продавать не хочется. Так вот посмотрел я на возможности этого устройства (4 канала для дискретных датчиков и 4 канала для управления) и возник вопрос а можно ли сделать покруче? Дальше пошло поехало… Что надо? Как это можно реализовать? После прочтения множества информации ( сразу оговорюсь что решал конкретную свою задачу и не претендую на универсальность хотя есть элементы расширения ) пришел к следующему :
Задачи: 1. контроль дискретных датчиков ( движения, пожарные и т.д.); 2. аналоговые датчики ( наличия 220В, состояния резервных источников АКБ, электростанции и т.д.) ; 3. температурные датчики; 4. управление дискретными устройствами; 5. управление аналоговыми устройствами; 6. возможность дистанционного мониторинга и управления системой ( GSM, Интернет, локальная сеть) ;
Условия: 1.Возможность простого расширения системы (увеличения портов контроля и управления) 2. Малое потребление энергии от резервных источников ( для меня это актуально).
Решение: Мое мнение, что п.п.1-5 оптимально реализовать на микроконтроллерах семейства AVR Mega. Шестой пункт особый он как бы «сердце» его можно реализовать по разному. Я для себя решил ( и уже приобрел ) что это будет плата DSTINIm400+DSTINIs-005 и GSM модем Wavecom Integra M2106 (сразу прошу не бить, я понимаю что это не дешево) . Просто в моем случае это самое то… что нужно.
Топология: Можно все это рассредоточить как здесь предлагается…Но возникает вопрос интерфейса связи, а это на мой взгляд не простая задача и только экономия проводов (я понимаю что не всегда их можно проложить но для меня не проблема). Поэтому я решил что проще все (кроме датчиков и исполнительных устройств разумеется) расположить все в одном месте тем более что это решает проблему интерфейсов и ограничения доступа (хотя с применением TINI это тоже не проблема у нее есть CAN). Думаю что подключение дискретных и аналоговых датчиков вопросов не вызывает. (провод для сигнализации 3-х или 5 парный). В качестве интерфейса между блоками I2C (дает возможность маштабирования системы), между TINI и модемом RS232. Теперь почему TINI? Но во первых это то что я смог приобрести, и то пришлось заказывать в Москве через знакомых (я живу в Киеве и здесь ее нет, не говоря уже о более продвинутых решениях). Не спорю можно сделать все это на микроконтроллере, но еще раз повторюсь я не спец а только учусь. Для тех кому лень искать инфу о TINI: это по сути микрокомпьютер, и основное назначение это сопряжение высокоскоростных интерфейсов с низкоскоростными. В кратце, имеет порты: Ethernet, CAN, 1-Wire, RS232, 8bit paralell. Имеет файловую систему и Java машину. На каком я этапе сейчас: Во первых мое начальное знакомство с микроконтроллерами AVR заканчилось года 3-4 назад когда делал FUN карту для просмотра спутникового ТВ. Поэтому пришлось начинать с нуля. Сделал сначала подобие STK200/300 после нескольких неудачных экспериментов с Atmega 8 решил что нужен аналог STK500. При изучении программирования понял что и без JTAG не обойтись (Как оказалось симуляторы это одно а в железе часто бывает другое). Таким образом некоторое время ушло на создание железа в том числе отладочных плат (о чем совсем не жалею, хотя могу позволить купить себе готовые решения - наборы STK50Х и JTAG). Когда привезли Тиньку немножко поковырялся- запустил посмотрел пару примеров программ в том числе WEB сервер и отложил. Так же с модемом проверил пару AT команд вошел в GPRS сеть и все. Этим буду заниматься позже. Сейчас приступил к отладке программы для контроллера дискретных датчиков (Atmega16), так все вроде бы работает, но есть проблема в проверке правильно ли он шлет информацию по I2C. Пришлось ваять I2C<->RS232. Затык с USARTом, не пойму почему он шлет абракадабру. Интерфейс I2C работает нормально проверил (USB осциллограф с логическим анализатором). Для чего все это я написал? А для того чтобы найти единомышленников и тех кто считает что «мы рождены что бы сказку сделать былью…» . Скептиков и прочих критиков прошу больно не реагировать. Я знаю что здесь много профи которые всегда подходят с точки зрения практически выгодного дела. Но думаю что есть и не мало любителей для которых главное реализация идей, а не сколько денег это принесет и есть ли в этом смысл. Ведь каждый человек имеет право на свои «причуды». Как говорится мир без чудаков скучен а без дураков не возможен…Я ни в коей мере не претендую на истину и на единственно правильный способ решения просто поделился своими идеями. Потому что считаю что все таки эта тема заслуживает внимания. P.S. Как можно выложить фото «железа» дабы показать что это не треп и фантазии… я вот тоже примерно по этому пути шел iasf.narod.ru только теперь смотрю на zigbee
|
|
|
|
|
Dec 22 2006, 22:56
|
Группа: Новичок
Сообщений: 8
Регистрация: 22-12-06
Из: Киев
Пользователь №: 23 789

|
to ASF Признаю титанический труд. И очень интересный путь. Но к сожаленью ( а может к счастью) мне Zegbee не совсем подходит да и нет ее в Киеве. Мне не нужны беспроводные технологии, а тем более мне не под силу написать WEB сервер для микроконтроллера. Тут дай бог с более простыми вещами разобраться. Хотя у меня в перспективе есть подключение ASUS WL-HDD2.5 (Wifi точка+ HDD 40Gb+Ethernet, есть такая у меня штука) к Тини с целью получить доступ в интернет через GPRS и иметь в системе хард. По этому и купил модем с IP стеком. Да действительно есть очень классные вещи но увы не все у нас так быстро появляется...А пока появится то уже устаревает, прогресс не стоит...
--------------------
8 бит = 1 Хоббит
|
|
|
|
|
Dec 23 2006, 12:34
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Snowmen @ Dec 22 2006, 21:02)  сразу прошу не бить… Никто не собирается никого бить Но структура системы не самая удачная, на мой взгляд. Tini - вполне нормальная система, хотя и медленная. Она должна быть ядром системы, и вся логика управления должна быть сосредоточена в ней. Все прочие датчики и исполнительные устройства могут быть подключены по последовательному интерфейсу к Tini по какому-нибудь стандартному протоколу. Мне кажется, что Вы идете по пути распределения интеллекта, а при нехватке опыта создания многопроцессорных систем Вы можете долго его накапливать. Кстати, где Вы используете I2C? Он используется как внешний интерфейс? Он не очень помехоустойчивый.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 25 2006, 01:14
|
Группа: Новичок
Сообщений: 8
Регистрация: 22-12-06
Из: Киев
Пользователь №: 23 789

|
Цитата(Dog Pawlowa @ Dec 23 2006, 11:34)  Цитата(Snowmen @ Dec 22 2006, 21:02)  сразу прошу не бить…
Никто не собирается никого бить Но структура системы не самая удачная, на мой взгляд. Tini - вполне нормальная система, хотя и медленная. Она должна быть ядром системы, и вся логика управления должна быть сосредоточена в ней. Все прочие датчики и исполнительные устройства могут быть подключены по последовательному интерфейсу к Tini по какому-нибудь стандартному протоколу. Мне кажется, что Вы идете по пути распределения интеллекта, а при нехватке опыта создания многопроцессорных систем Вы можете долго его накапливать. Кстати, где Вы используете I2C? Он используется как внешний интерфейс? Он не очень помехоустойчивый. Да я согласен Тини не ПК но для работы в медленых сетях она и предназначена...И поэтому логикой грузить ее не стоит. Тем более что параллельный порт у нее один. А делать расширенее на мой взгляд не оправдано. Добавить пару (даже на пару) логичеких микросхем и усложнить программы Тини? Какой смысл? Я просто в первом посте не описал структуру (он и так большой получился). На мой взгляд то что не требует НЕОДНОЗНАЧНОГО принятия решения надо оставить микроконтролерам Структура: 1. Контроллер дискретных датчиков (Atmega16) 24 порта. функции: -отслеживание состояния и информирование системы о событии на портах -ответ на запрос системы о своем состоянии. -временые задержки включения датчиков -отключенее (включение) отдельных портов -проверка связи с системой (самодиагностика) 2. Контроллер исполнительных дискретных устройств (Atmega16) -включение (отключение) портов -ответ системе о своем сотояниии -проверка связи с системой (самодиагностика) 3. Контроллер (назову его главный который и обеспечивает связь и подготовку информацию для Тини) -связь с контролерами 1 и 2 -отслеживание 8 ми аналогових датчиков -управление аналоговыми устройствами -управление ЖКИ -связь с DTMF (тональное управление с телефона) -диагностика котроллеров 1 и 2 На мой взляд здесь оптимально Atmega32 (обьема ОЗУ больше) Связь между микроконтроллерами и Тини (общая) - I2C. Посколько предполагается что все это находится в одном месте. Для связи с еще одним микроконтроллером (можно и не одним, это перспектива) управления электростанцией- CAN (Поставить микроконтроллеру 3 преобразователь TX<->CAN) или задействовать CAN Тини. Ну в общих чертах я вижу так. По поводу многопроцесорных систем: На мой взгляд проще написать отладить каждый узел системы отдельно (тем более что он становиться законченым узлом) нежели ломать голову где же рвет программма и программа ли? Я убедился что экономя $4 убиваешь несколько вечеров работы. А самое главное что чем сложнее программа тем больше вероятность баггов которые не всегда обнаружишь ( не все связи между подпрограммами и прерываниями можно предусмотреть, я убедился в этом с USART наконец его победил!). Одним словом мой хоть и не большой опыт программирования убедил меня в том что отказ (технический) нескольких микроконтроллеров имеет меньшую вероятность нежели скрытые багги программы (ну может я плохой програмист... Но я и не претендую на профи). Для меня такой путь кажется проще, я не говорю что он эффективный...
--------------------
8 бит = 1 Хоббит
|
|
|
|
|
Dec 25 2006, 10:45
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Snowmen @ Dec 25 2006, 01:14)  Для меня такой путь кажется проще, я не говорю что он эффективный... Проще и эффективнее - это скорее синонимы Я предпочитаю открытость системы, возможность диагностирования и мониторинга каналов связи, и возможность симуляции любого устройства. Посмотрите - в соседней теме анализатор I2C ищут. А Вы как будете отлаживать всю систему, если Вы даже не будете знать, что там происходит? И еще. Достоверность передачи данных как-то проверяется? Контрольные суммы и так далее?
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 25 2006, 15:16
|
Группа: Новичок
Сообщений: 8
Регистрация: 22-12-06
Из: Киев
Пользователь №: 23 789

|
To Dog Pawlowa
Скажите пожалуйста какой внутренний интерфейс предпочли бы Вы? Что бы была и открытость системы и простая диагностика "каналов" связи? Я взял слово каналы в кавычки не зря. Нету у меня каналов связи, нету и все... У меня есть внутрений интерфейс ( шина) между блоками, а он может быть параллельным либо последовательным увы третьего не дано. Паралельный мне не подходит слишком много "ног" микроконтроллера заберет. Что остается? Правильно, последовательный...CAN, Ethernet и т.д. прочие промышленные стандарты мне не нужны (ну не нужны мне сотни метров пока...) таким образом имеем: 1-Wire,I2C,RS232,SPI (USB и прочая шина это уже слишком). Почему из этих четырех именно I2C уже не трудно догадаться. По поводу диагностики I2C. Да нет ничего проще, сделал я энтот монитор на PCF8584 еще месяц назад. Да только на фиг он мне оказался нужен. Не буду расписывать почему он мне не подходит. Скажу вкратце не предусмотрен в программе монитора адрес этого самого монитора. Вот и все. Я каждый раз как вспоминаю об этом так начинаю злиться...Я вначале приобрел USB осциллограф с логическим анализатором потому что там в описании возможностей говорилось что есть терминал 1-Wire,I2c,RS232 и SPI. А оказалось что оно ни фига не работает как терминал а только как анализатор. Я от расстройства погорячился и собрал монитор на PCF8584 особо не вникая в работу программы, как оказалось опять зря. А вот недавно меня "осенило" а не проще ли взять любую AVR с TWI и UART хотя бы Atmega8 и сделать программный RS232<->TWI? Так я и сделал. И есть теперь у меня счастье... Теперь о достоверности. Ничто не мешает програмно реализовать контрольные суммы и прочую лабуду (да хоть 3-des шифрование) на что фантазии хватит...Да только я строю не шатл и даже не самолет, и при передаче нескольких десятков байт стоит ли огород городить?
--------------------
8 бит = 1 Хоббит
|
|
|
|
|
Dec 25 2006, 18:46
|
Группа: Новичок
Сообщений: 8
Регистрация: 22-12-06
Из: Киев
Пользователь №: 23 789

|
Вот все больше убеждаюсь что почему то у многих прям ненависть к I2C. А вот у разработчиков телевизоров, мониторов и прочей техники совершенно противоположное мнение. И чего то не замечал что бы мои телевизоры "висли". Да и сейчас при отладке программы контроллера дискретнных датчиков не замечаю ни чего подобного...Ладно поживем увидим.
--------------------
8 бит = 1 Хоббит
|
|
|
|
|
Dec 26 2006, 11:32
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Snowmen @ Dec 25 2006, 15:16)  To Dog Pawlowa Скажите пожалуйста какой внутренний интерфейс предпочли бы Вы? Что бы была и открытость системы и простая диагностика "каналов" связи? Я бы взял RS485. Да собственно почему "БЫ" - я взял RS485 Открытость можно трактовать как простое добавление нового устройства в параллель. Простая диагностика - возможность постоянного ведения логов обмена и визуализация текущего состояния. Скриншот программки визуализации приаттачен.
Цитата(Snowmen @ Dec 25 2006, 15:16)  Да только я строю не шатл и даже не самолет, и при передаче нескольких десятков байт стоит ли огород городить? Шаттл чужой. А дача своя  Разморозить систему отопления из-за сбоя ? Объявить ложную пожарную тревогу?  Это не телевизор мигнет. Цитата(Snowmen @ Dec 25 2006, 15:16)  Вот все больше убеждаюсь что почему то у многих прям ненависть к I2C. А вот у разработчиков телевизоров, мониторов и прочей техники совершенно противоположное мнение. Вы путаете ненависть с пониманием области применения - телевизоры, мониторы и прочая ПОДОБНАЯ техника.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 26 2006, 15:45
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Mack @ Dec 20 2006, 13:12)  есть ли у кого-то опыт подключения самых разных датчиков (охранных, температуры итд) в сеть ETHERNET ? Может быть есть датчики с Ethernet - интерфейсом (со встроенным ВЕБ-интерфейсом) ? или Ethernet - адаптеры ? Кто-нибудь может, что-нибудь сказать по этому поводу ? работаем и с Ethernet. Связка 51(основной) + 51(сетевой) + CS8900A(в набор входит и трансик и разьёмчик) + ОЗУ(32). Стэк свой (ARP, ICMP, IP, UDP) с поддержанием дефрагментации на IP уровне и иже. Управляются установки из под форточек (UDP). Так же сканируем параметры работы установок (приточно-вытяжные). Сканируются более десятка параметров, в том числе и температурные датчики с шагом от 1 с. до 10 с.. В экселе получаются красивые графики аднака... плюсы - не бум...(система не закончена и имеет не только одно направление по применению). минусы - наверное трудозатраты я бы отметил. ну можно ышо скорости..до 10 не дотягиваем... с уважением (круглый)
Сообщение отредактировал kolobok0 - Dec 26 2006, 15:47
|
|
|
|
|
Dec 27 2006, 00:50
|
Группа: Новичок
Сообщений: 9
Регистрация: 8-08-05
Пользователь №: 7 436

|
Сам недавно столкнулся и был приятно удивлен. Все сейчас сильно подешевело и обрело благородные черты  . CAN и только CAN !!! Максимум 150руб на устройство - зато никакой мороки с протоколами и прочими арбитражами. Сказал "послать кадр для 15-го" - и он послался. Все. Про качество интерфейса, думаю, говорить не надо. Конечно, подороже ср485 от Sipex, зато удобства выше крыши.
|
|
|
|
|
Jun 4 2009, 07:53
|
Группа: Новичок
Сообщений: 3
Регистрация: 20-04-09
Пользователь №: 47 981

|
Идеологии промышленности несколько отличаются от заявленной темы - "умный дом" Дом сам должен ( пусть относительно медленно) проверять , перепроверять себя и принимать решения. Сигнализировать об ошибке, нарушении , или временно оставить без внимания некоторые "не доступные" датчики. Во главу угла - не жестокие протоколы типа CAN, а идеология - что делать если ответ от датчика не тот, что ожидали. Программное решение разрулит и I2C и RS485. И вообще простота установки иполнительных и следящих систем - применение радио канала. Вот найти ("изобрести") приемопередатчики этак за 200-300 руб., да протокол связи с упором на идеологию , а не "ченоящечную зигбю"! Умный дом - это объем в реальных границах (желательно не конфликтующий с соседним умным домом). Вот и нужно заполять этот объем радио (эфиром) , где дотупность -не дыра в стене, или провода по плинтусу, а наличие розетки (или батарейки).
|
|
|
|
|
Sep 7 2009, 15:04
|

Местный
  
Группа: Свой
Сообщений: 267
Регистрация: 11-11-04
Из: Одесса
Пользователь №: 1 103

|
У меня возник вопрос как нужно реализовывать управление что бы при отказе автоматического исполнительного устройства оставалось ручное управление? В качестве среды думаю самое актуальное радио (не нужно долбить стены) или RS-485 (много устройств автоматизации работает на MODBUS). В плане дешового радио поднималась тема тут на форумеОттуда взял вот этот передатчик возник вопрос для "Умного дома" как реализовать маршрутизацию пакета при малой дальности передачи в помещении: Если есть пять точек одна видит до двух соседей как от первого передать пакет пятому 1-2-3-4-5 1 видит 2 и 3 2 видит 1, 3 и 4 3 видит всех ... 5 видит 3 и 4
|
|
|
|
|
Sep 7 2009, 15:19
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата как реализовать маршрутизацию пакета при малой дальности передачи в помещении: Ооо... Тут, понимаете ли, есть некоторое количество проблем. Если пробовать решать экстремально дешево, то в устройствах негде хранить таблицы маршрутизации. А значит, адрес устройства должен определять маршрут. Есть несколько способов (описание одного из них постараюсь завтра выложить). Идея с координатором (ZigBee, например) конечно хороша, но если ложится координатор - ложится сеть. А так как все остальные устройства координатором не могут являться (это я про острый случай бюджетного варианта - нет ресурсов), и подхватить упавшее знамя не могут, то получается (_*_). Конечно, можно резервировать координатор, но, лично у меня, душа к такому решению не лежит.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Sep 7 2009, 15:40
|

Местный
  
Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035

|
Цитата(Rst7 @ Sep 7 2009, 19:19)  Идея с координатором (ZigBee, например) конечно хороша, но если ложится координатор - ложится сеть. А так как все остальные устройства координатором не могут являться (это я про острый случай бюджетного варианта - нет ресурсов), и подхватить упавшее знамя не могут, то получается (_*_). Конечно, можно резервировать координатор, но, лично у меня, душа к такому решению не лежит. Это откуда такая инфа??? Координатор нужен для первоначального постороения сети, состоящей из роутеров и конечных устройств. И если в такой работающей сети отключить координатор, то она продолжет спкойно функционировать. Естественно, данные на координатор не будут доходить, но все остальные узлы будут между собой нормально общаться.
|
|
|
|
|
Sep 7 2009, 16:18
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Это откуда такая инфа??? Пардон, я некорректно выразился - не к месту сослался на ZigBee, хотя слово "координатор" употребил не в смысле "координатора ZigBee", а в смысле узла(ов), который обеспечивает маршрутизацию пакетов (потому как в оконечных девайсах мозга для маршрутизации практически нет), или начальное исследование топологии с присвоением адресов-маршрутов (завтра выложу описание патента, там все пакеты, получается, через ядро сети ходят).
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Sep 7 2009, 17:16
|

Местный
  
Группа: Свой
Сообщений: 267
Регистрация: 11-11-04
Из: Одесса
Пользователь №: 1 103

|
Цитата ... но, лично у меня, душа к такому решению не лежит А к чему лежит? Я пока нашел построение таких вещей только в Zig Bee И еще вопрос периемо передатчик который я преводил выше можно применять для Zig Bee. Диапазон вроде совпадает?
|
|
|
|
|
Sep 8 2009, 05:14
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата И еще вопрос периемо передатчик который я преводил выше можно применять для Zig Bee. Диапазон вроде совпадает? Ну я так понимаю, подходящего вида модуляции там нет. Кстати, обещанный патент:
Method_and_apparatus_for_routing_messages_in_a_network_of_nodes_with_minimal_resources.pdf ( 616.36 килобайт )
Кол-во скачиваний: 259
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|