Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.54/296: Рейтинг темы: голосов - 296, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 10.09.2011
Сообщений: 45
1

сеть умного дома на stm32: какой протокол выбрать?

09.01.2014, 18:08. Просмотров 54153. Ответов 110
Метки нет (Все метки)

доброго времени суток, форумчане! в очередной раз взываю к коллективному разуму. собственно стоит задача ремонта квартиры, заодно будет меняться вся электрика. раз пошла такая пьянка, решил заранее прокинуть проводную сеть для построения на ее базе "умного дома". все пока банально: независимое управление светом, вентиляцией, другой нагрузкой.

собственно вопрос: какой протокол выбрать для сети? сеть предполагается с одним мастером и несколькими слейвами (десятки). бегло глянул инет, приглянулся CAN. весчь хорошая, промышленный стандарт вроде даже. что скажете? есть ли какие подводные камни? про необходимость доп. микросхемы драйвера знаю.

есть правда одна загвоздка: после ремонта узлы сети будут физически недоступны (спрятаны под потолком натяжным). то есть необходини возможность их удаленной прошивки. ну какбэ не беда, для таких случаев придуман бутлодырь, он даже с CAN работает на некоторых семействах стм32 (судя по их аппноту AN2606 это stm32f2 и stm32f4). так тут еще один нюанс: для входа в режим бутлодыря необходимо определенным образом сконфигурировать выводы BOOT0 и BOOT1. обычно как делается, накинул джамперы и понеслась. а тут как быть? возможен ли софтварый вход в режим бутлодыря? или еще одну внешнюю микросхему ставить? также не совсем понятен механизм, по которому слэйв определяет, что прошивка идет именно ему, ведь адрес слейва записывается софтварно, при ребуте слетает наверняка?

извиняюсь за такое количество вопросов, знаю что надо курить аппноты и даташиты, просто хочется малой кровью выбрать сначала концепцию, а уж потом ее детально прорабатывать, обложившись документацией.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2014, 18:08
Ответы с готовыми решениями:

Какой мини ПК выбрать для умного дома?
Требования следующие: 1) Иметь на борту usrt. 2) Поддерживать Java. 3) Возможность работы...

костыль для умного дома на NRF24L01+STM32
Написал много, если лениво все читать, то переходи к проблеме и вариантах решения. Пытаюсь сделать...

Помогите выбрать плату для умного дома
Всем привет! Захотелось сделать умный дом с датчиками и выключателями. И возникла проблема...

Отображение данных "умного дома" на дисплее - что выбрать?
Цель: на "центральной консоли" (назовём это так) умного дома отображать данные. Динных немного:...

110
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
09.01.2014, 18:38 2
Цитата Сообщение от momoriwor
один нюанс: для входа в режим бутлодыря необходимо определенным образом сконфигурировать выводы BOOT0 и BOOT1
Это нужно только для входа во встроенный BootROM, а у Вас свой будет, так что не надо будет эти пины дёргать.

Цитата Сообщение от momoriwor
не совсем понятен механизм, по которому слэйв определяет, что прошивка идет именно ему, ведь адрес слейва записывается софтварно, при ребуте слетает наверняка?
Чтобы адрес каждой slave-точки не слетал вообще никогда - задавайте его джамперами на незадействованных GPIO-пинах. Четыре пина позволят различить 16 точек, пять пинов - 32 точки, и т.п. по экспоненте :-)
0
0 / 0 / 0
Регистрация: 10.09.2011
Сообщений: 45
09.01.2014, 18:43 3
OtyxPM, спасибо, интересный вариант, логичный. а это поддерживается аппаратно? если нет - так бутлодырь не изменишь, чтобы он сначала адрес с пинов считывал(
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
09.01.2014, 18:47 4
Поставь еепром для записи настроек - потому что обесточится сеть все и писда, что запоминал - уже не вспомнишь.
Во вторых - я бы использовал внешнюю память под новый образ, в том же еепроме флаг "обновись на ребуте" и бутлоадер, который смотрит наличие флага, шьет начиная со второго блока флеша и потом переходит туда же. Ну и в обработке сообщений от протокола предусмотреть возможность ребута. И бутлоадер вообще можно сделать минималистичный и тупой, который собственно и занимается только проверкой флага, прошивкой и проверкой контрольной суммы. А получать новый образ и коммуникации - по проводу и на флешку в главной программе.
Тут уже не раз обсасывалась тема, я помню что мы с drvtos обсуждали бутлоадеры и обновления.
0
0 / 0 / 0
Регистрация: 10.09.2011
Сообщений: 45
09.01.2014, 18:52 5
sohbtixhuk, ну так это надо свой бут писать, я рассчитывал воспользоваться встроенным. кстати, а ссылочку на ваши обсуждения бутлодырей не подкинете?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
09.01.2014, 18:54 6
Цитата Сообщение от momoriwor
OtyxPM, спасибо, интересный вариант, логичный. а это поддерживается аппаратно? если нет - так бутлодырь не изменишь, чтобы он сначала адрес с пинов считывал(
Вы, что ли, нацелились встроенным Boottooderом пользоваться, который в BootROMе?
Я бы всё-таки сделал свой boot, это не сложно, с учётом имеющегося апноута. Конечно, придётся код для CAN (или RS-485 - смотря что выберете в итоге) писать, но его так и так надо писать для мастер-узла, так что не проблема скопировать код в slave-прошивки.
0
0 / 0 / 0
Регистрация: 10.09.2011
Сообщений: 45
09.01.2014, 18:57 7
Вы, что ли, нацелились встроенным Boottooderом пользоваться, который в BootROMе?
думал по неопытности)) ну ежели свой писать - так то проблем меньше должно быть. а вот насчет rs-485 vs can что скажете? что применить уместнее и проще?
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
09.01.2014, 19:28 8
Вы путаете теплое с мягким. Оба. RS485 - это шина, физический уровень. А CAN - это уже слоем повыше. Его можно хоть по вифи передавать, предварительно запихнув в еще вагон протоколов
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
09.01.2014, 19:29 9
Цитата Сообщение от momoriwor
насчет rs-485 vs can что скажете? что применить уместнее и проще?
Imho равноценны по балансу достоинтсв и недостатков. :-)
На этом форуме чаще советовали RS-485 для такой задачи (разводка по квартире/дому).
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
09.01.2014, 19:31 10
Цитата Сообщение от sohbtixhuk
Вы путаете теплое с мягким. Оба. RS485 - это шина, физический уровень. А CAN - это уже слоем повыше.
Да что это... У CANа есть свой стандартный PHY, и выпускаются стандартные восьминогие трансиверы для CAN.
ТС, наверно, в таком виде собирался/собирается CAN использовать.
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
09.01.2014, 19:42 11
Цитата Сообщение от momoriwor
также не совсем понятен механизм, по которому слэйв определяет, что прошивка идет именно ему, ведь адрес слейва записывается софтварно, при ребуте слетает наверняка?
Во многих Stm32 есть UID 96-бит, в некоторых даже eeprom имеется, а можно и во флеш зашить свой UID.
0
0 / 0 / 0
Регистрация: 10.09.2011
Сообщений: 45
09.01.2014, 19:43 12
я собирался использовать встроенный в стм32 can-контроллер + микросхему, обеспечивающую физический уровень (драйвер то есть). я так понимаю, RS485 - это просто драйвер, а всю логику работы придется реализовывать софтварно. поэтому я и склоняюсь в сторону can - там логика в железе реализована.

Во многих Stm32 есть UID 96-бит, в некоторых даже eeprom имеется, а можно и во флеш зашить свой UID.
да я понял, эт все работает при использовании своего бута. я надеялся, что встроенный бут каким -то образом это поддерживает.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
09.01.2014, 19:52 13
Цитата Сообщение от momoriwor
я собирался использовать встроенный в стм32 can-контроллер
ИМХО, зря. Все вполне на RS-485 делается, протокол стандартный выбрать (тот же Модбас) да и не ипать себе моск. Я в упор не вижу, чем в условиях умного дома КАН будет лучше. И нечего бояться каких-то мифических програмных обработок. Нет их там. Протокол Модбас простой как угол дома.

Что касается бутов-ребутов-прошивок-перепрошиво всяких, то тут вы несколько увлеклись. Да, перепрошивать по сети - вещь полезная (я еще не пробовал, но хочу), но и рассчитывать, что твои модульки будут валяться где-то совсем недоступно без разрушения полдома - плохо. Все может сломаться. И что потом?
Надо так проектировать, чтобы доступ к оборудованию все же был. Тем более, что ты здесь сам себе хозяин
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
09.01.2014, 20:11 14
Ну просто прошивка по сети удобней все же. Прикинь, если у тебя все в розетке запилено и таких розеток дома - штук 15? Каждую разбирать, сидеть на табуретке с ноутом рядом, а тут ты вообще захуячил в плафон и в вентиляционную шахту? Можно, но неудобно. Да и по стеи круче - в проге есть некий функционал, который эту прошивку может броадкастом всем раздать. Написал новую прошивку, потестил на девайсе, жмакнул кнопочку и пошел собаку выгуливать.
Если все сделать грамотно - доступ к модулю должен быть только как fallback опция.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
09.01.2014, 20:23 15
Цитата Сообщение от sohbtixhuk
Написал новую прошивку, потестил на девайсе, жмакнул кнопочку и пошел собаку выгуливать.
Та кто ж спорит? Разве что с собакой не соглашусь :) В доме должні жить тока люди, ИМХО.

Мля, некогда продумать такие же вопросі... У меня уже ремонт полнім ходом, а я окромя проброса витой парі во все точки ничего еще не решил...
0
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
09.01.2014, 20:36 16
С Modbus гемор в том, что датчики и выключатели должен опрашивать мастер и придется делать это постоянно.
Соответственно передача на исполнительное устройство, только через мастера.

В CAN любой датчик при необходимости передает пакет в шину, а тот кому эта информация нужна обрабатывает и выполняет соответствующие действия.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
09.01.2014, 20:49 17
Цитата Сообщение от otirt80
С Modbus гемор в том, что датчики и выключатели должен опрашивать мастер и придется делать это постоянно
И это гемор? У тебя Мастер на сдельщине или как?
Да, время реакции увеличивается. Но я бы и не стал делать всю сеть одноранговой и одноконтроллерной. А при наличии "кустов" и локальной реакции на быстрые события все вроде и нормальненько. Причем, с ростом сложности системы потребность в многоуровневой организации только возрастает. Поэтому мне и кажется, что Мастер-Слейвный обмен вполне катит.
С другой стороны, я КАН-басом не работал вплотную. Так что мое представление о нем имеет характер "понаслышке".
0
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
09.01.2014, 21:30 18
Гемор не в плане сложности, а в плане иррациональности.
Вообще, мастер на шине - наипростейший способ избавиться от коллизий да и только.
Следующим этапом идет перекидывание токена разрешающего передачу от ноды к ноде.
А потом уже определение коллизий.

Can обрабатывает коллизии на уровне железа.
0
1 / 1 / 0
Регистрация: 16.12.2016
Сообщений: 1
09.01.2014, 21:40 19
Цитата Сообщение от otirt80
С Modbus гемор в том, что датчики и выключатели должен опрашивать мастер и придется делать это постоянно.
Соответственно передача на исполнительное устройство, только через мастера.

В CAN любой датчик при необходимости передает пакет в шину, а тот кому эта информация нужна обрабатывает и выполняет соответствующие действия.
CAN ограничен по скорости снизу, это автомобильный протокол и менее 100 кбит разработчики не видели смысла делать, по квартире уже могут всплыть грабли с качеством и длиной провода.

RS485 хоть 0.3 кбита, стандартная скорость. На скорости 9.6 кбита у нас висит котельная, передача данных через телефонный провод что выделили связисты, расстояние под километр, хотели ставить модем, но оно и так заработало.

Байты через UART передаются аппаратно, куда еще проще работать?

Один мастер только для упрощения протокола, если нужно много мастеров, реализуется десятком строчек кода. Есть множество стандартных устройств что висят на шине RS485, счетчики электроэнергии Меркурий, модули ввода-вывода Овен, стандартные ПЛК, частотные приводы. Есть ПО что работает с modbus, впринципе можно ничего не программировать даже. С CAN всё сложнее как-то.
RS485 можно легко перекидывать по Ethernet, если устройств много вешаются кустами на преобразователи и через домашнюю сеть на комп.
0
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 115
09.01.2014, 22:33 20
Весь вопрос как раз в том, что сложнее в программировании и реализации софта.
Скорость и меньшая поддерживается, на сколько мне известно.

Устройства для проброса через ethernet тоже есть.

Usb, вот тоже шина хорошая, быстрая, но сложная в программировании.
Поэтому в большинстве случаев данные через нее гоняют эмуляцией som порта.

Про то, что rs485 с протоколами верхнего уровня гораздо распространеннее - это правда и с эти сложно поспорить)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2014, 22:33

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

Какой принтер лучше выбрать для дома?
Доброе время суток! У меня вот такой вопрос какой принтер для дома лучше купить? Желательно...

Какой из роутеров лучше выбрать для дома?
Здравствуйте! Нужно для дома выбрать роутер для построения сети и раздачи интернета. Скорость...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.