Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Леонид Каганов ([info]lleokaganov)
@ 2026-03-12 00:40:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:неведомая хуйня, программирование, электроника

Уже неделю бьюсь с RS485
взято отсюда: https://lleo.me/dnevnik/2026/03/11_rs485

UPD: Друзья! Особенно Алексе Семеняка, id, OlegY, Харитонис Устинович, Sergey Nazaryev и stream! Спасибо вам огромное, спасли! Всё заработало! Вы великие и мудрые. Реально дело было даже не в DI-сигналах, а тупо в настройках порта. При 9600 8N1 всё прекрасно читалось (что меня ставило в тупик), но не писалось, потому что надо было 9600 8E1! Добавил на https://lleo.me/uart опции настроек порта, поигрался, и отлично прочлась батарея!




Было:


Мы из столбов и толстых перекладин
За складом оборудовали зал.
Там Гамлета играл ефрейтор Дядин
И в муках руки кверху простирал.

Евгений Винокуров

Вторую неделю бьюсь с RS485 и не могу победить. Есть китайские мопеды (в количестве), у них процессор с дисплеем на приборке и батарея, имеющая три сигнальных провода rs485: черный — земля, белый — А, серый (или синий) — B. Землю можно не подключать, но конечно пробую по-всякому. Подключаю провода к свистку rs485-uart, читаю посылки. Расшифровываю протокол, он оказывается прост и довольно стандартен (позже я даже нашел, что его реверснули и китайцы и получили то же):

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

Нарисовал себе читалку-инструментик прямо на вебе (благо Chrome десктопа позволяет работать с UART): https://lleo.me/uart/ Подслушиваю разговор мопеда с батареей. На запрос мопеда 31CE 02 (чтение) с данными 02 2B или 2D 37 не отвечает никто, если батареи нет, а если есть — она отвечает 31CE 82 с инфо (включая серийник) и состоянием (процент заряда, напряжение, ток, температура, вольтаж на каждой банке). Я знаю о ней всё:

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

В общем, посылки получаю, расшифровываю, формат известен, данные правильные, контрольные суммы сходятся, и всё это точно RS485, не RS232, не CAN и не LIN. Казалось бы, могу и сам отправлять их в линию, и меня услышат. Но хрен там — меня не слышат. Слева — посылки нормального человека, справа — с моего свистка:

Нет положенных в rs485 размахов аплитуды, каждый канал уходит в минус только до средней линии. Над этой загадкой я бился, потом подсказали друзья. Мой китайский свисток в принципе раньше работал мастером нормально, но если он не мастер и линия подтянута, работать нормально не сможет. В драйвере rs485 на микросхеме MAX458 есть сигнал DT (ноги 2,3), который переключает ее в прием/передача. Этим должен управлять комп, но китайцы делают «автораспознавание»: тупо завели TX через транзистор. Поэтому когда 1, MAX458 честно передает 1, а когда 0, передача выключается, сигналы падают к уровням тишины, и 0 не отрабатывается по полной амплитуды. Ставят эту дурацкую схему, разумеется, как в дешевые китайские свистки, так и во многие дорогие (традиционный херушка на воротничок любителям ориентироваться в мире суеверий по цене).

Ну ок, не вопрос. Я выяснил, что вторая микросхема свистка uart CH340C имеет выводы RTS и DTR (не все варианты CH340 их имеют), припаял с ножки 14 резистор 10k и выставляю с компа RTS принудительно на время передачи (JS в Chrome и это умеет).

Результат — теперь мои сигналы стали идеальными:

Казалось бы, проблема решена? Но нет, батарея все равно меня не слышит и отвечать не хочет :) Все остальное, разумеется, уже перепробовал: землю, полярности A/B, тайминги, 120 Ом терминатор, линию никто не глушит, посылки не накладываются, сами на 100% соответствуют формату, и их последовательность тоже (пробовал слать в батарею и вообще всё, что слышно в мопеде). Причем, батарея посылку слышит — она явно «просыпается» по первой же посылке: уровни тишины линии сдвигаются на 0.5V вверх, через какое-то время засыпает снова. Но отвечать мне считает ниже своего достоинства. Больше идей у меня пока нет. Может, у вас есть?

Бывало, выйдет, головой поникнет,
Как надо, руки скорбно сложит, но
Лишь только «быть или не быть?» воскликнет,
Всем почему-то делалось смешно.

Евгений Винокуров



(Добавить комментарий)


[info]gmv
2026-03-12 21:39 (ссылка)
Несколько раз перечитал пост - пытаясь понять даже не хитрую железячную загвоздку проблемы, а сам смысл постановки техзадачи... Что это за мопед - и что он должен суметь сделать... Что это за хитрозаверченная система умного дом?


Вот я себе "умный дом", к примеру, представляю несколько по-другому - вовсе не как мопед, который умеет куда-то на телефон передавать показания заряда своей батареи...

Для этого уже сделано:
- часы в каждой комнате
- градусники в каждой комнате, включая ванную и лоджию
- градусники за окном на северной и южной сторонах
- портативная лампа для переносного нижнего света
- портативный мощный обогреватель-тепловентилятор (позволяет поднять температуру в доме на градус за час)
- портативный пылесос-швабра
- городской радио-телефон
- mp3-плеер с FM-радио, с подключением к компьютеру для раздачи звука на большой динамик

Предстоит сделать:
- портативный мощный охладитель-вентилятор
- барометр и гигрометр
- нагревательный бак, для горячей воды во время летней профилактики
- домашний роутер телевидения


Смысл умного дома - не в том, чтобы дверь вскрывать чипом и люстры зажигать со смартфона. Обычно, это мечты профессиональных сумасшедших, очень удобные для всяких домушников и КГБшников... Смысл умного дома - в адаптированности жилой среды к комфортному и безопасному проживанию.

(Ответить)