Проблема последовательной связи RS-485 с arduino

Я использую 485 модулей для последовательной передачи данных от одного arduino uno к другому uno.

Если я подключу 2 платы arduino напрямую, не используя модуль rs485, то данные будут отправляться и приниматься без проблем. Но при использовании модуля rs485 передача прекращается.

Код Tx:

void setup() {
    Serial.begin(9600);
}

void loop() {
    Serial.write(200);
    Serial.flush();
    delay(50);
}

Код Rx:

#include <LiquidCrystal.h>

// инициализировать библиотеку номерами интерфейсных контактов
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
    Serial.begin(9600);
}

void loop() {
    if (Serial.available()) {        // Если данные поступили от ведущего устройства
        int reply= Serial.read();    // Читать байт
        delay(10);
        
        lcd.print(reply);
    }
}

Я не понимаю, в чем проблема. Я проверил каждую проводку, а код такой простой. Я просто посылаю один номер 200 и хочу показать его на rx.

Пожалуйста, помогите. Если кто-то имеет представление об этой проблеме, спасибо в любом случае.

, 👍2

Обсуждение

ваш код не очень разборчив в том виде, как он представлен ... пожалуйста отформатируйте его правильно, @jsotola

Что делать, если вы печатаете на последовательный терминал приемника, вместо того, чтобы пытаться отобразить его на ЖК-дисплее?, @Paul


2 ответа


1

В modbus есть два вывода типа DE и RE, которые необходимо установить и сбросить при передаче данных. Также вы можете проверить Modbus в этой библиотеке есть несколько примеров, которые могут быть вам полезны также в arduino Uno не используйте последовательное программное обеспечение для передачи данных используйте только последовательное оборудование Я предложу реализовать ваш код на arduino Mega, если у вас есть, а затем перенесите код для Uno. Просто пролистайте библиотеку, вы найдете несколько полезных примеров, и это решит вашу проблему

,

В вопросе нет упоминания о "modbus", это базовый RS485. В двухпроводном полудуплексном RS485 "приемопередатчик" обычно имеет вывод, который следует вытягивать вверх или вниз. (Да, в некоторых случаях modbus использует это как физический/электрический уровень), @Paul


0

Я протер очки, но не нашел схемы и списка запчастей. Похоже, вам нужно включить передатчик и / или приемник, чтобы заставить их работать. DE и RE-это контакты на чипе драйвера Max RSS 485 и других. Они не будут передавать или принимать, если они неверны. Многие соединяют DE и RE вместе, чтобы упростить переключение. В вашем случае вы должны включить передатчик на передающем Arduino и прием на принимающем Arduino. Не включайте передатчик на стороне приема, так как это может привести к конфликту шин, и он, вероятно, перестанет работать. Прием может быть включен на передатчике. Это делается с помощью некоторых протоколов для проверки отправленного сообщения. Поскольку вы отправляете только одним способом, вы можете подключить их к правильному логическому уровню. Также вам следует отключить шину, она может работать без, но лучше всего добавить резисторы.

,