WawGat Nano, Arduino Nano + WavShare 3485/485 некорректный прием

y2kill
y2kill аватар
Offline
Зарегистрирован: 17.09.2014

Все доброго времени суток.

Как обычно крутил-вертел но нихренашечки не выходит, может кто добрую мысль кинет?

Есть две Nano, одна WavGat, другая оригинальная Nano (так же есть и мега искра и оригинал.. но все тоже).

Соединяю их по rs485, модули тех же китайцев WavGat - WavShare 3485/485 (модули использовал с промышленным оборудованием, разбирал Modbus - все работает). Есть косяк у китайской наны - при инициализации serial - скорость порта не соответствует указанному, то есть: в скетче 115200 -> с компа присоединятся через USB (в мониторе порта или к примеру RealTerm не важно), то скорость необходимо ставить 57600.  И так для всех стандартных boudrate - на "скорость ниже"

Проблема в следующем - принимающая Nano - принимает хрень, а не то что ей отправляю...

SENDER:

#include <SoftwareSerial.h>
#define PIN_RSE 3
#define PIN_DI 8
#define PIN_RO 7
SoftwareSerial RS485Serial(PIN_RO, PIN_DI); 
void setup() {
  // put your setup code here, to run once:
RS485Serial.begin(19200);
pinMode(PIN_RSE, OUTPUT);
digitalWrite(PIN_RSE, LOW);
Serial.begin(19200);
Serial.println("SENDER MODULE");
}
void loop() {
  delay(2000);
  digitalWrite(PIN_RSE, HIGH);
  delay(10);
  Serial.println("a");
  RS485Serial.print("a");
  delay(10);
  digitalWrite(PIN_RSE, LOW);
}

RECIVER:

#include <SoftwareSerial.h>
#define PIN_RSE 3
#define PIN_DI 8
#define PIN_RO 7
SoftwareSerial RS485Serial(PIN_RO, PIN_DI); 
void setup() {
  // put your setup code here, to run once:
RS485Serial.begin(19200);
pinMode(PIN_RSE, OUTPUT);
digitalWrite(PIN_RSE, LOW);
Serial.begin(9600);
Serial.println("RECIVER MODULE");
}
void loop() {
 while (RS485Serial.available()){
    char RX = RS485Serial.read();
    Serial.println(RX);
  }
}

Результат на приемнике если в HEX прилетает (каждые 2 сек... как и указано на сендере) два бита:

0E FE 
Все... что за фигня не пойму... со скоростями игрался, провода проверял вроде все как на картинках в гугле..
Может кто встречался с такой байдой, или мысль куда копать подскажет...

 

b707
Offline
Зарегистрирован: 26.05.2017

y2kill пишет:

Может кто встречался с такой байдой, или мысль куда копать подскажет...

В первую очередь убрать вавгат. Раз говорите есть еще Мега - попробуйте для начала на связке Мега- Нано, чтобы неизвестных в этом пазле было меньше.

И еще - вы там букву "а" отсылаете? - поменяйте ее на F. например, от соблазна

y2kill
y2kill аватар
Offline
Зарегистрирован: 17.09.2014

b707 пишет:

y2kill пишет:

Может кто встречался с такой байдой, или мысль куда копать подскажет...

В первую очередь убрать вавгат. Раз говорите есть еще Мега - попробуйте для начала на связке Мега- Нано, чтобы неизвестных в этом пазле было меньше.

И еще - вы там букву "а" отсылаете? - поменяйте ее на F. например, от соблазна

 

Буква "a" тут так... последняя интерация... изначально вообще 1, 0 и любые до 255 числа слал... один черт прилетает не то... причем пробовал и .print()  .write()

Попробую на оригиналах... но и китайцы все таки с некоторыми танцами с бубном работают..

b707
Offline
Зарегистрирован: 26.05.2017

y2kill пишет:

Попробую на оригиналах... но и китайцы все таки с некоторыми танцами с бубном работают..

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

y2kill
y2kill аватар
Offline
Зарегистрирован: 17.09.2014

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

b707
Offline
Зарегистрирован: 26.05.2017

y2kill пишет:

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

ерунда какая-то, RS485 не требует соединять земли приемника и передатчика.

Или вы про какие-то другие земли говорите?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

b707 пишет:
ерунда какая-то, RS485 не требует соединять земли приемника и передатчика.

Или вы про какие-то другие земли говорите?

https://aliexpress.ru/item/488965236.html 

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

У меня была такая фигня со счётчиком, который по RS485/modbus работает. Периодически приходили битые пакеты. После соединения по земле все нормализовалось. Он мне ещё пару простых модулей 485 спалить ухитрился.

y2kill
y2kill аватар
Offline
Зарегистрирован: 17.09.2014

b707 пишет:

ерунда какая-то, RS485 не требует соединять земли приемника и передатчика.

Или вы про какие-то другие земли говорите?

Ну вот не ерундой оказалась. Не смогу найти и указать на статью конкретную, но общая земля на шине применяется как один из способов устранения проблем при передаче.. правда на хреновых проводах... + согласование линии резисторами (обычно на концах 120 Oм).. примеры тут https://tula-term.ru/informaciya/stati/rekomendacii-po-proektirovaniyu-montazhu-i-ekspluatacii-sistem-standarta-rs-485/ (Рис. 12б)

Глубоко не разбирался в моем конкретном случае, и поэтому сам не понял изначально почему не работает.. но сам факт соединения GND обоих устройств, решило проблему. Причем не важно было китайские дуньки или оригинальные..