Dear All,
I am trying to interface Arduino UNO with wind speed through RS485
I am using
RS485 [url=https://www.aliexpress.com/item/1893567852.html?spm=a2g0s.9042311.0.0.27424c4dp7vunY[/url]
Wind Speed [url=https://www.aliexpress.com/item/4000172670473.html?spm=a2g0s.issue_5ptha.0.0.7e894c4d2TqAau[/url]
Wind speed Manual https://media.digikey.com/pdf/Data%20Sheets/Seeed%20Technology/Wind_Speed_Transmitter_485Type_V1.0_UG.pdf
Connection
Code
#include <SoftwareSerial.h>
#define RX 10 //Serial Receive pin
#define TX 11 //Serial Transmit pin
#define RTS_pin 9 //RS485 Direction control
#define RS485Transmit HIGH
#define RS485Receive LOW
SoftwareSerial RS485Serial(RX, TX);
void setup() {
pinMode(RTS_pin, OUTPUT);
// Start the built-in serial port, for Serial Monitor
Serial.begin(9600);
Serial.println("Anemometer");
// Start the Modbus serial Port, for anemometer
RS485Serial.begin(4800);
delay(1000);
}
void loop() {
digitalWrite(RTS_pin, RS485Transmit); // init Transmit
byte Anemometer_request[] = {0x01, 0x03, 0x00, 0x16, 0x00, 0x01, 0x65, 0xCE}; // inquiry frame
RS485Serial.write(Anemometer_request, sizeof(Anemometer_request));
RS485Serial.flush();
digitalWrite(RTS_pin, RS485Receive); // Init Receive
byte Anemometer_buf[8];
RS485Serial.readBytes(Anemometer_buf, 8);
Serial.print("wind speed : ");
for( byte i=0; i<7; i++ ) {
Serial.print(Anemometer_buf[i], HEX);
Serial.print(" ");
}
Serial.print(" ==> ");
Serial.print(Anemometer_buf[4]);
Serial.print(" m/s");
Serial.println();
delay(100);
}
The output always
wind speed : 6C 8 FF 2 EC 8 F4 ==> 236 m/s
wind speed : 6C 8 FF 2 EC 8 F4 ==> 236 m/s
wind speed : 6C 8 FF 2 EC 8 F4 ==> 236 m/s
wind speed : 6C 8 FF 2 EC 8 F4 ==> 236 m/s
wind speed : 6C 8 FF 2 EC 8 F4 ==> 236 m/s
wind speed : 6C 8 FF 2 EC 8 F4 ==> 236 m/s
wind speed : 6C 8 FF 2 EC 8 F4 ==> 236 m/s
My suspension with
byte Anemometer_request[] = {0x01, 0x03, 0x00, 0x16, 0x00, 0x01, 0x65, 0xCE}; // inquiry frame
But I am not sure