Comments 71
Для полноценной работы нужны два кварца, на 8МГц и 32.768КГц
Для полноценной работы в качестве чего? Для текущей задачи — часовой кварц имхо нафиг не нужен. Я уж забыл все и могу ошибаться, но в основном часовой кварц нужен когда у нас есть всякие sleep mode, особенно deep sleep mode — можно всю периферию рубануть, включая конечно и HSE и все что от него тактируется, а оставить только таймер или прерывание, которое завязано на LSE — короче говоря, меньше наноОмпэр будет кушать. Ну и второе применение — точные часы секунда в секунду за года непрерывной работы.
В принципе, здесь даже и HSE кварц не особо нужен, UART'ы и на встройке неплохо работают, даже в большом температурном режиме, ну если не жалко — то пусть будет, конешно -)
Низкочастотный кварц я применяю в основном для вачдога. Понятно, что его можно запустить и без него. Но это шлюз и к нему я предъявляю повышенные требования, да и плату делал для себя, а не для продажи, поэтому на таких мелочах старался не экономить. :)
Но на конденсаторах вы сэкономили (как и на правильном подключении шилда сетевого разъема). Не знаю, какие у вас знания, но 0,1uF лучше ставить у каждой ноги питания каждой микросхемы.
На МК и на W5500 у меня кондёры стоят. Нет только на драйвере RS485 и микросхеме-изоляторе. Хороший тантал с низким ESR я туда поставил, а вот эту мелочь упустил :/ Добавим!
Нет декапов на изоляторе, драйвере, памяти и датчике влажности (у него в даташите, кстати, всё написано в 10-м параграфе, да и в примере трассировки есть площадки под конденсатор). И у W5500 нет декапа на цифровом питании.
Но как всегда в таких проектах — работает и нехай. Но шилд разъема таки надо подключить куда-нибудь. Нехорошо его оставлять в воздухе.
Но как всегда в таких проектах — работает и нехай. Но шилд разъема таки надо подключить куда-нибудь. Нехорошо его оставлять в воздухе.
Если нам не нужна гальваническая развязка от линии
А если нужна гальваническая изоляция, то на какое напряжение оно рассчитано? Имеются ли на ПП соответствующие зазоры?
Так я же писал, что для полноценной защиты по желанию можно устанавливать дополнительную защитную плату, например такую — www.compel.ru/lib/83359. Первоначально я думал все эти защиты разместить на шлюзе, но потом понял, что лучше вынести отдельно. Т.к. ситуации бывают разные и например для квартиры такая защита будет излишней, а размер шлюза увеличиться при этом достаточно сильно. А вот для уличных линий защита нужна.
Ссылка на ТВU?
Гальваническая изоляция и защиты от помех с большой энергией, например микросекундные помехи, это разные вещи. Одно другим заменить нельзя.
Как правило используется и другое, чтобы соответствовать промышленным стандартам.
Гальваническая изоляция и защиты от помех с большой энергией, например микросекундные помехи, это разные вещи. Одно другим заменить нельзя.
Как правило используется и другое, чтобы соответствовать промышленным стандартам.
Но зазоры на плате между изолированными частями такое напряжение не обеспечивают. Вот что говорят по этому поводу в даташите на изолятор:


Это да. Но если делать такие зазоры, то теряется универсальность платы. Т.е. сейчас если нет необходимости в изоляции, то достаточно прилепить 4 «сопли» на плате и всё. А если делать большие зазоры, то необходимы перемычки. Это осознанный компромисс. Потому я и поставил на плате защитный диод SM712, ну и TBU никто не отменял.
Как я говорил ранее одно другого не заменяет, так как гальваническая изоляция — это требования по безопасности, а TBU, TVS, газоразрядники — это борьба с помехами. Гальваническая изоляция, TBU, TVS пополняют друг друга, но не заменяют.
Требования по гальванической изоляции предъявляются не только к компонентам, но и к плате, и к элементам конструкции. Поэтому без зазора в плате не обойтись. Кстати и зазора нет под разъёмом интерфейса Ethernet.
Терминатор R2 лучше коммутировать к шине через jumper. Терминаторы нужны только на крайних устройствах.
Требования по гальванической изоляции предъявляются не только к компонентам, но и к плате, и к элементам конструкции. Поэтому без зазора в плате не обойтись. Кстати и зазора нет под разъёмом интерфейса Ethernet.
Терминатор R2 лучше коммутировать к шине через jumper. Терминаторы нужны только на крайних устройствах.
А какое максимальное количество портов rs485 можно организовать? И вопрос в драйвере для работы под виндой. Возможно ли?
Это как — какое количество? На данном шлюзе разведён только один. Если речь про stm32f103cbt6, то там можно три. И о каком драйвере речь, если шлюз заканчивается ethernet портом. До него надо по TCP/UDP достукиваться, а драйвера там нужны только для сетевой карты.
про драйвер — Есть такие преобразователи — rs485/ethernet на базе модулей tibbo — к ним поставляются драйвера, которые эмулируют физический ком порт, а сами стучат в ethernet по сети…
Они же предлагают решения, на 4 rs485/ethernet. Вот захотелось узнать про Ваш модуль…
Они же предлагают решения, на 4 rs485/ethernet. Вот захотелось узнать про Ваш модуль…
W5500 вещь хорошая, делал нечто подобное на ардуинке, (организовав websocket-сервер на ардуинке) с отображением в реальном времени данных в браузере по такой схеме браузер — сервер(java) — ардуинка. 32 кбайт буферной памяти RAM позволяло на 15 сек (больше не пробовал) выдёргивать сетевой кабель без потери данных (данные считывались с лазерного дальномера примерно 10 раз в секунду и отправлялись java-серверу)
В качестве драйвера RS485 был выбран чип — MAX13488EESA+T, в том числе и в связи с наличием у него режима автоматического выбора направления приёма/передачи.Для дома наверное норм, но если линия длинная — то это вроде как не совсем полноценный драйвер. Лучше поставить «честный» и дергать TX/RX
Да, видел я некоторые обсуждения. Но честно говоря так и не понял чем он неполноценен. Для дома я думаю ставить по шлюзу на этаж, а улица у меня метров 200 максимум будет. Если вдруг на таком расстоянии вылезут косяки, то поправить плату недолго.
Драйвер полноценный, все с ним хорошо. Единственное что для корректной работы функции автоопределения резисторы растяжки линии необходимы. И если у вас вдруг будет слышно локальное эхо, и вы захотите от него избавиться, то нужно будет подтянуть выход RO вверх.
Я с этим драйвером работал и с этой проблемой столкнулся. Про это есть у меня в статье habr.com/ru/post/486258
Я с этим драйвером работал и с этой проблемой столкнулся. Про это есть у меня в статье habr.com/ru/post/486258
Неужели f103 + w5500 дешевле, чем f107 и какой-то phy?
Сложно сказать, это кому что больше нравиться. Но в моём случае это не лучший вариант, т.к. шлюз для Mysensors, а впиливать туда ещё целую Ethernet библиотеку это имхо значит совершать лишние телодвижения и снижать стабильность системы.
Когда-то делал именно на f107 шлюз для modbus — вроде существенных проблем не было. Правда, позже это все переехало на переходник USB-RS-485 да так и живет уже лет 12.
Кстати, для тех кто в теме, наверное очевидно, что нужно заливать в эту плату, но в тексте ссылки на софт вроде нет.
Кстати, для тех кто в теме, наверное очевидно, что нужно заливать в эту плату, но в тексте ссылки на софт вроде нет.
Дык Mysensors — https://github.com/mysensors/MySensors
Немного напомнило
www.crowdsupply.com/domatic/getwired
www.crowdsupply.com/domatic/getwired
Оба-на! Вот оно. Только вот не отключаемый терминатор это не есть хорошо. Принудительную подтяжку ставлю не у каждого прибора и только на длинных линиях.
RFC2217 поддерживается.
RFC2217 поддерживается.
P.S.
Да, да. Сейчас статью почитаю
Вот, вот. Если сразу почитать, то многие вопросы отпадут. :) Этот резистор можно ставить если это конец линии и ничего меняться не будет, в противном случае:
Терминирующий резистор на 120Ом устанавливается прямо в разъём RS485, так его проще переносить от устройства к устройству при наращивании линии.
Залез сейчас на github, а в репозитории то прошивки нет :(…
выглядит отлично, и хотя каждый автор утверждает что все легко и просто для повторения, подобных проектов безсчетное множество и продолжают плодится.
на плате, для правильности, стоило бы оставить изоляционный зазор 1мм вокруг драйвера до опторазвязки.
а вместо перемычек зачастую удобнее паять резистор 1206 0Ом.
на плате, для правильности, стоило бы оставить изоляционный зазор 1мм вокруг драйвера до опторазвязки.
а вместо перемычек зачастую удобнее паять резистор 1206 0Ом.
Так у каждого свои требования и хотелки. :)
И если не сильно затруднит, то можно хотя бы 5 ссылок на подобные проекты (STM32+Ethernet+RS485)?
А насчёт зазоров уже обсуждали.
И если не сильно затруднит, то можно хотя бы 5 ссылок на подобные проекты (STM32+Ethernet+RS485)?
А насчёт зазоров уже обсуждали.
www.google.com/search?q=com+port+over+ethernet
на любой вкус, стм, малинка, ардвинка…
даже далеко ходить не надо — habr.com/ru/post/137974
на любой вкус, стм, малинка, ардвинка…
даже далеко ходить не надо — habr.com/ru/post/137974
бессчётное, блин! бессчётное!
Пропущено соединение "GND isolate" и "RS485_ground".
А зачем их соединять?
Для уравновешивания потенциалов «земель» между двумя устройствами(приемопередатчиками).
Точнее — между двумя изолированными частями двух устройств. Т.е. для двух устройств будет 3 земли — 2 земли у 2 устройств и одна земля у их общего интерфейса.
А нужно это для того, что-бы сигналы на входах приемников не выходили за допустимый синфазный диапазон (типично — от минус 7 до 12 вольт).
Ну и защитный диод не будет работать как следует без этого соединения.
Здравствуйте.
Вы использовали библиотеку ioLibrary Driver или сами всё делали работая напрямую с регистрами?
Вы использовали библиотеку ioLibrary Driver или сами всё делали работая напрямую с регистрами?
На борту будет только MAC, PHY обойдётся ещё в 1-2 доллара. Затем нужно будет притащить в прошивку TCP/IP стек. В случае с W5500 можно просто забирать данные из буфера. Да, менее фичасто, но для данной задачи — вполне достаточно. А при желании можно обойтись восьмибитником.
Вопрос не совсем по теме, но… Очень созвучен :)
А как на счет шлюза gsm-RS485? Просто совсем не понимаю, как такое реализуется.
Берем sim900. Загоняем его в режим сервера и просто прозрачно передаем данные, как и в этом проекте. Но..., а как отслеживать, что связь не упала, и что нам не надо рестартануть модем? Как такое реализуется?
А как на счет шлюза gsm-RS485? Просто совсем не понимаю, как такое реализуется.
Берем sim900. Загоняем его в режим сервера и просто прозрачно передаем данные, как и в этом проекте. Но..., а как отслеживать, что связь не упала, и что нам не надо рестартануть модем? Как такое реализуется?
В смысле пингами?
Возможно, что я не так понимаю, как правильно организовывать работу, но… я представляю такой алгоритм работы:
- Инициализация модема в режим tcp transperent server. Чтобы все данные, которые будут приходить на модем извне кидались сразу на serial port.
- Собираем данные пришедшие на порт, который смотрит в сторону gsm, и передаем их в порт, который смотрит в сторону обслуживаемого устройства. Обратно — точно также. (Собственно, ничем не отличается от топикового устройства). Основной вопрос в следующем: запустили модем в режим сервера. Ждем байтики… и тут бац, связь прервалась. Модем требует переинициализации. Как отследить это? Получается, что я должен не прозрачно перекидывать данные, а предварительно проверять их на сообщения от модема?
шлюз сам будет выступать «Сервером».
Инициатор соединения — серверный софт, который должен опрашивать устройство за шлюзом. Опять, таки, какой пинг в прозрачном режиме?
Инициатор соединения — серверный софт, который должен опрашивать устройство за шлюзом. Опять, таки, какой пинг в прозрачном режиме?
Sign up to leave a comment.
IoT шлюз Ethernet-RS485 на базе STM32