Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Открытый проект умного дома

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.11.2012, 00:57   #11
NEXT
Member
 
Регистрация: 23.11.2012
Сообщений: 47
Вес репутации: 184
NEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud of
По умолчанию

Цитата:
Сообщение от mebitek Посмотреть сообщение
То есть ты предлагаешь к одной ардуине прицепить все существующие датчики и узлы управления на одну wire ?
Ну не совсем так, хотя и так можно. Шина выдержит кучу датчиков и устройств.
Я планирую в своей полу-умной даче, использовать 3 ардуино нано, плюс ардуино мегу с дисплеем и плюс андроид планшет с сервером.
каждая нано обрабатывает и управляет своим "участком" это отопление, климат и мелкие операции по дому типа полив и освещение, энергия...,а вот Мега следит за ними и пересылает все данные на сервер... ата уж управление в ручную..
Вот, а ардуинки между собой можно связать по протоколу RS485..
а Мегу с сервером по TCP/IP

А в этоге все собрать дискретно, на атмегах, получаться нормальные модули.



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

Последний раз редактировалось NEXT; 24.11.2012 в 01:04. Причина: Добавлю про энергию
NEXT вне форума   Ответить с цитированием
Старый 24.11.2012, 01:07   #12
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Мегу можно к серверу на роутере tl-mr3020 с OpenWrt подключить.
На роутере установить веб сервер и веб интерфейс к нему
Admin вне форума   Ответить с цитированием
Старый 24.11.2012, 01:20   #13
NEXT
Member
 
Регистрация: 23.11.2012
Сообщений: 47
Вес репутации: 184
NEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud of
Smile

Цитата:
Сообщение от Admin Посмотреть сообщение
Мегу можно к серверу на роутере tl-mr3020 с OpenWrt подключить.
На роутере установить веб сервер и веб интерфейс к нему
Все правильно, у меня есть 703, но я смотрю в связку нано и карамбола , кстати с вашей подачи, так как я уже год как читатель вашего форума

Добавлю я еще расматриваю планшет с андроидом SONY уж больно подходит для полуумного дома у него есть возможность за выступы повесить как рамку на стену....
с установленым сервером KSWEB , плюс мобильник с андроидом для дополнительного управления....ну может и ипад прикручу потом

Последний раз редактировалось NEXT; 24.11.2012 в 01:32.
NEXT вне форума   Ответить с цитированием
Старый 24.11.2012, 01:33   #14
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

С карамболой можно и без меги обойтись, у нее разведены пины GPIO
Admin вне форума   Ответить с цитированием
Старый 24.11.2012, 01:43   #15
NEXT
Member
 
Регистрация: 23.11.2012
Сообщений: 47
Вес репутации: 184
NEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud of
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
С карамболой мега не понадобится, у нее разведены пины GPIO
Это ясно, держит меня как всегда техподдержка и будующее сего девайса, сколько случаев когда начинают и бросают...где его потом искать?
у меня Пингуино мертвым грузом лежит, а там пик32 на 80 мгц
поэтому думаю ориентир на Атмегу и Андроид... ардуино и все прочие как средство разработки.. готовые модули потом нарисовать непроблема.
NEXT вне форума   Ответить с цитированием
Старый 24.11.2012, 05:17   #16
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1310
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Цитата:
3. Главный ПК работает в режиме - мастер. По его инициативе происходит периодический опрос и управление помощниками. Он в цикле перебирает всех помощников сохраняет переменные их состояния в свою базу (таблицу переменных), а также по инициативе пользователя либо по алгоритму меняет состояние выходов помощников т.е. управляет ими.
Это и есть протокол Modbus ?

Получается ардуины должны работать в режиме "помощник", а главный должен непрерывно опрашивать их. А как же тогда они будут отвечать?
...............
Или нужно так:
Главный отправляет ардуине №1 , в запросе: стартовый байт > ID-устройства > разрешение на отправку данных и переключается на приём, принимает данные от ардуины.
Что дальше? Отправлять запрос на следующую ардуину или отправлять инфу принятую от первой ардуины на сервер?
Или:
Главный отправляет ардуине №1 , какую-то инфу с сервера: стартовый байт > ID-устройства > инфа.
Что дальше?

Последний раз редактировалось stD; 24.11.2012 в 05:30.
stD вне форума   Ответить с цитированием
Старый 24.11.2012, 11:19   #17
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1604
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от mebitek Посмотреть сообщение
Это и есть протокол Modbus ?
В принципе да, это и есть протокол Modbus. Естественно всю "кухню" я не расписывал. Контрольные суммы, сам формат кадра и прочую низкоуровневую фигню. Зачем выдумывать свой велосипед, если уже есть все готовое..

Цитата:
Получается ардуины должны работать в режиме "помощник", а главный должен непрерывно опрашивать их. А как же тогда они будут отвечать?
...
Для того чтобы понять механизм обмена вам нужно почитать как работает этот протокол. У Modbus есть различные функции чтения и записи т.н. регистров. При использовании готовых библиотек этот обмен происходит автоматом и как бы скрыт явно.

Для начала посмотрите в этой ветке пост №4.
В основном цикле вызывается функция, которая отвечат за механизм обмена между мастером и помощником. Естественно она обслуживает только запросы на свой ID.
Код:
// Инициализация SLAVE, идентификатор в сети ID_slave = 25
ModbusinoSlave modbusino_slave(ID_slave)
Код:
...
modbusino_slave.loop(tab_reg, regs);
...
Под регистры отводится массив переменных, это данные которые вы можете интерпретировать как хотите, может это будет значение температуры, а может состояние реле.

В этом примере я (задал массив) использовал лишь 10 регистров
Код:
uint16_t tab_reg[regs]; //задаем массив из 10-и 16 битовых значений (регистров)
Мы только лишь читаем и пишем в нужные нам регистры, а сам обмен происходит как бы автоматом. И нам не нужно уже беспокоится о низкоуровневых операциях. На то она и библиотека , чтобы облегчить нам жизнь. При желании механизм ее работы можно посмотреть в исходниках.

Я лишь кратко упоминал, что мастером нужно использовать роутер либо компьютер. Здесь есть некоторые "трудности" - нужно компилировать программу-демона под роутер или ПК, который будет управлять ардуинами. Я склоняюсь к роутеру. В принципе я уже прошел этот путь (компиляции программ). Выше я писал, что есть уже библиотеки ModBus под наш роутер (OpenWrt). Почему я выбираю роутер, да потому что это автономное устройство с достаточными ресурсами. Которое может работать сутками, потребляет мало эл.энергии, к которому можно подключиться по сети как угодно (хоть по Wi-Fi, хоть по Ethernet) и разумеется через интернет, на нем можно установить Web сервер и управлять нашими ардуинами в сети т.е. нашим умным домом.

А выдумывать свой протокол.. не это не по мне.

Последний раз редактировалось andr128; 24.11.2012 в 21:34.
andr128 вне форума   Ответить с цитированием
Старый 24.11.2012, 22:59   #18
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1310
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

А ты сможешь набросать скетч на основе этой библиотеки, с тремя ардуинами, две ведомые, одна главная? А то пример который идёт вместе с библиотекой не совсем понятен!

PHP код:
#include <Modbusino.h>

/* Initialize the slave with the ID 1 */
ModbusinoSlave modbusino_slave(1);
/* Allocate a mapping of 10 values */
uint16_t tab_reg[10];

void setup() {
    
/* The transfer speed is set to 115200 bauds */
    
modbusino_slave.setup(115200);
}

void loop() {
    
/* Initialize the first register to have a value to read */
    
tab_reg[0] = 0x1234;
    
/* Launch Modbus slave loop with:
       - pointer to the mapping
       - max values of mapping */
    
modbusino_slave.loop(tab_reg10);

stD вне форума   Ответить с цитированием
Старый 24.11.2012, 23:01   #19
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1310
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Есть ещё одна библиотека <ModbusMaster.h>.
Вот из неё пример:

PHP код:
#include <ModbusMaster.h>


// instantiate ModbusMaster object as slave ID 2
// defaults to serial port 0 since no port was specified
ModbusMaster node(2);


void setup()
{
  
// initialize Modbus communication baud rate
  
node.begin(19200);
}


void loop()
{
  static 
uint32_t i;
  
uint8_t jresult;
  
uint16_t data[6];
  
  
i++;
  
  
// set word 0 of TX buffer to least-significant word of counter (bits 15..0)
  
node.setTransmitBuffer(0lowWord(i));
  
  
// set word 1 of TX buffer to most-significant word of counter (bits 31..16)
  
node.setTransmitBuffer(1highWord(i));
  
  
// slave: write TX buffer to (2) 16-bit registers starting at register 0
  
result node.writeMultipleRegisters(02);
  
  
// slave: read (6) 16-bit registers starting at register 2 to RX buffer
  
result node.readHoldingRegisters(26);
  
  
// do something with data if read is successful
  
if (result == node.ku8MBSuccess)
  {
    for (
06j++)
    {
      
data[j] = node.getResponseBuffer(j);
    }
  }

stD вне форума   Ответить с цитированием
Старый 25.11.2012, 05:07   #20
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1604
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от mebitek Посмотреть сообщение
А ты сможешь набросать скетч на основе этой библиотеки, с тремя ардуинами, две ведомые, одна главная? А то пример который идёт вместе с библиотекой не совсем понятен!
modbusino - Эта библиотека реализует только режим клиента.
на странице автора прямо так и написано Small Modbus slave, RTU (serial) for Arduino.

Вроде все расписал что не понятно? меняйте ID и будет вам другая ардуина в сети.

А что у вас будет делать ардуина работающая мастером? Её задача?

Последний раз редактировалось andr128; 25.11.2012 в 05:11.
andr128 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 01:45. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика