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(), ничего не отображается.
Пожалуйста, помогите мне Спасибо
к Юраю
Производитель сказал мне, что может подключиться к Arduino uno и отправить мне руководство.
см. в прикрепленном файле.
@Champasit, 👍2
Обсуждение2 ответа
Я хочу изменить этот код на readStringUntil, все в порядке
if(Serial.available() > 0)
{
temp = Serial.readStringUntil('\n');
Serial.println(temp);
delay(1000); //Задержка на некоторое время, ожидание передачи данных
}
Спасибо всем за помощь ^^
Я предлагаю попробовать использовать библиотеку Modbus Master, она поможет вам получить данные с датчика. Проблема с кодом заключается в том, что вы только отправляете команду, но при взаимодействии с Modbus есть пакет/кадр, который вам нужно сформировать, а затем отправить его. Формат пакета/кадра показан на диаграмме ниже
Я предпочитаю использовать Arduino Mega или другой Arduino, который имеет более 1 последовательного порта для связи. Я также столкнулся с похожей проблемой, но она была решена после небольшого поиска, вы можете посмотреть на проблему здесь
- Управление VFD с помощью ModBus RTU через RS485 и Arduino
- Проблема последовательной связи RS-485 с arduino
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Использовать все контакты как цифровые входы/выходы
- Float печатается только 2 десятичных знака после запятой
- Arduino как USB HID
- Serial1' was not declared in this scope
точную модель или техпаспорт щита, пожалуйста? он общается с 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