Весовой терминал + ардуино + LED матрица

Oscar2k
Offline
Зарегистрирован: 17.06.2019

Доброго времени суток. Бьюсь с задачей вторую неделю.. добрался до форума, нужна ваша помощь.

Задача: подключение 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(); а с терминала приходит всякий хлам.

Подскажите в какую сторону смотреть

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А скорости приема и передачи совпадают то?

Гриша
Offline
Зарегистрирован: 27.04.2014

вариант 2 В сторону компа с ком портом, на комп ставить программу перехватчик, потом анализировать покет, четности и скорость.

sadman41
Offline
Зарегистрирован: 19.10.2016

Oscar2k пишет:

Подключал через MAX3232 результата не было. Нарыл на форуме что в весах стоит аналогичная МАХ микросхема, на свой страх и риск подключил напрямую(без max3232) TX-RX, RX-TX. Данные стали передаваться, но получаю кракозябры.

Аналогичная микросхема работает на выход. Т.е. берет с весов TTL, выкидывает RS232. Так что решение об отказе от обратного преобразования неверен.

Вот что ещё написано в мануале: "скорость передачи данных в бит/сек (600/1200/2400/4800/ 9600) По умолчанию 2400".  Стоит начать с проверки этого. Ну и со скетча. Если вы так же readString() использовали при подключении через MAX232, то вполне могли получить ничто.

Oscar2k
Offline
Зарегистрирован: 17.06.2019

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' не работает. В мониторе порта отлично ловится этот символ 

sadman41
Offline
Зарегистрирован: 19.10.2016

Oscar2k пишет:

Для теста подключил DTU-H100 БЕЗ max3232 TX-RX, RX-TX. 

Эта фраза заставляет меня усомниться в том, что Вы понимаете, что такое RS-232. А без этого знания данную задачу решить самостоятельно удастся только методом тыка и то, если удача сопутствует по жизни.

Oscar2k
Offline
Зарегистрирован: 17.06.2019

Да в том то и дело не понимаю. для этого и пришел на форум. А делаю методом тыка... все верно. Знал бы -  не спрашивал... И все-таки методом тыка признаки работы и передачи данных ЕСТЬ. прошу помощи разобраться в каком моменте проблема.

sadman41
Offline
Зарегистрирован: 19.10.2016

https://www.sparkfun.com/tutorials/215 - обратите внимание на значения напряжений, в области которых функционирует RS-232.

Верните на место MAX232, примените к нему вот это: https://www.arduino.cc/en/Tutorial/SoftwareSerialExample

Если входы ардуине ещё не пожгли, то что-то увидите в Serial Monitor,

 

Oscar2k
Offline
Зарегистрирован: 17.06.2019

Да. я ничего не понимаю в rs232.

Вернул MAX3232. данные никаким образом не передаются. только напрямую :D

Отправляю с DTU-h100  "00 64 65 66" получаю обратно ответ "def" на ардуинке "753".

sadman41
Offline
Зарегистрирован: 19.10.2016

Тогда Вам ясновидящего нужно искать. Потому что по таким постам диагноз не поставить.

Oscar2k
Offline
Зарегистрирован: 17.06.2019

отправил 00 43 44 45 46 47 48 49

Вернулось CDEFGHI

На ардуино (матрица и монитор порта) ywusqom

sadman41
Offline
Зарегистрирован: 19.10.2016

Чтобы разобраться в этой истории Вам требуется удача или инструментарий. Первого пока не наблюдается. Стало быть - заводите инструментарий. Осциллограф, например. Проверяйте сигналы на стыках интерфейсов.

Иначе это всё равно что аппендицит шишками в лесу лечить. 

Oscar2k
Offline
Зарегистрирован: 17.06.2019

В передачи данных есть закономерность. Можно считать что это программная ошибка в кодировке или прочем. Или все-таки такая закономерность возможна и при неверном физическом подключении?

sadman41
Offline
Зарегистрирован: 19.10.2016
Oscar2k
Offline
Зарегистрирован: 17.06.2019

Почему аппарат сам понимает что отослал через ардуино. Если бы моим методом тыка что-либо сгорело, я бы смирился. а тут данные идут и почти логично, и кажется что решение на поверхности :D

p.s. будто обратная кодировка с пропуском одного символа....

Гриша
Offline
Зарегистрирован: 27.04.2014

такое впечатление, что замкнуты Tx and Rx и возвращается какойто кодированный... проверьте все настройки, скорость, четность, стоп и старт биты иначе так и будете муть получать... зацепите весы на СОМ порт компа - будет проще подобрать реальные настройки порта.

UPD  ипропуск символа как пропуск старт битов....

Oscar2k
Offline
Зарегистрирован: 17.06.2019

Проблема решилась инвертированием принимаемого сигнала. (Данные с черного ящика отправляются младшими разрядами байта вперёд).

Для этого надо установить соответствующий бит:

Код (Text):
  1. void setup() {
  2.     Serial.begin(115200); только тут 9600
  3.     SET_PERI_REG_MASK(UART_CONF0(UART0) , BIT19);
  4.  

Это нашел на соседнем форуме. 

Теперь ардуино принимает верные символы, а возвращается кракозябра. Но пока меня это устраивает.  :D

 

strarbit
Offline
Зарегистрирован: 12.06.2016