Хотел идти по схеме территориальной, чтобы меньше проводов - в каждой комнате отдельный МК. Тогда скорость реакции нужна максимум 1 сек - например нажатие на выключатель света.
Хотел идти по схеме территориальной, чтобы меньше проводов - в каждой комнате отдельный МК. Тогда скорость реакции нужна максимум 1 сек - например нажатие на выключатель света.
если терреториальный контроллер заточен только на сбор данных - это не моя идея... я не думаю, что это вообще удачное решение, шина пропала - система не видит датчиков, и все... такая система - будет вечно глючить...
мое решение "автономные фуннкциональные модули", да проводов будет больше, но зато это будет надежно.
тогда смысл в отдельных контроллерах только в одном - если чтото сломалось то не ВСЁ сразу, правильно я понял? Но тут действует принцип вероятность отказа увеличивается, пропорционально числу элементов в системе. Т.е. умрёт всё, но с маленькой вероятностью или только какой то модуль, но с гораздо большей вероятностью.
тогда смысл в отдельных контроллерах только в одном - если чтото сломалось то не ВСЁ сразу, правильно я понял? Но тут действует принцип вероятность отказа увеличивается, пропорционально числу элементов в системе. Т.е. умрёт всё, но с маленькой вероятностью или только какой то модуль, но с гораздо большей вероятностью.
нет, не правильно...
смысл
1. Расширяемость: при добавлении функциональности не надо перепрошивать уже установленые модули, а просто включаем в шину новый модуль и все.... По этому систему можно делать долго и не особо парится...
2. Возможность резервирования (два модуля с одним функционалом) для критических систем.
3. Возможность "горячей" замены модуля
4. Возможность использования модулей разработаных другими (главное, что-бы интерфейс был один)
И ещё тут подумал, если у центрального МК будет время между опросами слейвов то можно в перерывах опрашивать наиболее важные МК, например с датчиками дыма и пожара.
если скорость немного увеличить и переменных явно не 128 будет и МК не 30, ну 10 скажем , то можно уменьшить время опроса слейвов. хотябы до 5 сек, для датчиков пожара норм.
MaksVV то о чём Вы говорили выше вполне реализуемо. Например, у меня в первом варианте центральный МК собирает информацию с комнатных МК и выдаёт команды на МК который расположен в щитке на входе. Т.е. для того чтобы слейв получил информацию с другого слейва, наример метеодатчика, достаточно во время обмена с мастером запросить эту информацию у него. Тогда и не будет бардака в общении, ведь у мастера будет вся информация о системе. И тогда утром в спальне можно посмотреть температуру на улице.
скорость думаю вполне реально установить 19200 и если обмениватся 10 параметрами INT, то можно достигнуть времени реакции 1 сек...
думаю в мастере "шина" нужно предусмотреть список устройств с рекомендуемым планом обмена, будет хранится в ERROM и записыватся туда по спец команде опроса слейвов который будет запускатся при нажатии тактовой кнопки на мастере.
примерный формат таблицы который будет хранится на мастере, для каждого слейва может быть несколько строк....
тем самым после опроса слейвов и занесения конфигурации всей шины в ERROM мастера он будет понимать как часто надо слать определенные команды слейвам....
MaksVV то о чём Вы говорили выше вполне реализуемо. Например, у меня в первом варианте центральный МК собирает информацию с комнатных МК и выдаёт команды на МК который расположен в щитке на входе. Т.е. для того чтобы слейв получил информацию с другого слейва, наример метеодатчика, достаточно во время обмена с мастером запросить эту информацию у него. Тогда и не будет бардака в общении, ведь у мастера будет вся информация о системе. И тогда утром в спальне можно посмотреть температуру на улице.
а можно пример кода мастера, и какого нибудь слейва?
единственное чего меня огорчает - это проблеммы с тем, что вешаем на RX/TX, с прошивкой - фиг с ней, я питание MAX485 посажу но ногу ардуинки и буду включать после небольшой паузы, но мне вообще не понятно как использовать "Монитор порта" который через USB пойдет если на RX/TX будет сидеть работающая MAX485
я планировал широко использовать NANO, а теперь и не знаю...
Парни, нет необходимости гонять данные туда-сюда ежесекундно. Если они не изменяются часами на слейве, то и на мастере они тоже неизменны. Достаточно только поддерживать соединение со слейвами, в пределе это один байт запрос - один байт ответ. 30 слейвов - 30 запросов и 30 ответов. Всего 60 байт. Правда интервалы нужны между посылками. Надежнее формировать запросы с контрольной суммой. Это будет в разы длиннее - даже если 30 запросов по 5 байт + 30 ответов. Это всего 180 байт + интервалы между пакетами. Итого за 1 сек на скорости 9600 можно опрашивать по 30 устройств. В случае изменения состояния датчика тревоги на слейве - он однократно шлет центральному контроллеру новое состояние датчика. Случай, когда сработали все датчики на всех слейвах малореальный, но даже в этом случае центральный контроллер соберет информацию со всех устройств за несколько секунд.
MAX485 (мы ведь его используем) предполагает до 32 устройств на шине. Следовательно на 1 порт центрального контроллера можно повесить до 31 слейва. Порты независимы, значит на двух портах можно опросить 60 устройств за 1 сек, на трех - 90. Этого более чем достаточно.
MaksVV тот проект реализован на BASCOM и ASM. Сейчас задача реализовать на С или С++, среда Ардуино нужна для быстрой проверки идей т.к. здесь много библиотек, к сожалению кривых, как и сама среда. И ещё, в качестве беспроводных автононых модулей планирую задействовать другие МК. Поэтому важна переносимость кода.
vde69 за ночь покопался в инете на предмет RS485 для адуино, такое впечатление что все друг у друга переписывают. Или надо переписывать или своё писать. Хочу попробовать реализовать MODBUS ASCII, там хоть длина больше, но таймаут как раз секунда и конец передачи 0x0D, 0x0A легко отловить.
Но он всё равно используется. И какие "сторонние" нужны для дома. Пока не вижу в них необходимости и цены на готовое за гранью разума. Тем более работу с этими приборами можно организовать через отдельный шлюз. Тогда не придётся напрягать всю сеть из за одного - двух "сторонних", которых может и не быть. Тем более многие ПЛК поддеривают несколько протоколов, можно тоже предусмотреть пару протоколов. И сначала реализовать более простой, а когда система заработает сделать другой, более сложный.
кстати появилась такая идея, может конечно не совсем рпавильная...
в общем кидаем провод с еще одним дополнительным сигнальным , и на него передающий МК подает напругу (5в) во время вещания, и чтобы небыло одновременой подачи напруги с 2 МК нужны разные интервалы тоесть у МК2 и МК3 есть что сказать , и после того как питание сигнала пропадает значет говорящий МК закончил вещание, и мк через 2 секунды начнет свое вещание и подаст напугу на сигнальный, а МК3 ждет так как в нем забита пауза в 3 секунды ( у мк4 -4 сек, у мк5 - 5 сек) ну это к примеру
а у мастера 1 сек
хотя наверное бред все равно может случится что подадут напругу одновременно и тогда что будет замыкание?)
например такой адаптер. Знающие люди, скажите эта штука быстрее будет работать? или может протокол общения на ней проще сделать. Понятно, что такой адаптер в 10 раз дороже чем RS485, но 170 руб/ шт для меня не проблема, если плюсы будут очевидные.
набросал примерную схему блока который будет отвечать за работу шины RS485 и будет мастером, на морде будут
1. 2 разьема RG-45, над ними 2 диода, зеленый "вкл" и красный "+12вольт", 12 вольт подаются по установки джампера на плате, сделано "на преспективу"
2. мини USB от HANO, 2 тактовых кнопки (на схеме только одна, вспомнил про вторую только сейчас), утопленый "reset" и красный светодиод. Первая кнопка "Setup" запускает режим опроса шины установки различных параметров. Вторая кнопка "Console" управляет режимом включения/выключения RS485 и запуска обмена данными через USB (отладка, снятие показаний и т.д.). Красный светодиод потушен при обычной ситуации, мигает при режиме консоли и горит если в контроллере есть информация об ошибках полученых от слейвов.
данный контроллер будет 1 раз в секунду посылать на RS485 дату и время, а в промежутках обмениватся информацией со слейвами, в том числе и предоставлять доступ к SD карте...
Контроллер будет собран вот в таком корпусе
критикуйте, особенно электрическую часть, я в ней точно не силен :)
Приблизительно тоже так, только Мега2560 + Nextion+GSM+RS485+DS1307+SD Card. Только 12 вольт многовато, лучше 7-9 через DC- DC. Плюс мониторинг по питанию и батарее. Мои модули на INA219 и MAX471 и другие ещё в дороге.
Приблизительно тоже так, только Мега2560 + Nextion+GSM+RS485+DS1307+SD Card. Только 12 вольт многовато, лучше 7-9 через DC- DC. Плюс мониторинг по питанию и батарее. Мои модули на INA219 и MAX471 и другие ещё в дороге.
связь с внешним миром убирай... (GSM), это потенциальная дырка, такие вещи нужно ставить в DMZ для того, что-бы банальным DDOS ом не завалили всю систему.....
по поводу 12 вольт - чем выше, тем больше мощности можно передать... в POE более 40 вольт
по поводу переменки - мне не очень нравится... если обьясните в чем плюсы - буду рад...
Модем будет работать только с СМС, пока проблем не было. Если не считать грозы, однажды рядом нехило шарахнуло и интерфейс модема накрылся. По поводу POE подсказать не могу, не делал такое. Питание бросаю отдельно, причём для МК отдельная шина на 7-8 вольт, для силовой части 12 вольт своя. И вообще, после того как пару месяцев назад у меня взорвался китайский радиовыключатель, а сейчас уже и одна светодиодная лампа глючит, решил полностью перевести освещение на 12 вольт. Для этого купил импульсный на 200Вт, но включаться он будет только при необходимости. Основное питание это трансформаторный на 9 вольт 4А для МК и импульсный на 65 Вт с функцией ИБП. Для этого и нужны модули монитора. Ну ещё интересно общее потребление квартиры.
AndryLeon определитесь какие модули нужны. Щит питания уже собрали?
Нет, к сожалению... Еще не все части приехали для первого тестового и самого большого щитка ... в нем предполагаеться штук 40 входов/выходов.... если его соберу нормально, то остальное покажется мелочью....
Maxim рекомендует стаивть резистор между A и B а так же от линий данныйх к линии питания и земле.
На концах линии. Этот девайс очевидно будет в середине линии.
vde69 пишет:
данный контроллер будет 1 раз в секунду посылать на RS485 дату и время, а в промежутках обмениватся информацией со слейвами, в том числе и предоставлять доступ к SD карте...
В чем смысл эжесекундной передачи времени? Достаточно при включении слейва и раз в сутки. Какими данными устройство будет обмениваться со слейвами? Тогда уж лучше маркерное кольцо. Хотя это выше моего понимания. Если устройство не может работать без данных с другого устройства, значит неправильное разделение функциональности.
В чем смысл ежесекундной передачи времени? Достаточно при включении слейва и раз в сутки. Какими данными устройство будет обмениваться со слейвами? Тогда уж лучше маркерное кольцо. Хотя это выше моего понимания. Если устройство не может работать без данных с другого устройства, значит неправильное разделение функциональности.
Смысл только если на слейве нужны часы, и то раз в минуту хватит.
В чем смысл эжесекундной передачи времени? Достаточно при включении слейва и раз в сутки. Какими данными устройство будет обмениваться со слейвами? Тогда уж лучше маркерное кольцо. Хотя это выше моего понимания. Если устройство не может работать без данных с другого устройства, значит неправильное разделение функциональности.
раздача времени будет идти широковещательным пакетом, то есть 1 пакет на всю сеть... для слейвов этот сигнал кроме времени является признаком того, что шина работает. При отсутствии таких пакетов в течении некоторгго времени переводит все слейвы в автономный режим.
Например должен снятся режим экономии тепла и режим охраны. Можно сделать и наоборот, типа пропала шина дом послал сигнал сос в милицию, но я так не хочу :)
Короче дефолтные режимы функциональных блоков - это отдельная песня...
Maxim рекомендует стаивть резистор между A и B а так же от линий данныйх к линии питания и земле.
терминаторы будут выполнены в виде внешних заглушек на RG-45 (как раньше на каоксиальных ставили), такой подход дает возможность иметь нескольно разноомных терминаторов и ставить их в зависимости от сопротивления линии (что и рекомендует максим). То есть при подключении нового сегмента к шине мы меняем резистр не внутри контроллера, а во внешнем свистке (или меняем сам свисток)
А может при создании сети контроллеров смотреть в сторону CAN?
На самом деле нет принципиальной разницы какая будет среда передачи, хоть радиоканал. Главное что бы все различия погибли на канальном уровне.
vde69 пишет:
раздача времени будет идти широковещательным пакетом, то есть 1 пакет на всю сеть... для слейвов этот сигнал кроме времени является признаком того, что шина работает. При отсутствии таких пакетов в течении некоторгго времени переводит все слейвы в автономный режим.
Вообще-то центральный контроллер тоже должен знать о том, что устройства на связи, поэтому широковещательные пакеты не прокатят, только индивидуальные с подтверждением.
раздача времени будет идти широковещательным пакетом, то есть 1 пакет на всю сеть... для слейвов этот сигнал кроме времени является признаком того, что шина работает. При отсутствии таких пакетов в течении некоторгго времени переводит все слейвы в автономный режим.
А слэйвы у вас и без того всегда должны работать автономно. Центральное устройство (а это может быть контроллер, комп, планшет или смартфон) лишь может собирать с них статистику, ну или передать (к примеру) тому же контролеру котла измененный график управления температурой.
MAX485 (мы ведь его используем) предполагает до 32 устройств на шине.
Лично я предпочитаю ADM2587E. Оно подороже, но гальваническая развязка того стоит (если на большие расстояния, а не внутри одного щитка)...
что-то он конкретнее дороже...
в моих модулях вроде стоит самовостанавливающийся предохранитель, этого достаточно, что-бы не спалить все...
AndrF пишет:
vde69 пишет:
раздача времени будет идти широковещательным пакетом, то есть 1 пакет на всю сеть... для слейвов этот сигнал кроме времени является признаком того, что шина работает. При отсутствии таких пакетов в течении некоторгго времени переводит все слейвы в автономный режим.
А слэйвы у вас и без того всегда должны работать автономно. Центральное устройство (а это может быть контроллер, комп, планшет или смартфон) лишь может собирать с них статистику, ну или передать (к примеру) тому же контролеру котла измененный график управления температурой.
Так гальваническая развязка же. На трансформаторах. Вот чип и выходит дороже. Стоит порядка 300 руб на Ali, если брать от 5 штучек. Но зато в ряде случаев спокойней.
vde69 пишет:
Вы правильно поняли мою идею
Но ежесекундно и широковещательно им что-то получать от центра даром не надо. Разве что по включении или раз в сутки получать коррекцию времени. Ну а центр проверять наличие слейвов может во время забора с них статистики - ту же температуру воды (к примеру) раз в несколько минут... В общем, раз в секунду - это явно лишнее.
И как успехи, кроме идей? Библиотека, которую указал vde69, слегка гадит. В конце лишний 0, это только у меня или ещё у кого.
я пока жду комплектуху, должна придти в пределах 10 дней...
заказал корпуса на пробу (4шт), по поводу библиотеки - буду использовать железный порт 1, со сменой режима по кнопке ( расписал тут http://arduino.ru/forum/proekty/ocherednoi-umnyi-dom-na-etot-raz-modulnaya-sistema?page=1#comment-184788 ) библиотеку может и подправлю, но пока дело не дошло, ориентироватся буду на скорость 19.4. Так, что пока жду, ничего железного сказать не могу... В принцепе с железным портом не должно глючить, а надстройку MODBUS можно и на 100% переписать, там не особо сложно все...
У меня эксперементировать не на чем, лежит одна мега и все :)
И как успехи, кроме идей? Библиотека, которую указал vde69, слегка гадит. В конце лишний 0, это только у меня или ещё у кого.
Вы по протоколу? Ну я в свое время делал (для работы) свой - с контрольной суммой, подтверждениями, повторами сообщений (если неудача). Но там было для связи между двумя устройствами. Сейчас буду делать на несколько... Но это было и будет не на arduino (хотя тип контроллера в этом плане не важен).
интересный проект сам хотел бы реализовать прием и передачу между устройствами по RS485 например скважина септик и дом в доме mega2560 +W5100 заходя через браузер отобразить мнемосхему всех коммуникаций пока пробую с мнемосхемой.... думаю попробывать передачу данных между устройствами библиотекой VirtualWire
А может при создании сети контроллеров смотреть в сторону CAN?
На самом деле нет принципиальной разницы какая будет среда передачи, хоть радиоканал. Главное что бы все различия погибли на канальном уровне.
Разница в том, что в сети CAN контроллеры могут говорить даже когда их не просят, а в RS 485 только по запросу от мастера, вот и получается туда сюда данные гонять.
AndrF пишет:
В общем, раз в секунду - это явно лишнее.
Я думаю, это чтобы создать хоть какую то "онлайность" между контроллерами, т.к. slave просто так сам не может отправить сообщение - только по запросу.
мне поэтому CAN и нравится. В этой сети может говорить любой МК когда угодно (есть приоритет у МК по важности) и не надо без конца оправишивать чтобы создать "онлайность". Просто вдруг в сети всё таки возникнет какая нибудь информация, которая должна быть актуальна гораздо быстрее чем раз в минуту. Плюс защита от коллизий в сети вроде как на аппаратном уровне. В RS 485 нужно самому городить стабильность.
Разница в том, что в сети CAN контроллеры могут говорить даже когда их не просят, а в RS485 только по запросу от мастера, вот и получается туда сюда данные гонять.
С чего вы это взяли-то? Нет этого в стандарте 485-го. Как сделаете, так и будет. Как и в RS232... Ограничение там по сути одно - в конкретный момент говорить может только одно устройство.
CAN-овские контроллеры разве что понавороченней. Но в простых системах а-ля домашнего дома можно легко обходиться без них.
как лучше в блоки на DIN рейке заводить питалово 12в и 5в?
220 вольт (где нужно) понятно заводим сверху на колодку винт+шайба,
а 12 вольт? заводить то-же сверху на такой-же разьем - опасно, можно перепутать... снизу будет выход с реле на 220, по логике нужен специальный несеметричный рзьем? чего посоветуете?
на RG-45 планировал завести +12 для питания слаботочных удаленных модулей по витой паре, сначала я запланировал +12 подавать на 2 и 7, а землю на 1 и 8. По идее такая схема должна была уменьшить помехи от питания за счет скрутки пары +12 и земли, но по факту мне удобнее +12 подать на 1 и 2, а землю на 7 и 8 (по 2 контакта и сила тока больше и при включении помех меньше). Минусы у этого подхода - разьем выйдет не симетричный (при старой схеме он был симетричный) и не будут свиты земля и +12 в кабеле... На сколько можно пренебречь этими минусами ????
вопрос 2:
при наличии блока питания +12 и +5 как лучше питать ардуинку на VCC подать +12 а с ее контакта +5 снять и запитать модули или все запитать сразу от +5 и саму ардуинку (на контакт +5) и все модули ??? по идеи питать +5 все вроде нагрузка на ардуинку меньше, но могут быть проблеммы со стабильностью этих самых +5 вольт, например при включении нескольких реле сразу... Какую схемы выбрать?
Хотел идти по схеме территориальной, чтобы меньше проводов - в каждой комнате отдельный МК. Тогда скорость реакции нужна максимум 1 сек - например нажатие на выключатель света.
Хотел идти по схеме территориальной, чтобы меньше проводов - в каждой комнате отдельный МК. Тогда скорость реакции нужна максимум 1 сек - например нажатие на выключатель света.
если терреториальный контроллер заточен только на сбор данных - это не моя идея... я не думаю, что это вообще удачное решение, шина пропала - система не видит датчиков, и все... такая система - будет вечно глючить...
мое решение "автономные фуннкциональные модули", да проводов будет больше, но зато это будет надежно.
тогда смысл в отдельных контроллерах только в одном - если чтото сломалось то не ВСЁ сразу, правильно я понял? Но тут действует принцип вероятность отказа увеличивается, пропорционально числу элементов в системе. Т.е. умрёт всё, но с маленькой вероятностью или только какой то модуль, но с гораздо большей вероятностью.
тогда смысл в отдельных контроллерах только в одном - если чтото сломалось то не ВСЁ сразу, правильно я понял? Но тут действует принцип вероятность отказа увеличивается, пропорционально числу элементов в системе. Т.е. умрёт всё, но с маленькой вероятностью или только какой то модуль, но с гораздо большей вероятностью.
нет, не правильно...
смысл
1. Расширяемость: при добавлении функциональности не надо перепрошивать уже установленые модули, а просто включаем в шину новый модуль и все.... По этому систему можно делать долго и не особо парится...
2. Возможность резервирования (два модуля с одним функционалом) для критических систем.
3. Возможность "горячей" замены модуля
4. Возможность использования модулей разработаных другими (главное, что-бы интерфейс был один)
и т.д.
И ещё тут подумал, если у центрального МК будет время между опросами слейвов то можно в перерывах опрашивать наиболее важные МК, например с датчиками дыма и пожара.
если скорость немного увеличить и переменных явно не 128 будет и МК не 30, ну 10 скажем , то можно уменьшить время опроса слейвов. хотябы до 5 сек, для датчиков пожара норм.
MaksVV то о чём Вы говорили выше вполне реализуемо. Например, у меня в первом варианте центральный МК собирает информацию с комнатных МК и выдаёт команды на МК который расположен в щитке на входе. Т.е. для того чтобы слейв получил информацию с другого слейва, наример метеодатчика, достаточно во время обмена с мастером запросить эту информацию у него. Тогда и не будет бардака в общении, ведь у мастера будет вся информация о системе. И тогда утром в спальне можно посмотреть температуру на улице.
посмотрел повнимательней библиотеку из http://arduino.ru/forum/proekty/ocherednoi-umnyi-dom-na-etot-raz-modulnaya-sistema#comment-183750 в принцепе вполне нормально сделано, примеры сделаны криво, а сама библиотека вполне пойдет...
скорость думаю вполне реально установить 19200 и если обмениватся 10 параметрами INT, то можно достигнуть времени реакции 1 сек...
думаю в мастере "шина" нужно предусмотреть список устройств с рекомендуемым планом обмена, будет хранится в ERROM и записыватся туда по спец команде опроса слейвов который будет запускатся при нажатии тактовой кнопки на мастере.
примерный формат таблицы который будет хранится на мастере, для каждого слейва может быть несколько строк....
1. ID слейва
2. ID команды отправляемой с мастера на слейв
3. Периодичность в сек отправки команы со слейва
-----------------------------------------------------------------------
тем самым после опроса слейвов и занесения конфигурации всей шины в ERROM мастера он будет понимать как часто надо слать определенные команды слейвам....
-----------------------------------------------------------------------
вот уже обрисовывается архитура в деталях, мне это нравится...
MaksVV то о чём Вы говорили выше вполне реализуемо. Например, у меня в первом варианте центральный МК собирает информацию с комнатных МК и выдаёт команды на МК который расположен в щитке на входе. Т.е. для того чтобы слейв получил информацию с другого слейва, наример метеодатчика, достаточно во время обмена с мастером запросить эту информацию у него. Тогда и не будет бардака в общении, ведь у мастера будет вся информация о системе. И тогда утром в спальне можно посмотреть температуру на улице.
а можно пример кода мастера, и какого нибудь слейва?
единственное чего меня огорчает - это проблеммы с тем, что вешаем на RX/TX, с прошивкой - фиг с ней, я питание MAX485 посажу но ногу ардуинки и буду включать после небольшой паузы, но мне вообще не понятно как использовать "Монитор порта" который через USB пойдет если на RX/TX будет сидеть работающая MAX485
я планировал широко использовать NANO, а теперь и не знаю...
Парни, нет необходимости гонять данные туда-сюда ежесекундно. Если они не изменяются часами на слейве, то и на мастере они тоже неизменны. Достаточно только поддерживать соединение со слейвами, в пределе это один байт запрос - один байт ответ. 30 слейвов - 30 запросов и 30 ответов. Всего 60 байт. Правда интервалы нужны между посылками. Надежнее формировать запросы с контрольной суммой. Это будет в разы длиннее - даже если 30 запросов по 5 байт + 30 ответов. Это всего 180 байт + интервалы между пакетами. Итого за 1 сек на скорости 9600 можно опрашивать по 30 устройств. В случае изменения состояния датчика тревоги на слейве - он однократно шлет центральному контроллеру новое состояние датчика. Случай, когда сработали все датчики на всех слейвах малореальный, но даже в этом случае центральный контроллер соберет информацию со всех устройств за несколько секунд.
MAX485 (мы ведь его используем) предполагает до 32 устройств на шине. Следовательно на 1 порт центрального контроллера можно повесить до 31 слейва. Порты независимы, значит на двух портах можно опросить 60 устройств за 1 сек, на трех - 90. Этого более чем достаточно.
MaksVV тот проект реализован на BASCOM и ASM. Сейчас задача реализовать на С или С++, среда Ардуино нужна для быстрой проверки идей т.к. здесь много библиотек, к сожалению кривых, как и сама среда. И ещё, в качестве беспроводных автононых модулей планирую задействовать другие МК. Поэтому важна переносимость кода.
vde69 за ночь покопался в инете на предмет RS485 для адуино, такое впечатление что все друг у друга переписывают. Или надо переписывать или своё писать. Хочу попробовать реализовать MODBUS ASCII, там хоть длина больше, но таймаут как раз секунда и конец передачи 0x0D, 0x0A легко отловить.
MODBUS ASCII это не основной и не обязательный режим протокола, обязательным является RTU, по этому все "сторонние" модули могут не работать....
Но он всё равно используется. И какие "сторонние" нужны для дома. Пока не вижу в них необходимости и цены на готовое за гранью разума. Тем более работу с этими приборами можно организовать через отдельный шлюз. Тогда не придётся напрягать всю сеть из за одного - двух "сторонних", которых может и не быть. Тем более многие ПЛК поддеривают несколько протоколов, можно тоже предусмотреть пару протоколов. И сначала реализовать более простой, а когда система заработает сделать другой, более сложный.
Иначе завязнем.
кстати появилась такая идея, может конечно не совсем рпавильная...
в общем кидаем провод с еще одним дополнительным сигнальным , и на него передающий МК подает напругу (5в) во время вещания, и чтобы небыло одновременой подачи напруги с 2 МК нужны разные интервалы тоесть у МК2 и МК3 есть что сказать , и после того как питание сигнала пропадает значет говорящий МК закончил вещание, и мк через 2 секунды начнет свое вещание и подаст напугу на сигнальный, а МК3 ждет так как в нем забита пауза в 3 секунды ( у мк4 -4 сек, у мк5 - 5 сек) ну это к примеру
а у мастера 1 сек
хотя наверное бред все равно может случится что подадут напругу одновременно и тогда что будет замыкание?)
Бред, если ещё и наводки на линию учесть и её длину. Я давал ссылку на книгу где описан один из вариантов протокола Мультимастер.
Ссылочку не смог найти вашу
https://yadi.sk/d/eKF4ZGLJpfT4g/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8
Давайте так, исходя из того, что я по факту уже начинаю монтировать свою систему "умного дома" в своей квартире, я задам самый простой вопрос:
"Что вы хотите получить в итоге? Какие проблемы вы хотите реализовать? Какое практическое применение? "
Давайте ответим на данный вопрос, а потом решать "как это сделать" ?
Вы хотите сделать универсальную систему по типу этой:
https://youtu.be/23uQ8I8KSVE
Или что вы хотите получить итого ?
AndryLeon определитесь какие модули нужны. Щит питания уже собрали?
А может при создании сети контроллеров смотреть в сторону CAN? http://ru.aliexpress.com/item/2016-Quality-MCP2515-CAN-Bus-Module-TJA1050-Receiver-SPI-Module-for-Arduino/32622820345.html?spm=2114.03020208.3.103.3Sja6D&ws_ab_test=searchweb201556_2,searchweb201602_1_301_10034_507_10032_10020_10017_10005_10006_10021_10022_401_10007_10018_10019,searchweb201603_1&btsid=7e7ea095-ea9a-436d-94d7-b4e7aa1b9f57
например такой адаптер. Знающие люди, скажите эта штука быстрее будет работать? или может протокол общения на ней проще сделать. Понятно, что такой адаптер в 10 раз дороже чем RS485, но 170 руб/ шт для меня не проблема, если плюсы будут очевидные.
Вот либа какая то для него https://github.com/coryjfowler/MCP_CAN_lib
и сериал не использует, для тех кто нано решил пользовать с монитором сериала.
набросал примерную схему блока который будет отвечать за работу шины RS485 и будет мастером, на морде будут
1. 2 разьема RG-45, над ними 2 диода, зеленый "вкл" и красный "+12вольт", 12 вольт подаются по установки джампера на плате, сделано "на преспективу"
2. мини USB от HANO, 2 тактовых кнопки (на схеме только одна, вспомнил про вторую только сейчас), утопленый "reset" и красный светодиод. Первая кнопка "Setup" запускает режим опроса шины установки различных параметров. Вторая кнопка "Console" управляет режимом включения/выключения RS485 и запуска обмена данными через USB (отладка, снятие показаний и т.д.). Красный светодиод потушен при обычной ситуации, мигает при режиме консоли и горит если в контроллере есть информация об ошибках полученых от слейвов.
данный контроллер будет 1 раз в секунду посылать на RS485 дату и время, а в промежутках обмениватся информацией со слейвами, в том числе и предоставлять доступ к SD карте...
Контроллер будет собран вот в таком корпусе
критикуйте, особенно электрическую часть, я в ней точно не силен :)
Приблизительно тоже так, только Мега2560 + Nextion+GSM+RS485+DS1307+SD Card. Только 12 вольт многовато, лучше 7-9 через DC- DC. Плюс мониторинг по питанию и батарее. Мои модули на INA219 и MAX471 и другие ещё в дороге.
Приблизительно тоже так, только Мега2560 + Nextion+GSM+RS485+DS1307+SD Card. Только 12 вольт многовато, лучше 7-9 через DC- DC. Плюс мониторинг по питанию и батарее. Мои модули на INA219 и MAX471 и другие ещё в дороге.
связь с внешним миром убирай... (GSM), это потенциальная дырка, такие вещи нужно ставить в DMZ для того, что-бы банальным DDOS ом не завалили всю систему.....
по поводу 12 вольт - чем выше, тем больше мощности можно передать... в POE более 40 вольт
по поводу переменки - мне не очень нравится... если обьясните в чем плюсы - буду рад...
по поводу RG-45 я питание и землю задублировал и на витухи попарно кинул с надеждой, что помех будет меньше, я правильно сделал ???
Модем будет работать только с СМС, пока проблем не было. Если не считать грозы, однажды рядом нехило шарахнуло и интерфейс модема накрылся. По поводу POE подсказать не могу, не делал такое. Питание бросаю отдельно, причём для МК отдельная шина на 7-8 вольт, для силовой части 12 вольт своя. И вообще, после того как пару месяцев назад у меня взорвался китайский радиовыключатель, а сейчас уже и одна светодиодная лампа глючит, решил полностью перевести освещение на 12 вольт. Для этого купил импульсный на 200Вт, но включаться он будет только при необходимости. Основное питание это трансформаторный на 9 вольт 4А для МК и импульсный на 65 Вт с функцией ИБП. Для этого и нужны модули монитора. Ну ещё интересно общее потребление квартиры.
AndryLeon определитесь какие модули нужны. Щит питания уже собрали?
Нет, к сожалению... Еще не все части приехали для первого тестового и самого большого щитка ... в нем предполагаеться штук 40 входов/выходов.... если его соберу нормально, то остальное покажется мелочью....
Maxim рекомендует стаивть резистор между A и B а так же от линий данныйх к линии питания и земле.
В чем смысл ежесекундной передачи времени? Достаточно при включении слейва и раз в сутки. Какими данными устройство будет обмениваться со слейвами? Тогда уж лучше маркерное кольцо. Хотя это выше моего понимания. Если устройство не может работать без данных с другого устройства, значит неправильное разделение функциональности.
Смысл только если на слейве нужны часы, и то раз в минуту хватит.
раздача времени будет идти широковещательным пакетом, то есть 1 пакет на всю сеть... для слейвов этот сигнал кроме времени является признаком того, что шина работает. При отсутствии таких пакетов в течении некоторгго времени переводит все слейвы в автономный режим.
Например должен снятся режим экономии тепла и режим охраны. Можно сделать и наоборот, типа пропала шина дом послал сигнал сос в милицию, но я так не хочу :)
Короче дефолтные режимы функциональных блоков - это отдельная песня...
Maxim рекомендует стаивть резистор между A и B а так же от линий данныйх к линии питания и земле.
терминаторы будут выполнены в виде внешних заглушек на RG-45 (как раньше на каоксиальных ставили), такой подход дает возможность иметь нескольно разноомных терминаторов и ставить их в зависимости от сопротивления линии (что и рекомендует максим). То есть при подключении нового сегмента к шине мы меняем резистр не внутри контроллера, а во внешнем свистке (или меняем сам свисток)
MAX485 (мы ведь его используем) предполагает до 32 устройств на шине.
Лично я предпочитаю ADM2587E. Оно подороже, но гальваническая развязка того стоит (если на большие расстояния, а не внутри одного щитка)...
раздача времени будет идти широковещательным пакетом, то есть 1 пакет на всю сеть... для слейвов этот сигнал кроме времени является признаком того, что шина работает. При отсутствии таких пакетов в течении некоторгго времени переводит все слейвы в автономный режим.
А слэйвы у вас и без того всегда должны работать автономно. Центральное устройство (а это может быть контроллер, комп, планшет или смартфон) лишь может собирать с них статистику, ну или передать (к примеру) тому же контролеру котла измененный график управления температурой.
что-то он конкретнее дороже...
в моих модулях вроде стоит самовостанавливающийся предохранитель, этого достаточно, что-бы не спалить все...
раздача времени будет идти широковещательным пакетом, то есть 1 пакет на всю сеть... для слейвов этот сигнал кроме времени является признаком того, что шина работает. При отсутствии таких пакетов в течении некоторгго времени переводит все слейвы в автономный режим.
А слэйвы у вас и без того всегда должны работать автономно. Центральное устройство (а это может быть контроллер, комп, планшет или смартфон) лишь может собирать с них статистику, ну или передать (к примеру) тому же контролеру котла измененный график управления температурой.
Вы правильно поняли мою идею
И как успехи, кроме идей? Библиотека, которую указал vde69, слегка гадит. В конце лишний 0, это только у меня или ещё у кого.
что-то он конкретнее дороже...
Так гальваническая развязка же. На трансформаторах. Вот чип и выходит дороже. Стоит порядка 300 руб на Ali, если брать от 5 штучек. Но зато в ряде случаев спокойней.
Вы правильно поняли мою идею
Но ежесекундно и широковещательно им что-то получать от центра даром не надо. Разве что по включении или раз в сутки получать коррекцию времени. Ну а центр проверять наличие слейвов может во время забора с них статистики - ту же температуру воды (к примеру) раз в несколько минут... В общем, раз в секунду - это явно лишнее.
И как успехи, кроме идей? Библиотека, которую указал vde69, слегка гадит. В конце лишний 0, это только у меня или ещё у кого.
я пока жду комплектуху, должна придти в пределах 10 дней...
заказал корпуса на пробу (4шт), по поводу библиотеки - буду использовать железный порт 1, со сменой режима по кнопке ( расписал тут http://arduino.ru/forum/proekty/ocherednoi-umnyi-dom-na-etot-raz-modulnaya-sistema?page=1#comment-184788 ) библиотеку может и подправлю, но пока дело не дошло, ориентироватся буду на скорость 19.4. Так, что пока жду, ничего железного сказать не могу... В принцепе с железным портом не должно глючить, а надстройку MODBUS можно и на 100% переписать, там не особо сложно все...
У меня эксперементировать не на чем, лежит одна мега и все :)
И как успехи, кроме идей? Библиотека, которую указал vde69, слегка гадит. В конце лишний 0, это только у меня или ещё у кого.
Вы по протоколу? Ну я в свое время делал (для работы) свой - с контрольной суммой, подтверждениями, повторами сообщений (если неудача). Но там было для связи между двумя устройствами. Сейчас буду делать на несколько... Но это было и будет не на arduino (хотя тип контроллера в этом плане не важен).
У меня эксперементировать не на чем, лежит одна мега и все :)
Proteus в помощь. Вот и думаю, а нахрена козе баян, если у меня ничего промышленного не будет.
О, что то из деталек подъехало.
интересный проект сам хотел бы реализовать прием и передачу между устройствами по RS485 например скважина септик и дом в доме mega2560 +W5100 заходя через браузер отобразить мнемосхему всех коммуникаций пока пробую с мнемосхемой.... думаю попробывать передачу данных между устройствами библиотекой VirtualWire
Разница в том, что в сети CAN контроллеры могут говорить даже когда их не просят, а в RS 485 только по запросу от мастера, вот и получается туда сюда данные гонять.
В общем, раз в секунду - это явно лишнее.
Я думаю, это чтобы создать хоть какую то "онлайность" между контроллерами, т.к. slave просто так сам не может отправить сообщение - только по запросу.
мне поэтому CAN и нравится. В этой сети может говорить любой МК когда угодно (есть приоритет у МК по важности) и не надо без конца оправишивать чтобы создать "онлайность". Просто вдруг в сети всё таки возникнет какая нибудь информация, которая должна быть актуальна гораздо быстрее чем раз в минуту. Плюс защита от коллизий в сети вроде как на аппаратном уровне. В RS 485 нужно самому городить стабильность.
Вот небольшое сравнение RS485 и CAN.
http://www.datamicro.ru/download/CAN_vs_RS485[EA,%20rus].pdf
Разница в том, что в сети CAN контроллеры могут говорить даже когда их не просят, а в RS485 только по запросу от мастера, вот и получается туда сюда данные гонять.
С чего вы это взяли-то? Нет этого в стандарте 485-го. Как сделаете, так и будет. Как и в RS232... Ограничение там по сути одно - в конкретный момент говорить может только одно устройство.
CAN-овские контроллеры разве что понавороченней. Но в простых системах а-ля домашнего дома можно легко обходиться без них.
имеется ввиду так лучше делать для отсутствия коллизий
имеется ввиду так лучше делать для отсутствия коллизий
Коллизии можно развести программно для дома шина будет явно слабонагружена. Если, конечно, изначально не принято решение забивать ее мусором.
имеется ввиду так лучше делать для отсутствия коллизий
что нужно для организации сети?
как лучше в блоки на DIN рейке заводить питалово 12в и 5в?
220 вольт (где нужно) понятно заводим сверху на колодку винт+шайба,
а 12 вольт? заводить то-же сверху на такой-же разьем - опасно, можно перепутать... снизу будет выход с реле на 220, по логике нужен специальный несеметричный рзьем? чего посоветуете?
/
пришло все кроме NANO
дошел до железа и разбираюсь с конкретикой, сразу вношу изменения в схему и начал писать код, схему буду обновлять так, что зхема из http://arduino.ru/forum/proekty/ocherednoi-umnyi-dom-na-etot-raz-modulnaya-sistema?page=1#comment-184788 будет менятся и в старых постах, по этому некоторые старые вопросы и ответы в будущем могут звучать "странно".
сейчас есть вопросы...
вопрос 1:
на RG-45 планировал завести +12 для питания слаботочных удаленных модулей по витой паре, сначала я запланировал +12 подавать на 2 и 7, а землю на 1 и 8. По идее такая схема должна была уменьшить помехи от питания за счет скрутки пары +12 и земли, но по факту мне удобнее +12 подать на 1 и 2, а землю на 7 и 8 (по 2 контакта и сила тока больше и при включении помех меньше). Минусы у этого подхода - разьем выйдет не симетричный (при старой схеме он был симетричный) и не будут свиты земля и +12 в кабеле... На сколько можно пренебречь этими минусами ????
вопрос 2:
при наличии блока питания +12 и +5 как лучше питать ардуинку на VCC подать +12 а с ее контакта +5 снять и запитать модули или все запитать сразу от +5 и саму ардуинку (на контакт +5) и все модули ??? по идеи питать +5 все вроде нагрузка на ардуинку меньше, но могут быть проблеммы со стабильностью этих самых +5 вольт, например при включении нескольких реле сразу... Какую схемы выбрать?