Arduino RS485 shield к датчику температуры и влажности RS485

Я пытаюсь получить данные от rs485, но это не работает, пожалуйста, сообщите мне.

1.  Try to connect PC usb485 to DY-MD02 is work.
    Send command “AUTO” or “READ”

2.  Try to Arduino rs485 shield to DY-MD02 is not work.
    Send command “AUTO”

мой код

''''

char command[4] = {'A', 'U', 'T', 'O'};

int n = sizeof(command)/sizeof(command[0]);   // Количество элементов в массиве

String incoming = "";   // для входящих последовательных строковых данных

void setup()

{

      // инициализируем последовательные порты
      Serial.begin(9600);
      pinMode(EN,OUTPUT);
      digitalWrite(EN,HIGH); //Включить высокий уровень, экран RS485 ожидает передачи данных
      Serial.write(command,n); // Тестовая команда отправки Auto, Read to RS485
      delay(500);
}

void loop()

{

      String temp;
      digitalWrite(EN,LOW); //Включить низкий уровень, экран RS485 ожидает получения данных

      while(Serial.available() > 0 )
      {
          temp=Serial.read();
          Serial.println(temp);
          delay(1000); //Задержка на некоторое время, ожидание передачи данных
      }

}

''''


если изменить код на = Serial.readString(), ничего не отображается.

Пожалуйста, помогите мне Спасибо

XY-MD02

PC USB485 в порядке

Данные


к Юраю

Производитель сказал мне, что может подключиться к Arduino uno и отправить мне руководство.

см. в прикрепленном файле.

, 👍2

Обсуждение

точную модель или техпаспорт щита, пожалуйста? он общается с Uno через аппаратный последовательный порт?, @Juraj

модель щита?, @Juraj

похоже, что ваш последовательный ввод не предоставляет символы конца строки **(\r\n)** в конце. Функция readString шаг за шагом извлекает значение символа и сохраняет его в буфере до тех пор, пока не будет получен символ EOL. После получения символа EOL он возвращает строку., @Vaibhav

@Vaibhav, readString не заботятся о концах строк. он возвращается после тайм-аута, @Juraj

Мне нужны подробности о шилде RS485, @Juraj

Юраю = https://github.com/DFRobot/DFRobotMediaWikiMarkDown/wiki/Arduino_RS485_Shield_SKU__DFR0259, @Champasit

твой щит на фото другой, @Juraj


2 ответа


1

Я хочу изменить этот код на readStringUntil, все в порядке

if(Serial.available() > 0)
  {
    temp = Serial.readStringUntil('\n');
    Serial.println(temp);
    delay(1000); //Задержка на некоторое время, ожидание передачи данных
  } 

Спасибо всем за помощь ^^

,

0

Я предлагаю попробовать использовать библиотеку Modbus Master, она поможет вам получить данные с датчика. Проблема с кодом заключается в том, что вы только отправляете команду, но при взаимодействии с Modbus есть пакет/кадр, который вам нужно сформировать, а затем отправить его. Формат пакета/кадра показан на диаграмме нижеПакет Modbus

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

,