Весовой терминал + ардуино + LED матрица
- Войдите на сайт для отправки комментариев
Доброго времени суток. Бьюсь с задачей вторую неделю.. добрался до форума, нужна ваша помощь.
Задача: подключение wemos d1 к весовому терминалу и транслировать данные(вес) на LED панель.
Имею весовой терминал КСК18. Вырезка из инструкции. "Передача веса НЕТТО. Данные передаются в прямом порядке, т.е. цифры, представляющие результат, передаются от старшей к младшей. Посылка заканчивается символами CR LF (0D 0A HEX). Например, если вес нетто составляет 23.45 кг, то посылка в ASCII кодировке будет 0023.45 с окончанием в шестнадцатеричном коде 0D или 0A." Это по RS232.
Подключал через MAX3232 результата не было. Нарыл на форуме что в весах стоит аналогичная МАХ микросхема, на свой страх и риск подключил напрямую(без max3232) TX-RX, RX-TX. Данные стали передаваться, но получаю кракозябры.
Или дело в уровнях или в кодировке. Общаться с монитором порта получается while (Serial.available()) inString = Serial.readString(); а с терминала приходит всякий хлам.
Подскажите в какую сторону смотреть
А скорости приема и передачи совпадают то?
вариант 2 В сторону компа с ком портом, на комп ставить программу перехватчик, потом анализировать покет, четности и скорость.
Подключал через MAX3232 результата не было. Нарыл на форуме что в весах стоит аналогичная МАХ микросхема, на свой страх и риск подключил напрямую(без max3232) TX-RX, RX-TX. Данные стали передаваться, но получаю кракозябры.
Аналогичная микросхема работает на выход. Т.е. берет с весов TTL, выкидывает RS232. Так что решение об отказе от обратного преобразования неверен.
Вот что ещё написано в мануале: "скорость передачи данных в бит/сек (600/1200/2400/4800/ 9600) По умолчанию 2400". Стоит начать с проверки этого. Ну и со скетча. Если вы так же readString() использовали при подключении через MAX232, то вполне могли получить ничто.
1. Скорость на весах установлена 9600 и скетче тоже.
2. Весы транслируют lданные примерно 3-4 раза в секунду в RS232 по пину TX, который напрямую подключил к RX на Ардуино, и GND.
Нарыл скрины из инета. Это транслируют весы
Имею DTU-H100. Эта штука работает с RS232 и транслирует по wifi (Данные с весового терминала мне на ноутбук на работе).
Для теста подключил DTU-H100 БЕЗ max3232 TX-RX, RX-TX, и через TCPUDP debug могу общаться с ардуинкой. В опциях программы можно указать отправку в HEX. Отправляю 00 61 73 64, в ответ от arduino получаю asd. все бы хорошо, НО на led матрице и мониторе порта кракозябры. Если отправить без 00 вначале то не реагирует. помогите общаться с ардуино по serial.
p.s. как отловить конец строки 0D A0. в скетче условие на = '\n' не работает. В мониторе порта отлично ловится этот символ
Для теста подключил DTU-H100 БЕЗ max3232 TX-RX, RX-TX.
Эта фраза заставляет меня усомниться в том, что Вы понимаете, что такое RS-232. А без этого знания данную задачу решить самостоятельно удастся только методом тыка и то, если удача сопутствует по жизни.
Да в том то и дело не понимаю. для этого и пришел на форум. А делаю методом тыка... все верно. Знал бы - не спрашивал... И все-таки методом тыка признаки работы и передачи данных ЕСТЬ. прошу помощи разобраться в каком моменте проблема.
https://www.sparkfun.com/tutorials/215 - обратите внимание на значения напряжений, в области которых функционирует RS-232.
Верните на место MAX232, примените к нему вот это: https://www.arduino.cc/en/Tutorial/SoftwareSerialExample
Если входы ардуине ещё не пожгли, то что-то увидите в Serial Monitor,
Да. я ничего не понимаю в rs232.
Вернул MAX3232. данные никаким образом не передаются. только напрямую :D
Отправляю с DTU-h100 "00 64 65 66" получаю обратно ответ "def" на ардуинке "753".
Тогда Вам ясновидящего нужно искать. Потому что по таким постам диагноз не поставить.
отправил 00 43 44 45 46 47 48 49
Вернулось CDEFGHI
На ардуино (матрица и монитор порта) ywusqom
Чтобы разобраться в этой истории Вам требуется удача или инструментарий. Первого пока не наблюдается. Стало быть - заводите инструментарий. Осциллограф, например. Проверяйте сигналы на стыках интерфейсов.
Иначе это всё равно что аппендицит шишками в лесу лечить.
В передачи данных есть закономерность. Можно считать что это программная ошибка в кодировке или прочем. Или все-таки такая закономерность возможна и при неверном физическом подключении?
http://arduino.ru/forum/programmirovanie/otpravka-dannykh-v-softwareserial-i-poluchenie-prikhodyashchikh-dannykh-v-ser
Почему аппарат сам понимает что отослал через ардуино. Если бы моим методом тыка что-либо сгорело, я бы смирился. а тут данные идут и почти логично, и кажется что решение на поверхности :D
p.s. будто обратная кодировка с пропуском одного символа....
такое впечатление, что замкнуты Tx and Rx и возвращается какойто кодированный... проверьте все настройки, скорость, четность, стоп и старт биты иначе так и будете муть получать... зацепите весы на СОМ порт компа - будет проще подобрать реальные настройки порта.
UPD ипропуск символа как пропуск старт битов....
Table 7 shows the terminal mode setting. https://uralves.ru/assets/upload/281ea0609f1a1015536a36af80190069.pdf
https://uralves.ru/catalog/weighter-terminals/general-purpose
and small amounts of electronics
https://zipstore.ru/blog/vesovoi-terminal-kck18/