Wiki source code of Water Quality Sensors

Version 62.2 by Karry Zhuang on 2025/07/15 17:19

Show last authors
1 **Table of Contents:**
2
3 (% aria-label="macro:toc widget" contenteditable="false" role="region" tabindex="-1" %)
4 (((
5 (% class="macro" data-macro="startmacro:toc|-|" data-widget="xwiki-macro" data-xwiki-dom-updated="true" %)
6 (((
7 (% class="macro-placeholder hidden" %)
8 (((
9 macro:toc
10 )))
11
12 (% class="wikitoc" %)
13 * [[1. DR-ECK Water EC Probe>>doc:null||anchor="H1.DR-ECKWaterECProbe"]]
14 ** [[1.1 Specification:>>doc:null||anchor="H1.1Specification:"]]
15 ** [[1.2 Application for Different Range>>doc:null||anchor="H1.2ApplicationforDifferentRange"]]
16 ** [[1.3 Wiring>>doc:null||anchor="H1.3Wiring"]]
17 ** [[1.4 Mechinical Drawing>>doc:null||anchor="H1.4MechinicalDrawing"]]
18 ** [[1.5 Installation>>doc:null||anchor="H1.5Installation"]]
19 ** [[1.6 Maintenance>>doc:null||anchor="H1.6Maintenance"]]
20 ** [[1.7 RS485 Commands>>doc:null||anchor="H1.7RS485Commands"]]
21 *** [[1.7.1 Query address>>doc:null||anchor="H1.7.1A0Queryaddress"]]
22 *** [[1.7.2 Change address>>doc:null||anchor="H1.7.2Changeaddress"]]
23 *** [[1.7.3 Modify intercept>>doc:null||anchor="H1.7.3A0Modifyintercept"]]
24 *** [[1.7.4 Query data>>doc:null||anchor="H1.7.4A0Querydata"]]
25 *** [[1.7.5 Calibration Method>>doc:null||anchor="H1.7.5CalibrationMethod"]]
26 * [[2. DR-PH01 Water PH Sensor>>doc:null||anchor="H2.DR-PH01WaterPHSensor"]]
27 ** [[2.1 Specification>>doc:null||anchor="H2.1Specification"]]
28 ** [[2.2 Wiring>>doc:null||anchor="H2.2Wiring"]]
29 ** [[2.3 Mechinical Drawing>>doc:null||anchor="H2.3MechinicalDrawing"]]
30 ** [[2.4 Installation Notice>>doc:null||anchor="H2.4InstallationNotice"]]
31 ** [[2.5 Maintenance>>doc:null||anchor="H2.5Maintenance"]]
32 ** [[2.6 RS485 Commands>>doc:null||anchor="H2.6RS485Commands"]]
33 *** [[2.6.1 Query address>>doc:null||anchor="H2.6.1Queryaddress"]]
34 *** [[2.6.2 Change address>>doc:null||anchor="H2.6.2Changeaddress"]]
35 *** [[2.6.3 Modify intercept>>doc:null||anchor="H2.6.3Modifyintercept"]]
36 *** [[2.6.4 Query data>>doc:null||anchor="H2.6.4A0Querydata"]]
37 *** [[2.6.5 Calibration Method>>doc:null||anchor="H2.6.5CalibrationMethod"]]
38 * [[3. DR-ORP1 Water ORP Sensor>>doc:null||anchor="H3.DR-ORP1WaterORPSensor"]]
39 ** [[3.1 Specification>>doc:null||anchor="H3.1Specification"]]
40 ** [[3.2 Wiring>>doc:null||anchor="H3.2Wiring"]]
41 ** [[3.3 Mechinical Drawing>>doc:null||anchor="H3.3A0MechinicalDrawing"]]
42 ** [[3.4 Installation Notice>>doc:null||anchor="H3.4InstallationNotice"]]
43 ** [[3.5 Maintenance>>doc:null||anchor="H3.5Maintenance"]]
44 ** [[3.6 RS485 Commands>>doc:null||anchor="H3.6RS485Commands"]]
45 *** [[3.6.1 Query address>>doc:null||anchor="H3.6.1Queryaddress"]]
46 *** [[3.6.2 Change address>>doc:null||anchor="H3.6.2Changeaddress"]]
47 *** [[3.6.3 Modify intercept>>doc:null||anchor="H3.6.3Modifyintercept"]]
48 *** [[3.6.4 Query data>>doc:null||anchor="H3.6.4A0Querydata"]]
49 *** [[3.6.5 Calibration Method>>doc:null||anchor="H3.6.5CalibrationMethod"]]
50 * [[4. DR-DO1 Dissolved Oxygen Sensor>>doc:null||anchor="H4.DR-DO1DissolvedOxygenSensor"]]
51 ** [[4.1 Specification>>doc:null||anchor="H4.1Specification"]]
52 ** [[4.2 wiring>>doc:null||anchor="H4.2wiring"]]
53 ** [[4.3 Impedance requirements for current signals>>doc:null||anchor="H4.3A0Impedancerequirementsforcurrentsignals"]]
54 ** [[4.4 Mechinical Drawing>>doc:null||anchor="H4.4A0MechinicalDrawing"]]
55 ** [[4.5 Instructions for use and maintenance>>doc:null||anchor="H4.5Instructionsforuseandmaintenance"]]
56 ** [[4.6 RS485 Commands>>doc:null||anchor="H4.6RS485Commands"]]
57 *** [[4.6.1 Query address>>doc:null||anchor="H4.6.1A0Queryaddress"]]
58 *** [[4.6.2 Change address>>doc:null||anchor="H4.6.2Changeaddress"]]
59 *** [[4.6.3 Query data>>doc:null||anchor="H4.6.3A0Querydata"]]
60 * [[5. DR-TS1 Water Turbidity Sensor>>doc:null||anchor="H5.DR-TS1WaterTurbiditySensor"]]
61 ** [[5.1 Specification>>doc:null||anchor="H5.1Specification"]]
62 ** [[5.2 wiring>>doc:null||anchor="H5.2wiring"]]
63 ** [[5.3 Impedance requirements for current signals>>doc:null||anchor="H5.3A0Impedancerequirementsforcurrentsignals"]]
64 ** [[5.4 Mechinical Drawing>>doc:null||anchor="H5.4A0MechinicalDrawing"]]
65 ** [[5.5 Instructions for use and maintenance>>doc:null||anchor="H5.5Instructionsforuseandmaintenance"]]
66 ** [[5.6 RS485 Commands>>doc:null||anchor="H5.6RS485Commands"]]
67 *** [[5.6.1 Query address>>doc:null||anchor="H5.6.1A0Queryaddress"]]
68 *** [[5.6.2 Change address>>doc:null||anchor="H5.6.2A0Changeaddress"]]
69 *** [[5.6.3 Query data>>doc:null||anchor="H5.6.3A0Querydata"]]
70 * [[6.  Water Quality Sensor Datasheet>>doc:null||anchor="H6.A0WaterQualitySensorDatasheet"]]
71 )))
72
73 (% style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||height="15" role="presentation" title="Click and drag to move" width="15"]]
74 )))
75
76
77
78
79 = 1. DR-ECK Water EC Probe =
80
81 == 1.1 Specification: ==
82
83
84 * **Power Input**: DC7~~30
85
86 * **Power Consumption** : < 0.5W
87
88 * **Interface**: RS485. 9600 Baud Rate
89
90 * **EC Range & Resolution:**
91 ** **ECK0.01** : 0.02 ~~ 20 μS/cm
92 ** **ECK0.1**: 0.2 ~~ 200.0 μS/cm
93 ** **ECK1.0** : 0 ~~ 2,000 μS/cm  Resolution: 1 μS/cm
94 ** **ECK10.0** : 10 ~~ 20,000 μS/cm  Resolution: 10 μS/cm
95 ** **ECK200.0** : 1 ~~ 200,000 μS/cm  Resolution: 1 μS/cm
96
97 * **EC Accuracy**: ±1% FS
98 * **Temperature Accuracy: **±0.5 °C
99 * **Working environment:**
100 ** Ambient Temperature: 0–60°C
101 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
102 ** ECK200.0 Continuous monitoring of cross-section water quality, aquaculture, sewage treatment, environmental protection, pharmaceuticals, food, tap water, seawater and other high conductivity environments
103 * **IP Rated**: IP68
104
105 * **Max Pressure**: 0.6MPa
106
107 == 1.2 Application for Different Range ==
108
109
110 (% aria-label="image-20240714173018-1.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240714173018-1.png]](% title="Click and drag to resize" %)​(% aria-label="image-20240714173018-1.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
111
112
113 == 1.3 Wiring ==
114
115
116 (% aria-label="image-20241129142314-1.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20241129142314-1.png||height="352" width="1108"]](% title="Click and drag to resize" %)​(% aria-label="image-20241129142314-1.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
117
118
119 == 1.4 Mechinical Drawing ==
120
121 ECK1 and ECK10  ECK200
122
123
124 (% aria-label="image-20240714174241-2.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240714174241-2.png]](% title="Click and drag to resize" %)​(% aria-label="image-20240714174241-2.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]](%%) (% aria-label="1752564223905-283.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:1752564223905-283.png||height="399" width="160"]](% title="Click and drag to resize" %)​(% aria-label="1752564223905-283.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
125
126
127 == 1.5 Installation ==
128
129
130 **Electrode installation form:**
131
132 A: Side wall installation
133
134 B: Top flange installation
135
136 C: Pipeline bend installation
137
138 D: Pipeline bend installation
139
140 E: Flow-through installation
141
142 F: Submerged installation
143
144 (% aria-label="image-20240718190121-1.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240718190121-1.png||height="350" width="520"]](% title="Click and drag to resize" %)​(% aria-label="image-20240718190121-1.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
145
146 **Several common installation methods of electrodes**
147
148 When installing the sensor on site, you should strictly follow the correct installation method shown in the following picture. Incorrect installation method will cause data deviation.
149
150 A. Several common incorrect installation methods
151
152 (% aria-label="image-20240718190204-2.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240718190204-2.png||height="262" width="487"]](% title="Click and drag to resize" %)​(% aria-label="image-20240718190204-2.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
153
154 **Error cause:** The electrode joint is too long, the extension part is too short, the sensor is easy to form a dead cavity, resulting in measurement error.
155
156 (% aria-label="image-20240718190221-3.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240718190221-3.png||height="292" width="500"]](% title="Click and drag to resize" %)​(% aria-label="image-20240718190221-3.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
157
158 **Error cause: **Measurement error or instability may occur due to water flow not being able to fill the pipe or air accumulation at high altitudes.
159
160 B. Correct installation method
161
162 (% aria-label="image-20240718190249-4.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240718190249-4.png||height="287" width="515"]](% title="Click and drag to resize" %)​(% aria-label="image-20240718190249-4.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
163
164
165 == 1.6 Maintenance ==
166
167
168 * The equipment itself generally does not require daily maintenance. When an obvious fault occurs, please do not open it and repair it yourself, and contact us as soon as possible.
169
170 * If the electrode is not used for a long time, it can generally be stored in a dry place, but it must be placed (stored) in distilled water for several hours before use to activate the electrode. Electrodes that are frequently used can be placed (stored) in distilled water.
171
172 * Cleaning of conductivity electrodes: Organic stains on the electrode can be cleaned with warm water containing detergent, or with alcohol. Calcium and magnesium precipitates are best cleaned with 10% citric acid. The electrode plate or pole can only be cleaned by chemical methods or by shaking in water. Wiping the electrode plate will damage the coating (platinum black) on the electrode surface.
173
174 * The equipment should be calibrated before each use. It is recommended to calibrate it every 3 months for long-term use. The calibration frequency should be adjusted appropriately according to different application conditions (degree of dirt in the application, deposition of chemical substances, etc.).
175
176 == 1.7 RS485 Commands ==
177
178
179 RS485 signal (K1 default address 0x12; K10 default address 0x11):
180 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
181
182
183 === 1.7.1 Query address ===
184
185
186 **send:**
187
188 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
189 |=(% style="width: 74.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity low|=(% style="width: 59.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 59.75px;background-color:#4F81BD;color:white" %)CRC16 high
190 |(% style="width:99px" %)0XFE |(% style="width:72px" %)0X03|(% style="width:50px" %)0X00|(% style="width:42px" %)0X50|(% style="width:42px" %)0X00|(% style="width:42px" %)0X00|(% style="width:56px" %)0X51|(% style="width:56px" %)0XD4
191
192 If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, which can be used as a method of address query.
193
194
195 **response:**
196
197 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:512px" %)
198 |=(% style="width: 100px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 110px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 106px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 93px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 104px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
199 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
200
201
202
203 === 1.7.2 Change address ===
204
205
206 For example: Change the address of the sensor with address 1 to 2, master → slave
207
208 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
209 |=(% style="width: 74.75px; background-color: rgb(79, 129, 189); color: white;" %)Original address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
210 |(% style="width:67px" %)0X01|(% style="width:76px" %)0X06|(% style="width:60px" %)0X00|(% style="width:50px" %)0X50|(% style="width:50px" %)0X00|(% style="width:50px" %)0X02|(% style="width:57px" %)0X08|(% style="width:56px" %)0X1A
211
212 If the sensor receives correctly, the data is returned along the original path.
213
214 (% style="color:red" %)**Note: If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, and the return address is still the original address, which can be used as a method of address query.**
215
216
217 === 1.7.3 Modify intercept ===
218
219
220 **send:**
221
222 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:512px" %)
223 |=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)CRC16 high
224 |(% style="width:64px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X23|(% style="width:85px" %)0X00|(% style="width:1px" %)0X01|(% style="width:1px" %)0XF8|(% style="width:1px" %)(((
225 0X07
226 )))
227
228 Change the intercept of the sensor with address 1 to 10 (default 0), which is 0X000A in the command.
229
230 **response:**
231
232 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:512px" %)
233 |=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)CRC16 high
234 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)(((
235 0X02
236 )))|(% style="width:126px" %)0X00|(% style="width:85px" %)0X00|(% style="width:1px" %)0X0A|(% style="width:1px" %)0X38|(% style="width:1px" %)(((
237 0X8F
238 )))
239
240 === 1.7.4 Query data ===
241
242
243 Query the data (EC,temperature) of the sensor (address 11), host → slave
244
245 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
246 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
247 |(% style="width:99px" %)0X11|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:56px" %)0XC6|(% style="width:56px" %)0X9B
248
249 If the sensor receives correctly, the following data will be returned, slave → host
250
251 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
252 |=(% style="width: 40px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
253 |(% style="width:99px" %)0X11|(% style="width:72px" %)0X03|(% style="width:68px" %)0X04|(% style="width:70px" %)0X02|(% style="width:72px" %)0XAE|(% style="width:56px" %)0X01|(% style="width:56px" %)0X64|(% style="width:56px" %)0X8B|(% style="width:56px" %)0XD0
254
255 The address of the EC K10 sensor is 11
256
257 The query data command is 11 03 00 00 00 02 C6 9B
258
259 **For example**, the returned data is 11 03 04 (% style="color:red" %)**02 AE**(%%) 01 64 8B D0. 02 AE is converted to decimal 686,  K=10, EC: 6860uS/cm,temperature: 35.6℃ Convert the returned data to decimal and divide by 10.
260
261
262 Query the data (EC,temperature) of the sensor (address 11), host → slave
263
264 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
265 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
266 |(% style="width:99px" %)0X12|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:56px" %)0XC6|(% style="width:56px" %)0XA8
267
268 If the sensor receives correctly, the following data will be returned, slave → host
269
270 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
271 |=(% style="width: 40px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
272 |(% style="width:99px" %)0X12|(% style="width:72px" %)0X03|(% style="width:68px" %)0X04|(% style="width:70px" %)0X02|(% style="width:72px" %)0XAE|(% style="width:56px" %)0X01|(% style="width:56px" %)0X64|(% style="width:56px" %)0XB8|(% style="width:56px" %)0XD0
273
274 The address of the EC K1 sensor is 12
275
276 The query data command is 12 03 00 00 00 02 C6 A8
277
278 **For example**, the returned data is 12 03 04 (% style="color:red" %)**02 AE**(%%) 01 64 B8 D0. 02 AE is converted to decimal 686,  K=1, EC: 686uS/cm,temperature: 35.6℃ Convert the returned data to decimal and divide by 10.
279
280
281 ECK200
282
283 === 1.7.5 Calibration Method ===
284
285 ECK1 and ECK10.0
286
287 This device uses one-point calibration, and you need to prepare a known E standard solution. When mileage K=1, 1~~2000 uses 1413μS/cm standard solution, and when mileage K=10, 10~~20000 uses 12.88mS/cm standard solution.
288
289 (% style="color:blue" %)**The calibration steps are as follows:**
290
291 (1) Place the electrode in distilled water and clean it. When mileage 1~~2000 uses 1413μS/cm standard solution, enter the following calibration command after the data is stable.
292
293 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
294 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Data|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 high
295 |(% style="width:99px" %)0X12|(% style="width:112px" %)0X10|(% style="width:135px" %)0X00|(% style="width:126px" %)0X26|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X04|(% style="width:1px" %)(((
296 0X00
297 0X00
298 0X37
299 0X32
300 )))|(% style="width:1px" %)0XBD|(% style="width:1px" %)0XFC
301
302 1413*10 gives 0X00003732
303
304 **response:**
305
306 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
307 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
308 |(% style="width:99px" %)0X12|(% style="width:112px" %)0X10|(% style="width:135px" %)0X00|(% style="width:126px" %)0X26|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0XA2|(% style="width:1px" %)0XA0
309
310 (2) Place the electrode in distilled water to clean it. Use 12.88mS/cm standard solution for the range of 10~~20000. After the data is stable, enter the following calibration command
311
312 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
313 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Data|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 high
314 |(% style="width:99px" %)0X11|(% style="width:112px" %)0X10|(% style="width:135px" %)0X00|(% style="width:126px" %)0X26|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X04|(% style="width:1px" %)(((
315 0X00
316 0X01
317 0XF7
318 0X20
319 )))|(% style="width:1px" %)0X33|(% style="width:1px" %)0X75
320
321 12880*10 gives 0X01F720
322
323 **response:**
324
325 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
326 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
327 |(% style="width:99px" %)0X11|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X26|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0XEB|(% style="width:1px" %)0X50
328
329
330
331 EC200.0
332
333 For the device with address 01, use 1413uS/cm standard solution to calibrate the first point. Send frame: 1413. Convert hexadecimal to 585. Write 00 01, 00 00, 05 85 to 0x0120, 0x0121, 0x0122 respectively.
334
335 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
336 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Register Address|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Register length|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Data length|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Register contents|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 high
337 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X10|(% style="width:135px" %)0X01 0X20|(% style="width:126px" %)0X00 0X03|(% style="width:85px" %)0X06|(% style="width:1px" %)(((
338 0X00
339 0X01
340 0X00
341 0X00
342 0X05
343 0X85
344 )))|(% style="width:1px" %)0X1C|(% style="width:1px" %)(((
345 (((
346 0X25
347 )))
348 )))
349
350 **response:**
351
352 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
353 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Register Address|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Register length|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Data length|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 high
354 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X10|(% style="width:135px" %)0X01 0X20|(% style="width:126px" %)0X00 0X03|(% style="width:85px" %)0X06|(% style="width:1px" %)(((
355 0X80
356 )))|(% style="width:1px" %)0X3e|(% style="width:1px" %)(((
357 (((
358 0X85
359 )))
360 )))
361
362 = 2. DR-PH01 Water PH Sensor =
363
364 == 2.1 Specification ==
365
366
367 * **Power Input**: DC7~~30
368
369 * **Power Consumption** : < 0.5W
370
371 * **Interface**: RS485. 9600 Baud Rate
372
373 * **pH measurement range**: 0~~14.00pH; resolution: 0.01pH
374
375 * **pH measurement error**: ±0.15pH
376
377 * **Repeatability error**: ±0.02pH
378
379 * **Temperature measurement range**:0~~60°C; resolution: 0.1°C (set temperature for manual temperature compensation, default 25°C)
380
381 * **Temperature measurement error**: ±0.5°C
382
383 * **Working environment:**
384 ** Ambient Temperature: 0–60°C
385 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
386
387 * **Temperature Accuracy: **±0.5 °C
388
389 * **IP Rated**: IP68
390
391 * **Max Pressure**: 0.6MPa
392
393 == 2.2 Wiring ==
394
395
396 (% aria-label="image-20240720172548-2.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240720172548-2.png||height="348" width="571"]](% title="Click and drag to resize" %)​(% aria-label="image-20240720172548-2.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
397
398
399 == 2.3 Mechinical Drawing ==
400
401
402 (% aria-label="image-20240714174241-2.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240714174241-2.png]](% title="Click and drag to resize" %)​(% aria-label="image-20240714174241-2.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
403
404
405 == 2.4 Installation Notice ==
406
407
408 Do not power on while connect the cables. Double check the wiring before power on.
409
410 Installation Photo as reference:
411
412 (% style="color:blue" %)**Submerged installation:**
413
414 The lead wire of the equipment passes through the waterproof pipe, and the 3/4 thread on the top of the equipment is connected to the 3/4 thread of the waterproof pipe with raw tape. Ensure that the top of the equipment and the equipment wire are not flooded.
415
416 (% aria-label="image-20240718191348-6.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240718191348-6.png]](% title="Click and drag to resize" %)​(% aria-label="image-20240718191348-6.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
417
418 (% style="color:blue" %)**Pipeline installation:**
419
420 Connect the equipment to the pipeline through the 3/4 thread.
421
422 (% aria-label="image-20240718191336-5.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240718191336-5.png||height="239" width="326"]](% title="Click and drag to resize" %)​(% aria-label="image-20240718191336-5.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
423
424 (% style="color:blue" %)**Sampling:**
425
426 Take representative water samples according to sampling requirements. If it is inconvenient to take samples, you can also put the electrode into the solution to be tested and read the output data. After a period of time, take out the electrode and clean it.
427
428 (% style="color:blue" %)**Measure the pH of the water sample:**
429
430 First rinse the electrode with distilled water, then rinse it with the water sample, then immerse the electrode in the sample, carefully shake the test cup or stir it to accelerate the electrode balance, let it stand, and record the pH value when the reading is stable.
431
432
433 == 2.5 Maintenance ==
434
435
436 * The equipment itself generally does not require daily maintenance. When an obvious fault occurs, please do not open it and repair it yourself. Contact us as soon as possible!
437
438 * There is an appropriate amount of soaking solution in the protective bottle at the front end of the electrode. The electrode head is soaked in it to keep the glass bulb and the liquid junction activated. When measuring, loosen the bottle cap, pull out the electrode, and rinse it with pure water before use.
439
440 * Preparation of electrode soaking solution: Take a packet of PH4.00 buffer, dissolve it in 250 ml of pure water, and soak it in 3M potassium chloride solution. The preparation is as follows: Take 25 grams of analytical pure potassium chloride and dissolve it in 100 ml of pure water.
441
442 * The glass bulb at the front end of the electrode cannot come into contact with hard objects. Any damage and scratches will make the electrode ineffective.
443
444 * Before measurement, the bubbles in the electrode glass bulb should be shaken off, otherwise it will affect the measurement. When measuring, the electrode should be stirred in the measured solution and then placed still to accelerate the response.
445
446 * The electrode should be cleaned with deionized water before and after measurement to ensure accuracy.
447
448 * After long-term use, the pH electrode will become passivated, which is characterized by a decrease in sensitivity gradient, slow response, and inaccurate readings. At this time, the bulb at the bottom of the electrode can be soaked in 0.1M dilute hydrochloric acid for 24 hours (0.1M dilute hydrochloric acid preparation: 9 ml of hydrochloric acid is diluted to 1000 ml with distilled water), and then soaked in 3.3M potassium chloride solution for 24 hours. If the pH electrode is seriously passivated and soaking in 0.1M hydrochloric acid has no effect, the pH electrode bulb can be soaked in 4% HF (hydrofluoric acid) for 3-5 seconds, washed with pure water, and then soaked in 3.3M potassium chloride solution for 24 hours to restore its performance.
449
450 * Glass bulb contamination or liquid junction blockage can also cause electrode passivation. At this time, it should be cleaned with an appropriate solution according to the nature of the contaminant.
451
452 * The equipment should be calibrated before each use. For long-term use, it is recommended to calibrate once every 3 months. The calibration frequency should be adjusted appropriately according to different application conditions (degree of dirt in the application, deposition of chemical substances, etc.). After aging, the electrodes should be replaced in time.
453
454 == 2.6 RS485 Commands ==
455
456
457 RS485 signaldefault address 0x10
458 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
459
460
461 === 2.6.1 Query address ===
462
463
464 **send:**
465
466 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
467 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 high
468 |(% style="width:99px" %)0XFE |(% style="width:112px" %)0X03|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X00|(% style="width:1px" %)0X51|(% style="width:1px" %)0XD4
469
470 **response:**
471
472 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
473 |=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
474 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
475
476 === 2.6.2 Change address ===
477
478
479 For example: Change the address of the sensor with address 1 to 2, master → slave
480
481 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
482 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 high
483 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X08|(% style="width:1px" %)0X1A
484
485 If the sensor receives correctly, the data is returned along the original path.
486
487 (% style="color:red" %)**Note: If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, and the return address is still the original address, which can be used as a method of address query.**
488
489
490 === 2.6.3 Modify intercept ===
491
492
493 **send:**
494
495 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
496 |=(% style="width: 44.75px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 69.75px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 69.75px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address  low|=(% style="width: 69.75px; background-color: rgb(79, 129, 189); color: white;" %)Register Length high|=(% style="width: 69.75px; background-color: rgb(79, 129, 189); color: white;" %)Register Length low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
497 |(% style="width:71px" %)0X10|(% style="width:74px" %)0X06|(% style="width:67px" %)0X00|(% style="width:68px" %)0X10|(% style="width:69px" %)0X00|(% style="width:66px" %)0X64|(% style="width:57px" %)0X8A|(% style="width:57px" %)(((
498 0XA5
499 )))
500
501 Change the intercept of the sensor at address 10 to 1 (default is 0). You need to pass the intercept 1*100 =100 into the command 0x006.
502
503 **response:**
504
505 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
506 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
507 |(% style="width:99px" %)0X10|(% style="width:112px" %)0X06|(% style="width:135px" %)(((
508 0X00
509 )))|(% style="width:126px" %)0X10|(% style="width:85px" %)0X00|(% style="width:1px" %)0X64|(% style="width:1px" %)0X8A|(% style="width:1px" %)(((
510 0XA5
511 )))
512
513 === 2.6.4 Query data ===
514
515
516 Query the data (PH) of the sensor (address 10), host → slave
517
518 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
519 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
520 |(% style="width:99px" %)0X10|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0X87|(% style="width:56px" %)0X4B
521
522 If the sensor receives correctly, the following data will be returned, slave → host
523
524 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
525 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
526 |(% style="width:99px" %)0X10|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X02|(% style="width:72px" %)0XAE|(% style="width:56px" %)0XC4|(% style="width:56px" %)0X9B
527
528 The query data command is 10 03 00 00 00 01 87 4B. After the query, 7 bytes will be returned.
529
530 For example, the returned data is 10 03 02 (% style="color:red" %)**02 AE**(%%) C4 9B.
531
532 02 AE is the pH value, which is converted into decimal to get 686, and then two decimal places are added to get the actual value. 02 AE means the current pH value is 6.86.
533
534
535 === 2.6.5 Calibration Method ===
536
537
538 This device uses three-point calibration, and three known pH standard solutions need to be prepared.
539
540 (% style="color:blue" %)**The calibration steps are as follows:**
541
542 (1) Place the electrode in distilled water to clean it, and then place it in 9.18 standard buffer solution. After the data stabilizes, enter the following calibration command, and the 9.18 calibration is completed.
543
544 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
545 |=(% style="width: 61px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 66px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
546 |(% style="width:64px" %)0X10|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
547 0X00
548 )))|(% style="width:68px" %)0X20|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0X8A|(% style="width:55px" %)(((
549 0XF1
550 )))
551
552 (2) Wash the electrode in distilled water and place it in 6.86 standard buffer. After the data stabilizes, enter the following calibration command. The 6.86 calibration is completed.
553
554 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
555 |=(% style="width: 61px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 66px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
556 |(% style="width:64px" %)0X10|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
557 0X00
558 )))|(% style="width:68px" %)0X21|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0XDB|(% style="width:55px" %)(((
559 0X31
560 )))
561
562 (3) Wash the electrode in distilled water and place it in 4.01 standard buffer. After the data stabilizes, enter the following calibration command, and the 4.00 calibration is completed.
563
564 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
565 |=(% style="width: 61px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 66px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
566 |(% style="width:64px" %)0X10|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
567 0X00
568 )))|(% style="width:68px" %)0X22|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0X2B|(% style="width:55px" %)(((
569 0X31
570 )))
571
572 After the above three steps are completed, the calibration is successful. The advantage of three-point calibration compared to two-point calibration is that the electrode is calibrated separately in the acid and alkali parts, thereby achieving accurate calibration of the full range and making the measurement data more accurate.
573
574
575 = 3. DR-ORP1 Water ORP Sensor =
576
577 == 3.1 Specification ==
578
579
580 * **Power Input**: DC7~~30
581
582 * **Measuring range**:** **-1999~~1999mV
583
584 * **Resolution**: 1mV
585
586 * **Interface**: RS485. 9600 Baud Rate
587
588 * **Measurement error**: ±3mV
589
590 * **Stability**: ≤2mv/24 hours
591
592 * **Working environment:**
593 ** Ambient Temperature: 0–60°C
594 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
595
596 * **IP Rated**: IP68
597
598 * **Max Pressure**: 0.6MPa
599
600 == 3.2 Wiring ==
601
602
603 (% aria-label="image-20240720172620-3.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240720172620-3.png||height="378" width="620"]](% title="Click and drag to resize" %)​(% aria-label="image-20240720172620-3.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
604
605
606 == 3.3 Mechinical Drawing ==
607
608
609 (% aria-label="image-20240714174241-2.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240714174241-2.png]](% title="Click and drag to resize" %)​(% aria-label="image-20240714174241-2.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
610
611
612 == 3.4 Installation Notice ==
613
614
615 Do not power on while connect the cables. Double check the wiring before power on.
616
617 **Installation Photo as reference:**
618
619 (% style="color:blue" %)** Submerged installation:**
620
621 The lead wire of the equipment passes through the waterproof pipe, and the 3/4 thread on the top of the equipment is connected to the 3/4 thread of the waterproof pipe with raw tape. Ensure that the top of the equipment and the equipment wire are not flooded.
622
623 (% aria-label="image-20240718191348-6.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240718191348-6.png]](% title="Click and drag to resize" %)​(% aria-label="image-20240718191348-6.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
624
625 (% style="color:blue" %)** Pipeline installation:**
626
627 Connect the equipment to the pipeline through the 3/4 thread.
628
629 (% aria-label="image-20240718191336-5.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240718191336-5.png||height="239" width="326"]](% title="Click and drag to resize" %)​(% aria-label="image-20240718191336-5.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
630
631
632 == 3.5 Maintenance ==
633
634
635 (1) The equipment itself generally does not require daily maintenance. When an obvious fault occurs, please do not open it and repair it yourself, and contact us as soon as possible.
636
637 (2) In general, ORP electrodes do not need to be calibrated and can be used directly. When there is doubt about the quality and test results of the ORP electrode, the electrode potential can be checked with an ORP standard solution to determine whether the ORP electrode meets the measurement requirements, and the electrode can be recalibrated or replaced with a new ORP electrode. The frequency of calibration or inspection of the measuring electrode depends on different application conditions (the degree of dirt in the application, the deposition of chemical substances, etc.).
638
639 (3) There is an appropriate soaking solution in the protective bottle at the front end of the electrode, and the electrode head is soaked in it to ensure the activation of the platinum sheet and the liquid junction. When measuring, loosen the bottle cap, pull out the electrode, and rinse it with pure water before use.
640
641 (4) Preparation of electrode soaking solution: Take 25 grams of analytical pure potassium chloride and dissolve it in 100 ml of pure water to prepare a 3.3M potassium chloride solution.
642
643 (5) Before measuring, the bubbles in the electrode glass bulb should be shaken off, otherwise it will affect the measurement. When measuring, the electrode should be stirred in the measured solution and then placed still to accelerate the response.
644
645 (6) The electrode should be cleaned with deionized water before and after the measurement to ensure the measurement accuracy.
646
647 (7) After long-term use, the ORP electrode will be passivated, which is manifested as a decrease in sensitivity gradient, slow response, and inaccurate readings. At this time, the platinum sheet at the bottom of the electrode can be soaked in 0.1M dilute hydrochloric acid for 24 hours (0.1M dilute hydrochloric acid preparation: 9 ml of hydrochloric acid is diluted to 1000 ml with distilled water), and then soaked in 3.3M potassium chloride solution for 24 hours to restore its performance.
648
649 (8) Electrode contamination or liquid junction blockage can also cause electrode passivation. At this time, it should be cleaned with an appropriate solution according to the nature of the contaminant. If the platinum of the electrode is severely contaminated and an oxide film is formed, toothpaste can be applied to the platinum surface and then gently scrubbed to restore the platinum's luster.
650
651 (9) The equipment should be calibrated before each use. It is recommended to calibrate once every 3 months for long-term use. The calibration frequency should be adjusted appropriately according to different application conditions (degree of dirt in the application, deposition of chemical substances, etc.). After aging, the electrodes should be replaced in time.
652
653
654 == 3.6 RS485 Commands ==
655
656
657 RS485 signaldefault address 0x13
658 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
659
660
661 === 3.6.1 Query address ===
662
663
664 **send:**
665
666 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
667 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 high
668 |(% style="width:99px" %)0XFE |(% style="width:112px" %)0X03|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X00|(% style="width:1px" %)0X51|(% style="width:1px" %)0XD4
669
670 **response:**
671
672 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
673 |=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
674 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
675
676 === 3.6.2 Change address ===
677
678
679 For example: Change the address of the sensor with address 1 to 2, master → slave
680
681 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
682 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 high
683 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X08|(% style="width:1px" %)0X1A
684
685 If the sensor receives correctly, the data is returned along the original path.
686
687 (% style="color:red" %)**Note: If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, and the return address is still the original address, which can be used as a method of address query.**
688
689
690 === 3.6.3 Modify intercept ===
691
692
693 **send:**
694
695 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
696 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address  low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register Length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register Length low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
697 |(% style="width:99px" %)0X13|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X10|(% style="width:85px" %)0X00|(% style="width:1px" %)0X64|(% style="width:1px" %)0X8A|(% style="width:1px" %)(((
698 0X96
699 )))
700
701 Change the intercept of the sensor with address 1 to 10 (default 0), which is 0X000A in the command.
702
703 **response:**
704
705 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
706 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width:68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
707 |(% style="width:99px" %)0X13|(% style="width:112px" %)0X06|(% style="width:135px" %)(((
708 0X00
709 )))|(% style="width:126px" %)0X10|(% style="width:85px" %)0X00|(% style="width:1px" %)0X64|(% style="width:1px" %)0X8A|(% style="width:1px" %)(((
710 0X96
711 )))
712
713 === 3.6.4 Query data ===
714
715
716 Query the data (ORP) of the sensor (address 13), host → slave
717
718 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
719 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
720 |(% style="width:99px" %)0X13|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0X87|(% style="width:56px" %)0X78
721
722 If the sensor receives correctly, the following data will be returned, slave → host
723
724 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
725 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
726 |(% style="width:99px" %)0X13|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X02|(% style="width:72px" %)0XAE|(% style="width:56px" %)0X80|(% style="width:56px" %)0X9B
727
728 The query data command is 13 03 00 00 00 01 87 78
729
730 For example, the returned data is 13 03 02 (% style="color:red" %)**02 AE**(%%) 80 9B.
731
732 02 AE is the ORP value, converted to decimal, the actual value is 686, 02 AE means the current ORP value is 686mV
733
734
735 === 3.6.5 Calibration Method ===
736
737
738 This device uses two-point calibration, and two known ORP standard solutions need to be prepared. The calibration steps are as follows:
739 (1) Place the electrode in distilled water to clean it, and then place it in 86mV standard buffer solution. After the data stabilizes,
740 enter the following calibration command, and the 86mV point calibration is completed;
741
742 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
743 |=(% style="width: 42px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
744 |(% style="width:64px" %)0X13|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
745 0X00
746 )))|(% style="width:68px" %)0X24|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0XCB|(% style="width:55px" %)(((
747 0X03
748 )))
749
750 Wash the electrode in distilled water and place it in 256mV standard buffer. After the data is stable, enter the following calibration command to complete the 256mV point calibration.
751
752 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
753 |=(% style="width: 42px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
754 |(% style="width:68px" %)0X13|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
755 0X00
756 )))|(% style="width:68px" %)0X25|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0X9A|(% style="width:55px" %)(((
757 0XC3
758 )))
759
760 = 4. DR-DO1 Dissolved Oxygen Sensor =
761
762 == 4.1 Specification ==
763
764
765 * **Measuring range**: 0-20mg/L, 0–50℃
766
767 * **Accuracy**: 3%, ±0.5℃
768
769 * **Resolution**: 0.01 mg/L, 0.01℃
770
771 * **Maximum operating pressure**: 6 bar
772
773 * **Output signal**: A: 4-20mA (current loop)B: RS485 (standard Modbus-RTU protocol, device default address: 01)
774
775 * **Power supply voltage**: 5-24V DC
776
777 * **Working environment:**
778 ** Ambient Temperature: 0–60°C
779 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
780
781 * **Power consumption**: ≤0.5W
782
783 == 4.2 wiring ==
784
785
786 (% aria-label="image-20240720172632-4.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240720172632-4.png||height="390" width="640"]](% title="Click and drag to resize" %)​(% aria-label="image-20240720172632-4.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
787
788
789 == 4.3 Impedance requirements for current signals ==
790
791
792 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:400px" %)
793 |(% style="width:132px" %)**Supply Voltage**|(% style="width:67px" %)**9V**|(% style="width:67px" %)**12V**|(% style="width:67px" %)**20V**|(% style="width:67px" %)**24V**
794 |(% style="width:132px" %)**Max Impedance**|(% style="width:65px" %)**<250Ω**|(% style="width:67px" %)**<400Ω**|(% style="width:67px" %)**<500Ω**|(% style="width:65px" %)**<900Ω**
795
796 == 4.4 Mechinical Drawing ==
797
798
799 (% aria-label="image-20240719155308-1.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240719155308-1.png||height="226" width="527"]](% title="Click and drag to resize" %)​(% aria-label="image-20240719155308-1.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
800
801
802 == 4.5 Instructions for use and maintenance ==
803
804
805 * It can be directly put into water without adding a protective tube, ensuring the long-term stability, reliability and accuracy of the sensor.
806
807 * If the water conditions are complex and you want accurate data, you need to wipe the sensor probe frequently.
808
809 == 4.6 RS485 Commands ==
810
811
812 RS485 signaldefault address 0x14
813 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
814
815
816 === 4.6.1 Query address ===
817
818
819 **send:**
820
821 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
822 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Register address high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Register address low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
823 |(% style="width:99px" %)0XFF|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X0A|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:56px" %)0XF1|(% style="width:56px" %)0XD7
824
825 If you forget the original address of the sensor, you can use the broadcast address 0XFF instead. When using 0XFE, the host can only connect to one slave, which can be used as a method of address query.
826
827
828 **response:**
829
830 Register 0 data high and register 0 data low indicate the actual address of the sensor: 1
831 Register 1 data high and register 1 data low indicate the sensor version
832
833 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
834 |=(% style="width: 40px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
835 |(% style="width:99px" %)0XFF|(% style="width:72px" %)0X03|(% style="width:64px" %)0X04|(% style="width:68px" %)0X00|(% style="width:70px" %)0X01|(% style="width:72px" %)0X00|(% style="width:56px" %)0X00|(% style="width:56px" %)0XB4|(% style="width:56px" %)0X3C
836
837 === 4.6.2 Change address ===
838
839
840 For example: Change the address of the sensor with address 1 to 2(address range: 1-119), master → slave
841
842 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
843 |=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Original address|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Start address high|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Start address low|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Sensor version|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Sensor version|=(% style="width: 39px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high|=(% style="width: 39px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low
844 |(% style="width:67px" %)0X01|(% style="width:71px" %)0X10|(% style="width:65px" %)0X00|(% style="width:65px" %)0X0A|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:53px" %)0X04|(% style="width:53px" %)0X00|(% style="width:72px" %)0X02|(% style="width:53px" %)0X00|(% style="width:53px" %)0X00|(% style="width:56px" %)0XD2|(% style="width:53px" %)0X10
845
846 **response:**
847
848 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
849 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
850 |(% style="width:99px" %)0X01|(% style="width:72px" %)0X10|(% style="width:64px" %)0X00|(% style="width:68px" %)0X0A|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:56px" %)0X61|(% style="width:56px" %)0XCA
851
852 === 4.6.3 Query data ===
853
854
855 Query the data (dissolved oxygen) of the sensor (address 14), host → slave
856
857 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
858 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
859 |(% style="width:99px" %)0X14|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X14|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0XC6|(% style="width:56px" %)0XCB
860
861 If the sensor receives correctly, the following data will be returned, slave → host
862
863 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
864 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
865 |(% style="width:99px" %)0X14|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X03|(% style="width:72px" %)0X78|(% style="width:56px" %)0XB5|(% style="width:56px" %)0X55
866
867 After the query, 7 bytes will be returned. For example, the returned data is 14 03 02 (% style="color:red" %)**03 78**(%%) B5 55. 03 78 is the value of dissolved oxygen.
868
869 Converted to decimal, it is 888. Add two decimal places to get the actual value. 03 78 means the current dissolved oxygen is 8.88mg/L
870
871
872 Query the data (temperature) of the sensor (address 14), host → slave
873
874 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
875 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
876 |(% style="width:99px" %)0X14|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X11|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0XD6|(% style="width:56px" %)0XCA
877
878 If the sensor receives correctly, the following data will be returned, slave → host
879
880 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
881 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
882 |(% style="width:99px" %)0X14|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X09|(% style="width:72px" %)0XA4|(% style="width:56px" %)0XB2|(% style="width:56px" %)0X6C
883
884 After the query, 7 bytes will be returned. For example, the returned data is 14 03 02 (% style="color:red" %)**09 A4**(%%) B2 6C. 03 78 is the value of dissolved oxygen temperature.
885
886 Converted to decimal, it is 2468. Add two decimal places to get the actual value. 09 A4 means the current dissolved oxygen temperature is 24.68°C
887
888
889 = 5. DR-TS1 Water Turbidity Sensor =
890
891 == 5.1 Specification ==
892
893
894 * **Measuring range**: 0.1~~1000.0NTU
895
896 * **Accuracy**: ±5%
897
898 * **Resolution**: 0.1NTU
899
900 * **Stability**: ≤3mV/24 hours
901
902 * **Output signal**: RS485 (standard Modbus-RTU protocol, device default address: 01)
903
904 * **Power supply voltage**: 5~~24V DC (when output signal is RS485), 12~~24V DC (when output signal is 4~~20mA)
905
906 * **Working environment:**
907 ** Ambient Temperature: 0–60°C
908 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
909
910 * **Power consumption**: ≤ 0.5W
911
912 == 5.2 wiring ==
913
914
915 (% aria-label="image-20240720172640-5.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240720172640-5.png||height="387" width="635"]](% title="Click and drag to resize" %)​(% aria-label="image-20240720172640-5.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
916
917
918 == 5.3 Impedance requirements for current signals ==
919
920
921 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:400px" %)
922 |(% style="width:132px" %)**Supply Voltage**|(% style="width:67px" %)**9V**|(% style="width:67px" %)**12V**|(% style="width:67px" %)**20V**|(% style="width:67px" %)**24V**
923 |(% style="width:132px" %)**Max Impedance**|(% style="width:65px" %)**<250Ω**|(% style="width:67px" %)**<400Ω**|(% style="width:67px" %)**<500Ω**|(% style="width:65px" %)**<900Ω**
924
925 == 5.4 Mechinical Drawing ==
926
927
928 (% aria-label="image-20240718195058-7.png image widget" contenteditable="false" role="region" tabindex="-1" data-widget="image" %)[[image:image-20240718195058-7.png||height="305" width="593"]](% title="Click and drag to resize" %)​(% aria-label="image-20240718195058-7.png image widget" contenteditable="false" role="region" tabindex="-1" style="background-image:url(https://wiki.dragino.com/xwiki/webjars/wiki%3Axwiki/xwiki-platform-ckeditor-webjar/17.4.0/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||draggable="true" height="15" role="presentation" title="Click and drag to move" width="15"]]
929
930
931 == 5.5 Instructions for use and maintenance ==
932
933
934 * It can be directly put into water without adding a protective tube, ensuring the long-term stability, reliability and accuracy of the sensor.
935
936 * If the water conditions are complex and you want accurate data, you need to wipe the sensor probe frequently.
937
938 == 5.6 RS485 Commands ==
939
940
941 RS485 signaldefault address 0x15
942 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
943
944
945 === 5.6.1 Query address ===
946
947
948 **send:**
949
950 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
951 |=(% style="width: 80.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 54.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 58.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
952 |(% style="width:99px" %)0XFE |(% style="width:64.75px" %)0X03|(% style="width:64px" %)0X00|(% style="width:64.75px" %)0X50|(% style="width:70px" %)0X00|(% style="width:72px" %)0X00|(% style="width:56px" %)0X51|(% style="width:56px" %)0XD4
953
954 If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, which can be used as a method of address query.
955
956
957 **response:**
958
959 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
960 |=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
961 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
962
963 === 5.6.2 Change address ===
964
965
966 For example: Change the address of the sensor with address 1 to 2, master → slave
967
968 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
969 |=(% style="width: 80.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 54.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 58.75px;background-color:#4F81BD;color:white" %)CRC16 high
970 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X08|(% style="width:1px" %)0X1A
971
972 If the sensor receives correctly, the data is returned along the original path.
973
974 (% style="color:red" %)**Note: If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, and the return address is still the original address, which can be used as a method of address query.**
975
976
977 === 5.6.3 Query data ===
978
979
980 Query the data (turbidity) of the sensor (address 15), host → slave
981
982 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
983 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
984 |(% style="width:99px" %)0X15|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0X87|(% style="width:56px" %)0X1E
985
986 If the sensor receives correctly, the following data will be returned, slave → host
987
988 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
989 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
990 |(% style="width:99px" %)0X15|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X02|(% style="width:72px" %)0X9A|(% style="width:56px" %)0X09|(% style="width:56px" %)0X4C
991
992 The query data command is 15 03 00 00 00 01 87 1E
993
994 For example, the returned data is 15 03 02 (% style="color:red" %)**02 9A**(%%) 09 4C
995
996 02 9A is the turbidity value, converted to decimal, it is 666, and then divided by 10, the actual value is 66.6, 02 9A means the current turbidity value is 66.6 NTU
997
998
999 = 6.  Water Quality Sensor Datasheet =
1000
1001
1002 * **[[Water Quality Sensor Transmitter Datasheet>>https://www.dropbox.com/scl/fi/9tofocmgapkbddshznumn/Datasheet_WQS-xB-WQS-xS_Water-Quality-Sensor-Transmitter.pdf?rlkey=wxua12ur9swk30rkqnh2boo9z&st=axga6epf&dl=0]]**