Умный Дом по Ethernet

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
dimonix
Сообщения: 368
Зарегистрирован: 19 фев 2012, 22:01
Откуда: Сколково

Re: Умный Дом по Ethernet

Сообщение dimonix » 27 дек 2012, 14:25

Agent писал(а):Добрый день.
...
Подскажите этот пост viewtopic.php?p=550#p550 со схемами актуальный на данный момент?
вот здесь http://tuxgraphics.org/electronics/2006 ... 6061.shtml первоисточник проекта с описанием и картинками :)

Agent
Сообщения: 17
Зарегистрирован: 24 фев 2012, 22:45

Re: Умный Дом по Ethernet

Сообщение Agent » 27 дек 2012, 14:59

dimonix писал(а):
Agent писал(а):Добрый день.
...
Подскажите этот пост viewtopic.php?p=550#p550 со схемами актуальный на данный момент?
вот здесь http://tuxgraphics.org/electronics/2006 ... 6061.shtml первоисточник проекта с описанием и картинками :)
там нету разводки элементов.
Да и по питанию вроде другой транзистор стоит.
Всегда исправленная и доведенная схема лучше первоисточника=)

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 28 дек 2012, 00:25

SAM-soft, ну проблему я, положим, нашел.
Попробуйте сделать вот что:
1. Запустите редактор реестра Windows
2. Перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters
3. Создайте ключи типа DWORD
TcpTimedWaitDelay (значение в ДЕСЯТИЧНОМ! виде 30)
MaxUserPort (значение в ДЕСЯТИЧНОМ! виде 20000)
4. Обязательно перезагрузите Windows.

alexsis_76

Re: Умный Дом по Ethernet

Сообщение alexsis_76 » 28 дек 2012, 02:53

Andrey_B писал(а): ну проблему я, положим, нашел.
А можно описание , где искать

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 28 дек 2012, 12:25

alexsis_76, "это не глюк - это фича".
Название этой "проблемы" - состояние сокета в режиме TIME_WAIT.
Так устроен протокол TCP/IP.
"When you close a socket, the server goes into a TIME_WAIT state, just to be really really sure that all the data has gone through."
Если сессию закрывает клиент, сокет переводится в режим TIME_WAIT на клиенте. Если сессию закрывает сервер, аналогичный процесс происходит на стороне сервера.
Подробное объяснение здесь в пункте 2.7 "Please explain the TIME_WAIT state.": http://www.softlab.ntua.gr/facilities/d ... faq-2.html

Резюме такое: TIME_WAIT - это часть механизма, позволяющий гарантировать нормальную работу протокола.
"One should not avoid the TIME_WAIT state. The TIME_WAIT state is there for a reason; it's your friend and it's there to help you :-)"

Проблема Windows заключается в том, что
а) Время жизни сокета в TIME_WAIT по умолчанию равно 240 секндам (в Unix-системах обычно 30 секунд)
б) Небольшой лимит на TIME_WAIT соединения (по сравнению с Unix-системами)

Эти два обстоятельства можно попытаться изменить записями в реестр.

SAM-soft
Сообщения: 40
Зарегистрирован: 17 дек 2012, 11:32

Re: Умный Дом по Ethernet

Сообщение SAM-soft » 28 дек 2012, 16:23

Андрей, большое спасибо за помощь! А то я уже начал собирать сервер на Linuxe который должен принимать и пересылать сообщения в Windows Serwer 2008.
Андрей скажите пожалуйста. Вы в новых прошивках собираетесь исправлять этот нюанс?

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 28 дек 2012, 16:47

SAM-soft, а это не то чтобы нюанс. В целом это совершенно нормальная работа TCP/IP протокола.
Открытые сокеты в состоянии TIME_WAIT после истечения определенного времени сами закрываются.
Решение тут может быть таким: сделать так, чтобы инициировал закрытие соединения сам Мегадевайс, а не сервер. Сбрасывание (RST) соединения как вариант мы не рассматриваем. Поизучаю этот вопрос.

SAM-soft
Сообщения: 40
Зарегистрирован: 17 дек 2012, 11:32

Re: Умный Дом по Ethernet

Сообщение SAM-soft » 28 дек 2012, 19:38

Андрей, а подскажите пожалуйста, почему мое устройство имеет свойство засыпать, и не просыпаться. Это связано с тем что такт получает от ENCа. если поставить свой кристал то проблема решится?

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 28 дек 2012, 19:46

SAM-soft, у себя такой проблемы не наблюдал. Тактировал как от внешнего кварца, так и от ENC28J60.
А засыпает ли оно? Или зависает? Поставьте в цикле ping и посмотрите что будет.

SAM-soft
Сообщения: 40
Зарегистрирован: 17 дек 2012, 11:32

Re: Умный Дом по Ethernet

Сообщение SAM-soft » 28 дек 2012, 22:13

Поставьте в цикле ping и посмотрите что будет.

Андрей, извините но не совсем понял ка это в цикле!

NetGuru
Сообщения: 14
Зарегистрирован: 17 июл 2012, 17:16

Re: Умный Дом по Ethernet

Сообщение NetGuru » 28 дек 2012, 22:15

ping 10.10.10.1 -t -w 1000

SAM-soft
Сообщения: 40
Зарегистрирован: 17 дек 2012, 11:32

Re: Умный Дом по Ethernet

Сообщение SAM-soft » 28 дек 2012, 22:21

Андрей спасибо, посмотрю!

figaro001
Сообщения: 10
Зарегистрирован: 12 янв 2012, 19:36

Re: Умный Дом по Ethernet

Сообщение figaro001 » 31 дек 2012, 20:40

Посмотрел по форуму и понял, что не все в теме, как и что компилировать и что и для чего нужно.

Сам тоже начал разбираться с самого начала. Если что не правильно, то поправьте.
Итак, что и как делать в Linux (Ubuntu 12.10):
Устанавливаем следующие пакеты:
sudo apt-get install avr-libc gcc-avr avrdude binutils-avr arduino (этот пакет установит оболочку Arduino и подтянет еще нужные пакеты) geany (удобный редактор, который позволяет компилировать в графической оболочке)

Открываем Geany и создаем проект:
Изображение

В созданную папку "/home/figaro/Projekte/MegaD-328/" копируем все содержимое архива с прошивкой:

ls -al /home/figaro/Projekte/MegaD-328/
insgesamt 180
drwx------ 2 figaro figaro 4096 Dez 31 17:11 .
drwx------ 3 figaro figaro 4096 Dez 29 22:05 ..
-rw-rw-r-- 1 figaro figaro 13732 M?r 20 2012 enc28j60.c
-rw-rw-r-- 1 figaro figaro 10019 Feb 25 2012 enc28j60.h
-rw-rw-r-- 1 figaro figaro 59014 Apr 14 2012 ip_arp_udp_tcp.c
-rw-rw-r-- 1 figaro figaro 10675 M?r 22 2012 ip_arp_udp_tcp.h
-rw-rw-r-- 1 figaro figaro 1528 Feb 29 2012 ip_config.h
-rw-rw-r-- 1 figaro figaro 38033 Dez 30 23:20 main.c
-rw-rw-r-- 1 figaro figaro 2333 Dez 29 22:34 Makefile
-rw-rw-r-- 1 figaro figaro 3210 Feb 25 2012 net.h
-rw-rw-r-- 1 figaro figaro 149 Feb 12 2011 timeout.h
-rw-rw-r-- 1 figaro figaro 6447 Jan 4 2012 websrv_help_functions.c
-rw-rw-r-- 1 figaro figaro 813 Jan 4 2012 websrv_help_functions.h

В файле "Makefile" описаны правила компиляции.

1-й раз нам нужно в Geany открыть файл "main.c":

Потом в меню выбрать "Erstellen" (создать) и выбрать "Make":
Изображение

И в нашей дирректории видим следующие файлы:

ls -al /home/figaro/Projekte/MegaD-328/
insgesamt 488
drwx------ 2 figaro figaro 4096 Dez 31 17:17 .
drwx------ 3 figaro figaro 4096 Dez 29 22:05 ..
-rw-rw-r-- 1 figaro figaro 13732 M?r 20 2012 enc28j60.c
-rw-rw-r-- 1 figaro figaro 10019 Feb 25 2012 enc28j60.h
-rw-rw-r-- 1 figaro figaro 12472 Dez 31 17:17 enc28j60.o
-rw-rw-r-- 1 figaro figaro 59014 Apr 14 2012 ip_arp_udp_tcp.c
-rw-rw-r-- 1 figaro figaro 10675 M?r 22 2012 ip_arp_udp_tcp.h
-rw-rw-r-- 1 figaro figaro 32996 Dez 31 17:17 ip_arp_udp_tcp.o
-rw-rw-r-- 1 figaro figaro 1528 Feb 29 2012 ip_config.h
-rw-rw-r-- 1 figaro figaro 37207 Dez 31 17:17 main.c
-rw-rw-r-- 1 figaro figaro 51096 Dez 31 17:17 main.o
-rw-rw-r-- 1 figaro figaro 2333 Dez 29 22:34 Makefile
-rw-rw-r-- 1 figaro figaro 2330 Apr 14 2012 Makefile~
-rwxrwxr-x 1 figaro figaro 83372 Dez 31 17:17 megad-328.elf
-rw-rw-r-- 1 figaro figaro 51105 Dez 31 17:17 megad-328.hex
-rw-rw-r-- 1 figaro figaro 55058 Dez 31 17:17 megad-328.map

-rw-rw-r-- 1 figaro figaro 3210 Feb 25 2012 net.h
-rw-rw-r-- 1 figaro figaro 149 Feb 12 2011 timeout.h
-rw-rw-r-- 1 figaro figaro 6447 Jan 4 2012 websrv_help_functions.c
-rw-rw-r-- 1 figaro figaro 813 Jan 4 2012 websrv_help_functions.h
-rw-rw-r-- 1 figaro figaro 9280 Dez 31 17:17 websrv_help_functions.o

Файл "megad-328.hex" прошиваем в Микроконтроллер.


Если все делать из консоли, то:

cd /home/figaro/Projekte/MegaD-328/
/home/figaro/Projekte/MegaD-328/$ make all
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -Os -c main.c
In file included from main.c:17:0:
ip_arp_udp_tcp.h:46:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
In file included from main.c:17:0:
ip_arp_udp_tcp.h:138:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.h:153:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.h:153:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -Os -c ip_arp_udp_tcp.c
ip_arp_udp_tcp.c:69:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:71:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:409:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:650:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:1257:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:1275:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
ip_arp_udp_tcp.c:1275:1: warning: ‘prog_char’ is deprecated: prog_char type is deprecated. [-Wdeprecated-declarations]
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -Os -c enc28j60.c
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -Os -c websrv_help_functions.c
avr-gcc -g -mmcu=atmega328p -Wall -W -Os -mcall-prologues -o megad-328.elf -Wl,-Map,megad-328.map main.o ip_arp_udp_tcp.o enc28j60.o websrv_help_functions.o
avr-objcopy -R .eeprom -O ihex megad-328.elf megad-328.hex
avr-size megad-328.elf
text data bss dec hex filename
17974 903 1007 19884 4dac megad-328.elf

Expl.: data=initialized data, bss=uninitialized data, text=code

figaro001

Сообщения: 3
Зарегистрирован: 12 янв 2012, 16:36


Что мне не понятно:
1. Мой скомпилированный файл "megad-328.hex" весит 51105 байт при компиляции в 32-битном Linux - тот же размер, при компиляции в Windows - 53519 байт.
Как у Автора получилось - 44285 байт - не понимаю!

2. Еще непонятна взаимосвязь размера "HEX" и реального размера памяти микроконтроллера. Как эти 40-50 Кбайт влазят в микроконтроллер. И как по размеру "HEX" понять, влезет ли он в микроконтроллер???

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 31 дек 2012, 21:45

1. С новым 2013-м годом!
2. То, что с помощью разных компиляторов получается разный по объему машинный код совершенно нормально
3. Размер hex последней прошивки 53519. Debian Squeeze, стабильный репозитарий.
4. Компилятор в Linux создает elf-файл, который потом через avr-objcopy конвертируется в hex.
5. Реальный размер, который прошивка займет во флеш-памяти МК можно посмотреть с помощью команды avr-size -C --mcu=atmega328 megad-328.elf

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 06 янв 2013, 01:00

ребята, подскажите пожалуйста, как реализовать функцию управления в данном девайсе, чтобы выход МК включался не в триггерном режиме, а только на момент удержания кнопки ?

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

Re: Умный Дом по Ethernet

Сообщение dimonix » 06 янв 2013, 01:48

reff писал(а):ребята, подскажите пожалуйста, как реализовать функцию управления в данном девайсе, чтобы выход МК включался не в триггерном режиме, а только на момент удержания кнопки ?
Давайте дружно попросим ув. Андрея добавить в код реакцию и на положительный фронт с указанием состояния после срабатывания (сейчас есть только отрицательный и только номер порта). т.е. на сервер будет уходить что-то типа

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

http://server-ip/script?pt=10&st=0 или http://server-ip/script?pt=10&st=1
когда сработает 10 порт с 1 на 0 (отрицательный фронт) или с 0 на 1 (положительный фронт).

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 06 янв 2013, 12:32

dimonix писал(а):
reff писал(а):ребята, подскажите пожалуйста, как реализовать функцию управления в данном девайсе, чтобы выход МК включался не в триггерном режиме, а только на момент удержания кнопки ?
Давайте дружно попросим ув. Андрея добавить в код реакцию и на положительный фронт с указанием состояния после срабатывания (сейчас есть только отрицательный и только номер порта). т.е. на сервер будет уходить что-то типа

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

http://server-ip/script?pt=10&st=0 или http://server-ip/script?pt=10&st=1
когда сработает 10 порт с 1 на 0 (отрицательный фронт) или с 0 на 1 (положительный фронт).
ув. Андрей, спасайте, пожалуйста ситуацию))) очень нужно)))) тем более,это очень существенно расширит возможности вашего устройства)))

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 06 янв 2013, 18:48

kab1561 писал(а):
ipf писал(а):Подскажите пожалуйста, может кто делал мегадевайс на SMD.
Мой один из вариантов исполнения - где почти все в SMD.
Если кому интересно,выкладываю исполнительный блок на реле и ULN2003
Делал под плату kab1561. Подключаются 2 модуля по шлейфу IDE
Вложения
исполнительный блок.rar
(249.39 КБ) 1546 скачиваний

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 08 янв 2013, 20:30

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

SAM-soft
Сообщения: 40
Зарегистрирован: 17 дек 2012, 11:32

Re: Умный Дом по Ethernet

Сообщение SAM-soft » 10 янв 2013, 17:28

Андрей, добрый день. Подскажите пожалуйста, обнаружил такую проблему. Устройство работает нормально, но если у него не срабатывает ни один вход в течении минут 10-20 (точно не скажу), то оно перестает работать из сетью, даже не пингуется, что может быть и как можно проверить этот момент.

Ответить