Связь Arduino Uno и ESP32 с использованием RS485

Я пытаюсь установить связь между Arduino Uno (Master) и ESP32 (Slave), используя протокол RS485 (с использованием модуля MAX485). Я успешно сделал это между двумя Arduino Uno. Библиотека SoftwareSerial - это то, что я использую между двумя Arduino Uno, теперь пытаюсь использовать ESP32 и Arduino Uno (используя модуль MAX485) . Для ESP32 я использовал SoftwareSerial (https://github.com/akshaybaweja/SoftwareSerial) библиотека.

После прочтения библиотеки и установления связи я не смогу установить связь между ними. Делюсь своим кодом ниже.

Приемник

#include <SoftwareSerial.h>

SoftwareSerial softwareSerial(9, 10);
String str;

void setup()
{

  Serial.begin(9600);
  softwareSerial.begin(9600);

}

void loop()
{

  while (softwareSerial.available() > 0) {

    char inChar = softwareSerial.read();

    if (inChar == '$') {

        str.trim();
        Serial.println("received command" + str);
        memset(&str, 0, sizeof(str));
        Serial.flush();
        softwareSerial.flush();
    }
    else {
        str = str + inChar;
    }

 }

}

Отправитель

#include <SoftwareSerial.h>

SoftwareSerial swSer1(22, 23, false, 256);
String str;

void setup() {

  Serial.begin(9600);
  swSer1.begin(9600);

}

void loop() {

  String sendCmd = "MSG1$";
  Serial.println("Sending ");
  Serial.println(sendCmd );
  char copy[50];
  sendCmd.toCharArray(copy, 50);
  swSer1.write(sendCmd);
  delay(1000);


}

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

Примечание: КОНТАКТЫ DE И RE подключены к high для устройства-отправителя и к low для устройства-получателя, как указано в документации RS485.

, 👍0


2 ответа


1

Возможно, вы уже решили эту проблему, но в любом случае, пробовали ли вы работать с аппаратными последовательными портами? У вас есть три из них в ESP32. Я читал где-то еще, что при использовании библиотеки SoftwareSerial на устройствах ESP могут возникать некоторые проблемы с прерываниями, особенно при более высоких скоростях передачи данных.

,

Я еще не решил, я изменил саму схему, отличную от той, которую я использовал.. также я пробовал, но это не очень помогает мне в моем приложении., @KarmaCoding

@dejoo Где ты читал о некоторых проблемах с прерываниями? Я работаю в библиотеках Arduino, и мне хотелось бы получить эту информацию. Спасибо!:) Пд. Я не могу комментировать, потому что я только что зарегистрировался, @F A Fernández


1

Я не думаю, что вы можете использовать контакты 9 и 10, они подключены к внутренней флэш-памяти MspI, uart0 подключен к usb-чипу FTDI, используйте uart2 на 16 и 17.

,