Связь 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.
@KarmaCoding, 👍0
2 ответа
Возможно, вы уже решили эту проблему, но в любом случае, пробовали ли вы работать с аппаратными последовательными портами? У вас есть три из них в ESP32. Я читал где-то еще, что при использовании библиотеки SoftwareSerial на устройствах ESP могут возникать некоторые проблемы с прерываниями, особенно при более высоких скоростях передачи данных.
Я не думаю, что вы можете использовать контакты 9 и 10, они подключены к внутренней флэш-памяти MspI, uart0 подключен к usb-чипу FTDI, используйте uart2 на 16 и 17.
- Основная связь Arduino ModBus RTU с проблемой измерителя мощности
- Мониторинг контроллера Modbus RTU с помощью Arduino и модуля RS485
- PN532 не обнаруживает RFID-карту при подключении к ESP32 в режиме I2C, но отлично работает с Arduino Uno
- Сбой защиты от разрушения стека ESP32 с Modbus RTU
- Управление VFD с помощью ModBus RTU через RS485 и Arduino
- Использование Modbus-RTU с Arduino и контроллером температуры
- считывание данных с контроллера через RS485 Modbus rtu Arduino
- Подключить датчик постоянного тока 12 В к Arduino UNO с помощью TTL RS485
Я еще не решил, я изменил саму схему, отличную от той, которую я использовал.. также я пробовал, но это не очень помогает мне в моем приложении., @KarmaCoding
@dejoo Где ты читал о некоторых проблемах с прерываниями? Я работаю в библиотеках Arduino, и мне хотелось бы получить эту информацию. Спасибо!:) Пд. Я не могу комментировать, потому что я только что зарегистрировался, @F A Fernández