RS485 Wind Direction Sensor/Transmitter Wiki - DFRobot

Introduction

The wind direction sensor is a professional meteorological instrument used to measure horizontal wind direction. It integrates a hall sensor inside. The shell and weather vane are made of aluminum alloy material and use special mold precision die casting process, featuring small dimension tolerance and high surface accuracy. The sensor internal circuit is protected, which makes the sensor have the properties of high strength, weather resistance, anti-corrosion, and waterproof. The cable connector adopts corrosion-resistant military plug that ensures the long service life of the product.
A low-inertia wind vane is used to sense the wind direction. When the wind direction changes, the tail wing rotates to drive the axle magnet to rotate through the shaft, thereby obtaining accurate wind direction information. It can detect the 16 natural wind directions. This sensor with high cost performance can be widely used in meteorology, ocean, environment, airports, ports, laboratories, industry, agriculture and transportation.

Features

Specification

Dimension

User Guide

1. Wire Color Description

Color Function
Red Positive
Black Negative
Yellow RS485+/A/T+
Green RS485-/B/T-

2. Installation Instruction

The white dot on the sensor must face true north in installation.

3. Modbus Protocol

Parameter Register Add. Function Type Function No. Parameter Range & Description Default Value
Wind Direction Value 0x0000 INT16 RO 0x03/reading 0-15 None
Modbus Slave Address 0x1000 INT16 reading-and-writing 0x03/reading
0x10/writing
0-255 2
Wind Direction Value
Parameter Range 0-15 Default Value: none
Parameter Storage None

Indication: wind direction value
Example: If the returned value is 00 04 (hexadecimal, true form), the high byte of the first byte is 00, the low byte of the second byte is 04, and the measured wind direction value is (00*256+04)=4, 0 for true north and clockwise 4 for true east.

Modbus Slave Add. (ADDRESS)
Parameter Range 0-255 Default Value: 2
Parameter Storage Immediate storage

Modbus address can be set to 0-255. You can use 0 address to set any address.

  1. Read register 0x0000, also wind direction value

Host query frame (hexadecimal): 02 03 00 00 00 01 84 39 (8byt)

Slave Add. Function Code Register Start Add. Length of Register High Bits of Check Code Low Bits of Check Code
1byt 1byt 2byt 2byt 1byt 1byt
0x02 0x03 0x00 0x00 0x00 0x01 0x84 0x39

Slave response frame (hexadecimal): 02 03 02 00 03 BC 45 (7byt)

Slave Add. Function Code Number of Valid Bytes Data Aera High Bits of Check Code Low Bits of Check Code
1byt 1byt 1byt 2byt 1byt 1byt
0×02 0x03 0x02 0x00 0x03 0xBC 0x45

16 directions value = 00 03 = 3, the direction is east-northeast according to the table below.

Correspondence Table

Value 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Direction North Northeast by north Northeast Northeast by east East Southeast by east Southeast Southeast by south South Southwest by south Southwest Southwest by west West Northwest by west Northwest Northwest by north
  1. Change register 0x1000, i.e. change Modbus slave address (ADDRESS)

Change Modbus slave address to 03

Host query frame (hexadecimal): 00 10 10 00 00 01 02 00 03 FA 00 (11byt)

Slave Add. Function Code Register Start Add. Length of Register Number of Valid Bytes Slave Add. to Be Written High Bits of Check Code Low Bits of Check Code
1byt 1byt 2byt 2byt 1byt 2byt 1byt 1byt
0x00 0x10 0x10 0x00 0x00 0x01 0x02 0x00 0x03 FA 00

Slave response frame (hexadecimal): 00 10 10 00 00 01 04 D8 (7byt), and that indicates the modification is successful.

Tutorial on Raspberry Pi

1. Connection

Here USB to RS485 Module is used.

2. Install libraries and download routines

Type the following commands in the terminal one by one

cd /tmp        
wget https://project-downloads.drogon.net/wiringpi-latest.deb   //Download wiringpi library        
sudo dpkg -i wiringpi-latest.deb  //Install wiringpi library        
cd .....                                                     //Enter the content you want to save file in        
git clone https://github.com/DFRobotdl/RS485_Wind_Direction_Transmitter.git     //Download program in github        
cd RS485_Wind_Direction_Transmitter/        

3. API Function List

/**
  @brief  initialize serial port
  @param  device Address of serial port,In Linux, it is the directory where the device is located.
  @return  Return 1 for initialization failure, and return 0 for initialization success
*/
unsigned char Init(char *device);

/**
  @brief  Modify address
  @param  Address1 For the current address, you can set any address with 0 address
  @param  Address2 The modified address.
  @return  A return value of 1 indicates success, and a return value of 0 indicates failure
*/
unsigned char ModifyAddress(unsigned char Address1, unsigned char Address2);

/**
  @brief  Read wind direction
  @param  Address The address where you want to read the data
  @return  The return value ≥0 indicates successful reading, the return value is the wind direction corresponding to the following table, and the return value is -1 indicates failed reading
                                                           Return the value to the direction correspondence table
  -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  |   value   |   0   |     1     |     2     |     3     |  4   |     5     |     6     |     7     |   8   |     9     |     10    |     11    |  12  |    13     |     14    |     15    |
  |-----------|-------|-----------|-----------|-----------|------|-----------|-----------|-----------|-------|-----------|-----------|-----------|------|-----------|-----------|-----------|
  | Direction | North | Northeast | Northeast | Northeast | East | Southeast | Southeast | Southeast | South | Southwest | Southwest | Southwest | West | Northwest | Northwest | Northwest | 
  |           |       | by north  |           |  by east  |      |  by east  |           | by south  |       | by south  |           |  by west  |      |  by west  |           | by north  |
  -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

*/
int readWindDirection(unsigned char Address);

4. Check the device

Type this in the terminal:

sudo ls -l /dev

Find out the device you just connected in.

5. Open the previously downloaded min.c file, change the device port in the program to the actual one and save it

6. Use the terminal to open the folder where the program is located, compile and run

gcc -Wall -lwiringPi -o Wind_Direction *.c
sudo ./Wind_Direction

You can see the accurate wind direction information

FAQ

For any questions, advice or cool ideas to share, please visit the DFRobot Forum.

More Documents