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

|
Прошу знающих посоветовать с чего начать. Делать буду для себя. Идеи такие: В комнате, корридоре и на кухне в стенах утоплены панели управления каждая представляет из себя: - дисплей ЖК 16х2 - кнопки управления стрелка вверх, вниз, выбор и назад, т.е. всего 4 кнопки. - датчик температуры для каждой панели - управляющая микросхемка (атмега8 или 16 наверное) - датчик ИК для приема комманд с пульта ДУ А также есть исполнительные устройства, например в выключателе освещения, которые слушают, что им говорят панели и выполняют команды (например выключить свет).
Вопросы: Какие мк использовать? (для панелей наверное что нибудь из серии мега а для исполнительных - тини) Как организовать между мк одноранговую сеть? (желательно удобную для прокладки в стенах) Как узнать какую систему комманд использует пульт? (от тв-тюнера маленький плоский, на одной таблетке-батарейке)
Сообщение отредактировал ps1x - Mar 25 2006, 21:55
|
|
|
|
|
 |
Ответов
|
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 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 посмотреть ???
|
|
|
|
Сообщений в этой теме
ps1x Умный дом. Mar 25 2006, 21:46 vet В ATtiny25/45/85 есть встроенный датчик температур... Mar 25 2006, 23:18 ps1x ЦитатаВ ATtiny25/45/85 есть встроенный датчик темп... Mar 26 2006, 00:32 =AK= Хорошее описание некоторых популярных ИК протоколо... Mar 26 2006, 05:43 impuls-v А связь по электропровлдке тебя не устроит и стены... Mar 26 2006, 10:04 ps1x Большое спасибо за подробное разъяснение протоколо... Mar 26 2006, 10:20 =AK= Цитата(ps1x @ Mar 26 2006, 19:50) И еще к... Mar 26 2006, 11:34 ps1x и еще как будет физически реализована панель управ... Mar 26 2006, 11:28 ps1x Тоесть, насколько я понял, все подключены к одному... Mar 26 2006, 11:39 ps1x Есть ли у кого нибудь ссылка на понятный для неокр... Mar 26 2006, 15:27 ps1x Почему код:
Цитатаunsigned char kod;
char disp1[16... Mar 26 2006, 16:37 Petka Цитата(ps1x @ Mar 26 2006, 19:37) выдает ... Mar 26 2006, 16:49 ps1x Цитатаunsigned char kod;
char disp1[16];
unsigned ... Mar 26 2006, 17:07 zltigo Цитата(ps1x @ Mar 26 2006, 19:07) При дво... Mar 26 2006, 18:16 ps1x Код
char *disp1;
disp1="Не работает";
- т... Mar 26 2006, 18:39 vet flash char *disp1;
disp1="Не работает"; Mar 26 2006, 20:01 zltigo Цитата(ps1x @ Mar 26 2006, 20:39) 1)
char... Mar 26 2006, 20:30 bezobraznic Цитата(ps1x @ Mar 27 2006, 00:01) Как зас... Mar 26 2006, 21:35 ps1x Как я понял, ИСИС с русским не дружит... )
Тем не ... Mar 26 2006, 22:27 Balaganov Цитата(ps1x @ Mar 27 2006, 00:27) Как я п... Mar 27 2006, 17:54 ps1x ОБНАРУЖЕНЫ СЛЕДУЮЩИЕ ОШИБКИ
Произошла ошибка при з... Mar 27 2006, 14:10 ps1x Не смог я всетаки со своим меню разобраться, посем... Mar 27 2006, 17:54 Laptop Цитата(ps1x @ Mar 27 2006, 20:54) Не смог... Mar 27 2006, 18:41  ps1x Цитата(Laptop @ Mar 27 2006, 22:41) Цитат... Mar 27 2006, 18:54   Laptop Цитата(ps1x @ Mar 27 2006, 21:54) Дык а е... Mar 27 2006, 19:23 _artem_ Для начала вот это достаточно будет .:
http://rap... Mar 27 2006, 18:26 ps1x Cпасибо! ценная информация! Mar 27 2006, 18:31 ps1x Ну, отображаться будут две строки меню (на дисплее... Mar 27 2006, 21:45 Laptop Цитата(ps1x @ Mar 28 2006, 00:45) Ну, ото... Mar 28 2006, 17:11 ps1x Ну что, неужели не у кого нет идей или своих нара... Mar 28 2006, 11:44 zltigo Цитата(ps1x @ Mar 28 2006, 13:44) Ну что,... Mar 28 2006, 13:24 ps1x Просто перешел от главной темы, к частностям, т.е.... Mar 28 2006, 13:52 zltigo Цитата(ps1x @ Mar 28 2006, 15:52) удобно ... Mar 28 2006, 14:57 BVU Вообще-то подобный комплекс (умный дом) основанный... Mar 29 2006, 06:02 kolobok0 Цитата(BVU @ Mar 29 2006, 10:02) Вообще-т... Mar 29 2006, 10:39 ps1x Думаю я для себя буду делать на rs232 - проще и де... Mar 29 2006, 10:56 kolobok0 Цитата(ps1x @ Mar 29 2006, 14:56) Думаю я... Mar 29 2006, 11:03 viael Цитата(ps1x @ Mar 29 2006, 11:56) Думаю я... Dec 2 2006, 11:13 ps1x подключения- максимум метров 6. 1 wire имеется вви... Mar 29 2006, 11:06 kolobok0 Цитата(ps1x @ Mar 29 2006, 15:06) подключ... Mar 29 2006, 11:08 beer_warrior rs232 я бы не рекомендовал. Ограничение на расстоя... Mar 29 2006, 11:27 kolobok0 Цитата(beer_warrior @ Mar 29 2006, 15:27)... Mar 29 2006, 11:43 beer_warrior Цитатанемного поколдовать над протоколом...и штук ... Mar 29 2006, 14:34 александр_в Хотелось-бы поговорить об функциях умного дома, а ... Mar 29 2006, 20:05 kolobok0 Цитата(александр_в @ Mar 30 2006, 00:05) ... Mar 30 2006, 11:44  defunct Цитата(kolobok0 @ Mar 30 2006, 13:44) Цит... Mar 31 2006, 00:59   Dog Pawlowa Цитата(defunct @ Mar 31 2006, 00:59) Я бы... Dec 1 2006, 16:51 александр_в Частично уже реализовано.
Голосовое управление оче... Mar 31 2006, 14:13 defunct Цитата(александр_в @ Mar 31 2006, 16:13) ... Mar 31 2006, 14:27 Himik_2 А такой вариант не подойдёт ? У меня собрано: цент... Dec 1 2006, 15:13 SasaVitebsk Смотрел я давече по euronews как за данную идею в ... Dec 1 2006, 17:14 Dog Pawlowa Цитата(SasaVitebsk @ Dec 1 2006, 17:14) Н... Dec 1 2006, 17:55 demaven Покувыркались мы недавно с передачей по сети 220. ... Dec 2 2006, 13:37 Mack есть ли у кого-то опыт подключения самых разных да... Dec 20 2006, 13:12 o-henry Цитата(Mack @ Dec 20 2006, 12:12) есть ли... Dec 20 2006, 15:11  Dog Pawlowa Цитата(o-henry @ Dec 20 2006, 15:11)... Dec 20 2006, 16:57 kolobok0 Цитата(Mack @ Dec 20 2006, 13:12) есть ли... Dec 26 2006, 15:45 Snowmen Здравствуйте!
Я давно читаю этот форум. И оче... Dec 22 2006, 21:02 asf Цитата(Snowmen @ Dec 22 2006, 21:02) Здра... Dec 22 2006, 21:51 Dog Pawlowa Цитата(Snowmen @ Dec 22 2006, 21:02) сраз... Dec 23 2006, 12:34  Snowmen Цитата(Dog Pawlowa @ Dec 23 2006, 11:34) ... Dec 25 2006, 01:14   Dog Pawlowa Цитата(Snowmen @ Dec 25 2006, 01:14) Для ... Dec 25 2006, 10:45 Snowmen to ASF
Признаю титанический труд. И очень интерес... Dec 22 2006, 22:56 Snowmen To Dog Pawlowa
Скажите пожалуйста какой внутренни... Dec 25 2006, 15:16 Dog Pawlowa Цитата(Snowmen @ Dec 25 2006, 15:16) To D... Dec 26 2006, 11:32 proba Вам уже советовали LIN. I2C с длинными линиями себ... Dec 25 2006, 16:10 Snowmen Вот все больше убеждаюсь что почему то у многих пр... Dec 25 2006, 18:46 MaxVovk Сам недавно столкнулся и был приятно удивлен. Все ... Dec 27 2006, 00:50 atmel45 Идеологии промышленности несколько отличаются от з... Jun 4 2009, 07:53 Serega Doc У меня возник вопрос как нужно реализовывать управ... Sep 7 2009, 15:04 Rst7 Цитатакак реализовать маршрутизацию пакета при мал... Sep 7 2009, 15:19 xelax Цитата(Rst7 @ Sep 7 2009, 19:19) Идея с к... Sep 7 2009, 15:40 Rst7 ЦитатаЭто откуда такая инфа???
Пардон, я некорре... Sep 7 2009, 16:18 Serega Doc Цитата... но, лично у меня, душа к такому решению ... Sep 7 2009, 17:16 Rst7 ЦитатаИ еще вопрос периемо передатчик который я пр... Sep 8 2009, 05:14
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|