Wiki source code of SDI-12-LB/LS -- SDI-12 to LoRaWAN Converter User Manual
Version 126.1 by Mengting Qiu on 2024/11/18 16:52
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | |||
2 | |||
3 | (% style="text-align:center" %) | ||
4 | [[image:image-20240103165259-3.png||height="433" width="591"]] | ||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 | **Table of Contents:** | ||
13 | |||
14 | {{toc/}} | ||
15 | |||
16 | |||
17 | |||
18 | |||
19 | |||
20 | |||
21 | |||
22 | |||
23 | |||
24 | |||
25 | |||
26 | |||
27 | |||
28 | = 1. Introduction = | ||
29 | |||
30 | == 1.1 What is SDI-12 to LoRaWAN Converter == | ||
31 | |||
32 | |||
33 | ((( | ||
34 | The Dragino (% style="color:blue" %)**SDI-12-LB/LS**(%%) is a (% style="color:blue" %)**SDI-12 to LoRaWAN Converter **(%%)designed for Smart Agriculture solution. | ||
35 | ))) | ||
36 | |||
37 | ((( | ||
38 | SDI-12 (Serial Digital Interface at 1200 baud) is an asynchronous [[serial communications>>url:https://en.wikipedia.org/wiki/Serial_communication]] protocol for intelligent sensors that monitor environment data. SDI-12 protocol is widely used in Agriculture sensor and Weather Station sensors. | ||
39 | ))) | ||
40 | |||
41 | ((( | ||
42 | SDI-12-LB/LS has SDI-12 interface and support 12v output to power external SDI-12 sensor. It can get the environment data from SDI-12 sensor and sends out the data via LoRaWAN wireless protocol. | ||
43 | ))) | ||
44 | |||
45 | ((( | ||
46 | The LoRa wireless technology used in SDI-12-LB/LS allows device to send data and reach extremely long ranges at low data-rates. It provides ultra-long range spread spectrum communication and high interference immunity whilst minimizing current consumption. | ||
47 | ))) | ||
48 | |||
49 | ((( | ||
50 | SDI-12-LB/LS is powered by (% style="color:blue" %)**8500mAh Li-SOCI2 battery**(%%) or (% style="color:blue" %)**solar powered + Li-ion battery,**(%%) it is designed for long term use up to 5 years. | ||
51 | ))) | ||
52 | |||
53 | ((( | ||
54 | Each SDI-12-LB/LS is pre-load with a set of unique keys for LoRaWAN registrations, register these keys to local LoRaWAN server and it will auto connect after power on. | ||
55 | ))) | ||
56 | |||
57 | |||
58 | [[image:image-20230201084414-1.png||_mstalt="427765" height="464" width="1108"]] | ||
59 | |||
60 | |||
61 | == 1.2 Features == | ||
62 | |||
63 | |||
64 | * LoRaWAN 1.0.3 Class A | ||
65 | * Ultra-low power consumption | ||
66 | * Controllable 3.3v, 5v and 12v output to power external sensor | ||
67 | * SDI-12 Protocol to connect to SDI-12 Sensor | ||
68 | * Monitor Battery Level | ||
69 | * Bands: CN470/EU433/KR920/US915/EU868/AS923/AU915/IN865 | ||
70 | * Support Bluetooth v5.1 and LoRaWAN remote configure. | ||
71 | * Support wireless OTA update firmware | ||
72 | * Uplink on periodically | ||
73 | * Downlink to change configure | ||
74 | * 8500mAh Li/SOCl2 Battery (SDI-12-LB) | ||
75 | * Solar panel + 3000mAh Li-ion battery (SDI-12-LS) | ||
76 | |||
77 | == 1.3 Specification == | ||
78 | |||
79 | |||
80 | (% style="color:#037691" %)**Micro Controller:** | ||
81 | |||
82 | * MCU: 48Mhz ARM | ||
83 | * Flash: 256KB | ||
84 | * RAM: 64KB | ||
85 | |||
86 | (% style="color:#037691" %)**Common DC Characteristics:** | ||
87 | |||
88 | * Supply Voltage: Built-in Battery, 2.5v ~~ 3.6v | ||
89 | * Support current: 5V 300mA, 12V 100mA | ||
90 | * Operating Temperature: -40 ~~ 85°C | ||
91 | |||
92 | (% style="color:#037691" %)**LoRa Spec:** | ||
93 | |||
94 | * Frequency Range, Band 1 (HF): 862 ~~ 1020 Mhz | ||
95 | * Max +22 dBm constant RF output vs. | ||
96 | * RX sensitivity: down to -139 dBm. | ||
97 | * Excellent blocking immunity | ||
98 | |||
99 | (% style="color:#037691" %)**Current Input Measuring :** | ||
100 | |||
101 | * Range: 0 ~~ 20mA | ||
102 | * Accuracy: 0.02mA | ||
103 | * Resolution: 0.001mA | ||
104 | |||
105 | (% style="color:#037691" %)**Voltage Input Measuring:** | ||
106 | |||
107 | * Range: 0 ~~ 30v | ||
108 | * Accuracy: 0.02v | ||
109 | * Resolution: 0.001v | ||
110 | |||
111 | (% style="color:#037691" %)**Battery:** | ||
112 | |||
113 | * Li/SOCI2 un-chargeable battery | ||
114 | * Capacity: 8500mAh | ||
115 | * Self-Discharge: <1% / Year @ 25°C | ||
116 | * Max continuously current: 130mA | ||
117 | * Max boost current: 2A, 1 second | ||
118 | |||
119 | (% style="color:#037691" %)**Power Consumption** | ||
120 | |||
121 | * Sleep Mode: 5uA @ 3.3v | ||
122 | * LoRa Transmit Mode: 125mA @ 20dBm, 82mA @ 14dBm | ||
123 | |||
124 | == 1.4 Connect to SDI-12 Sensor == | ||
125 | |||
126 | |||
127 | [[image:1675212538524-889.png||_mstalt="298272"]] | ||
128 | |||
129 | |||
130 | == 1.5 Sleep mode and working mode == | ||
131 | |||
132 | |||
133 | (% style="color:blue" %)**Deep Sleep Mode: **(%%)Sensor doesn't have any LoRaWAN activate. This mode is used for storage and shipping to save battery life. | ||
134 | |||
135 | (% style="color:blue" %)**Working Mode: **(%%)In this mode, Sensor will work as LoRaWAN Sensor to Join LoRaWAN network and send out sensor data to server. Between each sampling/tx/rx periodically, sensor will be in IDLE mode), in IDLE mode, sensor has the same power consumption as Deep Sleep mode. | ||
136 | |||
137 | |||
138 | == 1.6 Button & LEDs == | ||
139 | |||
140 | |||
141 | [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LB_Waterproof_RS485UART_to_LoRaWAN_Converter/WebHome/image-20240103160425-4.png?rev=1.1||alt="image-20240103160425-4.png"]] | ||
142 | |||
143 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %) | ||
144 | |=(% style="width: 167px;background-color:#4F81BD;color:white" %)**Behavior on ACT**|=(% style="width: 117px;background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 226px;background-color:#4F81BD;color:white" %)**Action** | ||
145 | |(% style="background-color:#f2f2f2; width:167px" %)Pressing ACT between 1s < time < 3s|(% style="background-color:#f2f2f2; width:117px" %)Send an uplink|(% style="background-color:#f2f2f2; width:225px" %)((( | ||
146 | If sensor is already Joined to LoRaWAN network, sensor will send an uplink packet, (% style="color:blue" %)**blue led** (%%)will blink once. | ||
147 | Meanwhile, BLE module will be active and user can connect via BLE to configure device. | ||
148 | ))) | ||
149 | |(% style="background-color:#f2f2f2; width:167px" %)Pressing ACT for more than 3s|(% style="background-color:#f2f2f2; width:117px" %)Active Device|(% style="background-color:#f2f2f2; width:225px" %)((( | ||
150 | (% style="background-color:#f2f2f2; color:green" %)**Green led**(%%) will fast blink 5 times, device will enter (% style="color:#037691" %)**OTA mode**(%%) for 3 seconds. And then start to JOIN LoRaWAN network. | ||
151 | (% style="background-color:#f2f2f2; color:green" %)**Green led**(%%) will solidly turn on for 5 seconds after joined in network. | ||
152 | Once sensor is active, BLE module will be active and user can connect via BLE to configure device, no matter if device join or not join LoRaWAN network. | ||
153 | ))) | ||
154 | |(% style="background-color:#f2f2f2; width:167px" %)Fast press ACT 5 times.|(% style="background-color:#f2f2f2; width:117px" %)Deactivate Device|(% style="background-color:#f2f2f2; width:225px" %)(% style="color:red" %)**Red led**(%%) will solid on for 5 seconds. Means SDI-12-LB/LS is in Deep Sleep Mode. | ||
155 | |||
156 | == 1.7 Pin Mapping == | ||
157 | |||
158 | |||
159 | [[image:1675213198663-754.png||_mstalt="297167"]] | ||
160 | |||
161 | |||
162 | == 1.8 BLE connection == | ||
163 | |||
164 | |||
165 | SDI-12-LB/LS support BLE remote configure. | ||
166 | |||
167 | BLE can be used to configure the parameter of sensor or see the console output from sensor. BLE will be only activate on below case: | ||
168 | |||
169 | * Press button to send an uplink | ||
170 | * Press button to active device. | ||
171 | * Device Power on or reset. | ||
172 | |||
173 | If there is no activity connection on BLE in 60 seconds, sensor will shut down BLE module to enter low power mode. | ||
174 | |||
175 | |||
176 | == 1.9 Mechanical == | ||
177 | |||
178 | === 1.9.1 for LB version === | ||
179 | |||
180 | |||
181 | [[image:image-20230201090139-2.png||_mstalt="428623"]] | ||
182 | |||
183 | [[image:image-20230201090139-3.png||_mstalt="428987"]] | ||
184 | |||
185 | [[image:image-20230201090139-4.png||_mstalt="429351"]] | ||
186 | |||
187 | |||
188 | === 1.9.2 for LS version === | ||
189 | |||
190 | |||
191 | [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/SN50v3-LB/WebHome/image-20231231203439-3.png?width=886&height=385&rev=1.1||alt="image-20231231203439-3.png"]] | ||
192 | |||
193 | |||
194 | = 2. Configure SDI-12 to connect to LoRaWAN network = | ||
195 | |||
196 | == 2.1 How it works == | ||
197 | |||
198 | |||
199 | The SDI-12-LB/LS is configured as (% style="color:#037691" %)**LoRaWAN OTAA Class A**(%%) mode by default. It has OTAA keys to join LoRaWAN network. To connect a local LoRaWAN network, you need to input the OTAA keys in the LoRaWAN IoT server and activate the SDI-12-LB/LS. It will automatically join the network via OTAA and start to send the sensor value. The default uplink interval is 20 minutes. | ||
200 | |||
201 | |||
202 | == 2.2 Quick guide to connect to LoRaWAN server (OTAA) == | ||
203 | |||
204 | |||
205 | Following is an example for how to join the [[TTN v3 LoRaWAN Network>>url:https://console.cloud.thethings.network/]]. Below is the network structure; we use the [[LPS8v2>>url:https://www.dragino.com/products/lora-lorawan-gateway/item/228-lps8v2.html]] as a LoRaWAN gateway in this example. | ||
206 | |||
207 | |||
208 | [[image:image-20230201090528-5.png||_mstalt="430300" height="442" width="1056"]] | ||
209 | |||
210 | |||
211 | The LPS8V2 is already set to connected to [[TTN network >>url:https://console.cloud.thethings.network/]], so what we need to now is configure the TTN server. | ||
212 | |||
213 | |||
214 | (% style="color:blue" %)**Step 1**(%%): Create a device in TTN with the OTAA keys from SDI-12-LB/LS. | ||
215 | |||
216 | Each SDI-12-LB/LS is shipped with a sticker with the default device EUI as below: | ||
217 | |||
218 | [[image:image-20230426084456-1.png||height="241" width="519"]] | ||
219 | |||
220 | |||
221 | User can enter this key in their LoRaWAN Server portal. Below is TTN V3 screen shot: | ||
222 | |||
223 | * **Create the application.** | ||
224 | |||
225 | [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111048-1.png?width=1001&height=183&rev=1.1||alt="image-20240907111048-1.png"]] | ||
226 | |||
227 | [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111305-2.png?width=1000&height=572&rev=1.1||alt="image-20240907111305-2.png"]] | ||
228 | |||
229 | |||
230 | |||
231 | * **Add devices to the created Application.** | ||
232 | |||
233 | [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111659-3.png?width=977&height=185&rev=1.1||alt="image-20240907111659-3.png"]] | ||
234 | |||
235 | [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111820-5.png?width=975&height=377&rev=1.1||alt="image-20240907111820-5.png"]] | ||
236 | |||
237 | |||
238 | * **Enter end device specifics manually.** | ||
239 | |||
240 | [[image:image-20241118164859-1.png||height="561" width="642"]] | ||
241 | |||
242 | [[image:image-20241118165221-2.png||height="426" width="630"]] | ||
243 | |||
244 | |||
245 | (% style="color:blue" %)**Step 2**(%%): Activate on SDI-12-LB/LS | ||
246 | |||
247 | |||
248 | Press the button for 5 seconds to activate the SDI-12-LB/LS. | ||
249 | |||
250 | (% style="color:green" %)**Green led**(%%) will fast blink 5 times, device will enter (% style="color:blue" %)**OTA mode** (%%)for 3 seconds. And then start to JOIN LoRaWAN network. (% style="color:green" %)**Green led**(%%) will solidly turn on for 5 seconds after joined in network. | ||
251 | |||
252 | |||
253 | [[image:1675213704414-644.png||_mstalt="293748"]] | ||
254 | |||
255 | |||
256 | == 2.3 SDI-12 Related Commands == | ||
257 | |||
258 | |||
259 | User need to configure SDI-12-LB/LS to communicate with SDI-12 sensors otherwise the uplink payload will only include a few bytes. | ||
260 | |||
261 | If you use UART to connect a computer, refer to the following connection methods: | ||
262 | |||
263 | [[image:image-20240823165402-1.jpeg||height="488" width="678"]] | ||
264 | |||
265 | Screenshot example: | ||
266 | |||
267 | [[image:image-20240823165526-2.png||height="489" width="690"]] | ||
268 | |||
269 | |||
270 | |||
271 | === 2.3.1 Basic SDI-12 debug command === | ||
272 | |||
273 | |||
274 | User can run some basic SDI-12 command to debug the connection to the SDI-12 sensor. These commands can be sent via AT Command or LoRaWAN downlink command. | ||
275 | |||
276 | If SDI-12 sensor return value after get these commands, //SDI-12-LB/LS// will uplink the return on FPORT=100, otherwise, if there is no response from SDI-12 sensor. //SDI-12-LB/LS// will uplink NULL (0x 4E 55 4C 4C) to server. | ||
277 | |||
278 | The following is the display information on the serial port and the server. | ||
279 | |||
280 | |||
281 | [[image:image-20230201091027-6.png||_mstalt="429065"]] | ||
282 | |||
283 | |||
284 | [[image:image-20230201091027-7.png||_mstalt="429429" height="261" width="1179"]] | ||
285 | |||
286 | |||
287 | |||
288 | ==== (% style="color:blue" %)**al! ~-~- Get SDI-12 sensor Identification**(%%) ==== | ||
289 | |||
290 | |||
291 | * AT Command: AT+ADDRI=aa | ||
292 | * LoRaWAN Downlink(prefix 0xAA00): AA 00 aa | ||
293 | |||
294 | (% style="color:#037691" %)**Parameter: **(%%)aa: ASCII value of SDI-12 sensor address in downlink or HEX value in AT Command) | ||
295 | |||
296 | (% style="color:blue" %)**Example : **(%%)AT+ADDRI=0 ( Equal to downlink: 0x AA 00 30) | ||
297 | |||
298 | |||
299 | The following is the display information on the serial port and the server. | ||
300 | |||
301 | |||
302 | [[image:image-20230201091257-8.png||_mstalt="431392"]] | ||
303 | |||
304 | |||
305 | [[image:image-20230201091257-9.png||_mstalt="431756" height="225" width="1242"]] | ||
306 | |||
307 | |||
308 | ==== (% style="color:blue" %)**aM!,aMC!, aM1!- aM9!, aMC1!- aMC9!**(%%) ==== | ||
309 | |||
310 | |||
311 | (% style="color:red" %)**aM! **(%%): Start Non-Concurrent Measurement | ||
312 | |||
313 | (% style="color:red" %)**aMC! **(%%): Start Non-Concurrent Measurement – Request CRC | ||
314 | |||
315 | (% style="color:red" %)**aM1!- aM9! **(%%): Additional Measurements | ||
316 | |||
317 | (% style="color:red" %)**aMC1!- aMC9!**(%%) : Additional Measurements – Request CRC | ||
318 | |||
319 | |||
320 | * AT Command : AT+ADDRM=0,1,0,1 | ||
321 | |||
322 | * LoRaWAN Downlink(prefix 0xAA01): 0xAA 01 30 01 00 01 | ||
323 | |||
324 | Downlink:AA 01 aa bb cc dd | ||
325 | |||
326 | (% style="color:#037691" %)**aa**(%%): SDI-12 sensor address. | ||
327 | |||
328 | (% style="color:#037691" %)**bb**(%%): 0: no CRC, 1: request CRC | ||
329 | |||
330 | (% style="color:#037691" %)**cc**(%%): 1-9: Additional Measurement, 0: no additional measurement | ||
331 | |||
332 | (% style="color:#037691" %)**dd**(%%): delay (in second) to send (% style="color:#037691" %)__**aD0!**__(%%) to get return. | ||
333 | |||
334 | |||
335 | The following is the display information on the serial port and the server. | ||
336 | |||
337 | |||
338 | [[image:image-20230201091630-10.png||_mstalt="449995"]] | ||
339 | |||
340 | |||
341 | [[image:image-20230201091630-11.png||_mstalt="450372" height="247" width="1165"]] | ||
342 | |||
343 | |||
344 | |||
345 | ==== (% style="color:blue" %)**aC!, aCC!, aC1!- aC9!, aCC1!- aCC9! **(%%) ==== | ||
346 | |||
347 | |||
348 | (% style="color:red" %)**aC!**(%%) : Start Concurrent Measurement | ||
349 | |||
350 | (% style="color:red" %)**aCC!** (%%): Start Concurrent Measurement – Request CRC | ||
351 | |||
352 | (% style="color:red" %)**aC1!- aC9!**(%%) : Start Additional Concurrent Measurements | ||
353 | |||
354 | (% style="color:red" %)**aCC1!- aCC9!**(%%) : Start Additional Concurrent Measurements – Request CRC | ||
355 | |||
356 | |||
357 | * AT Command : AT+ADDRC=0,1,0,1 | ||
358 | |||
359 | * LoRaWAN Downlink(0xAA02): 0xAA 02 30 01 00 01 | ||
360 | |||
361 | Downlink: AA 02 aa bb cc dd | ||
362 | |||
363 | (% style="color:#037691" %)**aa**(%%): SDI-12 sensor address. | ||
364 | |||
365 | (% style="color:#037691" %)**bb**(%%): 0: no CRC, 1: request CRC | ||
366 | |||
367 | (% style="color:#037691" %)**cc**(%%): 1-9: Additional Measurement, 0: no additional measurement | ||
368 | |||
369 | (% style="color:#037691" %)**dd**(%%): delay (in second) to send (% style="color:#037691" %)__**aD0!**__(%%)__ __to get return. | ||
370 | |||
371 | |||
372 | The following is the display information on the serial port and the server. | ||
373 | |||
374 | |||
375 | [[image:image-20230201091954-12.png||_mstalt="453687"]] | ||
376 | |||
377 | |||
378 | [[image:image-20230201091954-13.png||_mstalt="454064" height="203" width="1117"]] | ||
379 | |||
380 | |||
381 | |||
382 | ==== (% style="color:blue" %)**aR0!- aR9!, aRC0!- aRC9!**(%%) ==== | ||
383 | |||
384 | |||
385 | Start Continuous Measurement | ||
386 | |||
387 | Start Continuous Measurement – Request CRC | ||
388 | |||
389 | |||
390 | * AT Command : AT+ADDRR=0,1,0,1 | ||
391 | * LoRaWAN Downlink (0xAA 03): 0xAA 03 30 01 00 01 | ||
392 | |||
393 | Downlink: AA 03 aa bb cc dd | ||
394 | |||
395 | (% style="color:#037691" %)**aa**(%%): SDI-12 sensor address. | ||
396 | |||
397 | (% style="color:#037691" %)**bb**(%%): 0: no CRC, 1: request CRC | ||
398 | |||
399 | (% style="color:#037691" %)**cc**(%%): 1-9: Additional Measurement, 0: no additional measurement | ||
400 | |||
401 | (% style="color:#037691" %)**dd**(%%): delay (in second) to send (% style="color:#037691" %)__**aD0!**__(%%) to get return. | ||
402 | |||
403 | |||
404 | The following is the display information on the serial port and the server. | ||
405 | |||
406 | |||
407 | [[image:image-20230201092208-14.png||_mstalt="452283"]] | ||
408 | |||
409 | |||
410 | [[image:image-20230201092208-15.png||_mstalt="452660" height="214" width="1140"]] | ||
411 | |||
412 | |||
413 | === 2.3.2 Advance SDI-12 Debug command === | ||
414 | |||
415 | |||
416 | This command can be used to debug all SDI-12 command. | ||
417 | |||
418 | |||
419 | LoRaWAN Downlink: A8 aa xx xx xx xx bb cc dd | ||
420 | |||
421 | (% style="color:#037691" %)**aa **(%%): total SDI-12 command length | ||
422 | |||
423 | (% style="color:#037691" %)**xx **(%%): SDI-12 command | ||
424 | |||
425 | (% style="color:#037691" %)**bb **(%%): Delay to wait for return | ||
426 | |||
427 | (% style="color:#037691" %)**cc **(%%): 0: don't uplink return to LoRaWAN, 1: Uplink return to LoRaWAN on FPORT=100 | ||
428 | |||
429 | (% style="color:#037691" %)**dd: **(%%) 0: Do not use aD0! command access, 1: use aD0! command access. | ||
430 | |||
431 | |||
432 | (% style="color:blue" %)**Example1: **(%%) AT+CFGDEV =0RC0!,1 | ||
433 | |||
434 | (% style="color:#037691" %)**0RC0! **(%%): SDI-12 Command, | ||
435 | |||
436 | (% style="color:#037691" %)**1 **(%%): Delay 1 second. ( 0: 810 mini-second) | ||
437 | |||
438 | Equal Downlink: 0xA8 05 30 52 43 30 21 01 01 | ||
439 | |||
440 | |||
441 | The following is the display information on the serial port and the server. | ||
442 | |||
443 | |||
444 | [[image:image-20230201092355-16.png||_mstalt="453960"]] | ||
445 | |||
446 | |||
447 | [[image:image-20230201092355-17.png||_mstalt="454337" height="426" width="1135"]] | ||
448 | |||
449 | |||
450 | (% style="color:blue" %)**Example2: **(%%) AT+CFGDEV =0M!,1,1 | ||
451 | |||
452 | (% style="color:#037691" %)**0M! **(%%): SDI-12 Command, | ||
453 | |||
454 | (% style="color:#037691" %)**1 **(%%): Delay 1 second. ( 0: 810 mini-second) | ||
455 | |||
456 | (% style="color:#037691" %)**1 **(%%): Use aD0! command access. | ||
457 | |||
458 | Equal Downlink: 0xA8 03 30 4D 21 01 01 01 | ||
459 | |||
460 | |||
461 | The following is the display information on the serial port and the server. | ||
462 | |||
463 | |||
464 | [[image:image-20230628091055-1.png||height="368" width="462"]] | ||
465 | |||
466 | [[image:image-20230628091130-2.png||height="258" width="879"]] | ||
467 | |||
468 | |||
469 | === 2.3.3 Convert ASCII to String === | ||
470 | |||
471 | |||
472 | This command is used to convert between ASCII and String format. | ||
473 | |||
474 | AT+CONVFORM ( Max length: 80 bytes) | ||
475 | |||
476 | |||
477 | (% style="color:blue" %)**Example:** | ||
478 | |||
479 | 1) AT+CONVFORM=0, string Convert String from String to ASCII | ||
480 | |||
481 | [[image:1675214845056-885.png||_mstalt="297622"]] | ||
482 | |||
483 | |||
484 | 2) AT+CONVFORM=1, ASCII Convert ASCII to String. | ||
485 | |||
486 | [[image:1675214856590-846.png||_mstalt="297739"]] | ||
487 | |||
488 | |||
489 | === 2.3.4 Define periodically SDI-12 commands and uplink. === | ||
490 | |||
491 | |||
492 | AT+COMMANDx & AT+DATACUTx | ||
493 | |||
494 | User can define max 15 SDI-12 Commands (AT+COMMAND1 ~~ AT+COMMANDF). On each uplink period (TDC time, default 20 minutes), SDI-12-LB/LS will send these SDI-12 commands and wait for return from SDI-12 sensors. SDI-12-LB/LS will then combine these returns and uplink via LoRaWAN. | ||
495 | |||
496 | |||
497 | * (% style="color:blue" %)**AT Command:** | ||
498 | |||
499 | (% style="color:#037691" %)**AT+COMMANDx=var1,var2,var3,var4.** | ||
500 | |||
501 | (% style="color:red" %)**var1**(%%): SDI-12 command , for example: 0RC0! | ||
502 | |||
503 | (% style="color:red" %)**var2**(%%): Wait timeout for return. (unit: second) | ||
504 | |||
505 | (% style="color:red" %)**var3**(%%): Whether to send //addrD0!// to get return after var2 timeout. 0: Don't Send //addrD0! //; 1: Send //addrD0!//. | ||
506 | |||
507 | (% style="color:red" %)**var4**(%%): validation check for return. If return invalid, SDI-12-LB/LS will resend this command. Max 3 retries. | ||
508 | |||
509 | (% style="color:red" %)**0 **(%%) No validation check; | ||
510 | |||
511 | (% style="color:red" %)**1** (%%) Check if return chars are printable char(0x20 ~~ 0x7E); | ||
512 | |||
513 | (% style="color:red" %)**2**(%%) Check if there is return from SDI-12 sensor | ||
514 | |||
515 | (% style="color:red" %)**3** (%%) Check if return pass CRC check ( SDI-12 command var1 must include CRC request); | ||
516 | |||
517 | |||
518 | Each AT+COMMANDx is followed by a (% style="color:blue" %)**AT+DATACUT**(%%) command. AT+DATACUT command is used to take the useful string from the SDI-12 sensor so the final payload will have the minimum length to uplink. | ||
519 | |||
520 | |||
521 | (% style="color:blue" %)**AT+DATACUTx**(%%) : This command defines how to handle the return from AT+COMMANDx, max return length is 100 bytes. | ||
522 | |||
523 | (% border="1" style="width:436px" %) | ||
524 | |(% style="background-color:#f2f2f2; width:433px" %)((( | ||
525 | (% style="color:#0070c0" %)**AT+DATACUTx=a,b,c** | ||
526 | |||
527 | **a**: length for the return of AT+COMMAND | ||
528 | |||
529 | **b**: 1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections. | ||
530 | |||
531 | **c**: define the position for valid value. | ||
532 | ))) | ||
533 | |||
534 | For example, if return from AT+COMMAND1 is “013METER TER12 112T12-00024895<CR><LF>” , Below AT+DATACUT1 will get different result to combine payload: | ||
535 | |||
536 | |||
537 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %) | ||
538 | |=(% style="width: 164px;background-color:#4F81BD;color:white" %)**AT+DATACUT1 value**|=(% style="width: 346px;background-color:#4F81BD;color:white" %)**Final Result to combine Payload** | ||
539 | |(% style="background-color:#f2f2f2; width:164px" %)34,1,1+2+3|(% style="background-color:#f2f2f2; width:344px" %)0D 00 01 30 31 33 | ||
540 | |(% style="background-color:#f2f2f2; width:164px" %)34,2,1~~8+12~~16|(% style="background-color:#f2f2f2; width:344px" %)0D 00 01 30 31 33 4D 45 54 45 52 54 45 52 31 32 | ||
541 | |(% style="background-color:#f2f2f2; width:164px" %)34,2,1~~34|(% style="background-color:#f2f2f2; width:344px" %)0D 00 01 30 31 33 4D 45 54 45 52 20 20 20 54 45 52 31 32 20 31 31 32 54 31 32 2D 30 30 30 32 34 38 39 35 0D 0A | ||
542 | |||
543 | * (% style="color:blue" %)** Downlink Payload:** | ||
544 | |||
545 | (% style="color:blue" %)**0xAF**(%%) downlink command can be used to set AT+COMMANDx or AT+DATACUTx. | ||
546 | |||
547 | |||
548 | (% style="color:red" %)**Note : if user use AT+COMMANDx to add a new command, he also need to send AT+DATACUTx downlink.** | ||
549 | |||
550 | |||
551 | Format: ** (% style="color:#037691" %)AF MM NN LL XX XX XX XX YY(%%)** | ||
552 | |||
553 | Where: | ||
554 | |||
555 | * (% style="color:#037691" %)**MM **(%%): the AT+COMMAND or AT+DATACUT to be set. Value from 01 ~~ 0F, | ||
556 | * (% style="color:#037691" %)**NN **(%%): 1: set the AT+COMMAND value ; 2: set the AT+DATACUT value. | ||
557 | * (% style="color:#037691" %)**LL **(%%): The length of AT+COMMAND or AT+DATACUT command | ||
558 | * (% style="color:#037691" %)**XX XX XX XX **(%%): AT+COMMAND or AT+DATACUT command | ||
559 | * (% style="color:#037691" %)**YY **(%%): If YY=0, SDI-12-LB/LS will execute the downlink command without uplink; if YY=1, SDI-12-LB/LS will execute an uplink after got this command. | ||
560 | |||
561 | (% style="color:blue" %)**Example:** | ||
562 | |||
563 | [[image:image-20230201094129-18.png||_mstalt="455065"]] | ||
564 | |||
565 | |||
566 | |||
567 | (% style="color:blue" %)**Clear SDI12 Command** | ||
568 | |||
569 | The AT+COMMANDx and AT+DATACUTx settings are stored in special location, user can use below command to clear them. | ||
570 | |||
571 | |||
572 | * (% style="color:#037691" %)**AT Command:** | ||
573 | |||
574 | (% style="color:#4f81bd" %)**AT+CMDEAR=mm,nn** (%%) mm: start position of erase ,nn: stop position of erase | ||
575 | |||
576 | |||
577 | Etc. AT+CMDEAR=1,10 means erase AT+COMMAND1/AT+DATACUT1 to AT+COMMAND10/AT+DATACUT10 | ||
578 | |||
579 | |||
580 | * (% style="color:#037691" %)**Downlink Payload:** | ||
581 | |||
582 | (% style="color:#4f81bd" %)**0x09 aa bb**(%%) same as AT+CMDEAR=aa,bb | ||
583 | |||
584 | |||
585 | |||
586 | (% style="color:blue" %)**command combination** | ||
587 | |||
588 | Below shows a screen shot how the results combines together to a uplink payload. | ||
589 | |||
590 | [[image:1675215745275-920.png||_mstalt="295334"]] | ||
591 | |||
592 | |||
593 | If user don't want to use DATACUT for some command, he simply want to uplink all returns. AT+ALLDATAMOD can be set to 1. | ||
594 | |||
595 | (% style="color:blue" %)**AT+ALLDATAMOD**(%%) will simply get all return and don't do CRC check as result for SDI-12 command. AT+DATACUTx command has higher priority, if AT+DATACUTx has been set, AT+ALLDATAMOD will be ignore for this SDI-12 command. | ||
596 | |||
597 | |||
598 | (% style="color:#4f81bd" %)**For example: **(%%) as below photo, AT+ALLDATAMOD=1, but AT+DATACUT1 has been set, AT+DATACUT1 will be still effect the result. | ||
599 | |||
600 | |||
601 | [[image:1675215782925-448.png||_mstalt="297466"]] | ||
602 | |||
603 | |||
604 | If AT+ALLDATAMOD=1, (% style="color:#4f81bd" %)**FX,X**(%%) will be added in the payload, FX specify which command is used and X specify the length of return. for example in above screen, F1 05 means the return is from AT+COMMAND1 and the return is 5 bytes. | ||
605 | |||
606 | |||
607 | (% style="color:blue" %)**Compose Uplink** | ||
608 | |||
609 | (% style="color:#4f81bd" %)**AT+DATAUP=0** | ||
610 | |||
611 | Compose the uplink payload with value returns in sequence and send with **__A SIGNLE UPLINK__**. | ||
612 | |||
613 | Final Payload is **__Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx__** | ||
614 | |||
615 | Where PAYVER is defined by AT+PAYVER, below is an example screen shot. | ||
616 | |||
617 | |||
618 | [[image:1675215828102-844.png||_mstalt="294645"]] | ||
619 | |||
620 | |||
621 | (% style="color:#4f81bd" %)**AT+DATAUP=1** | ||
622 | |||
623 | Compose the uplink payload with value returns in sequence and send with **__Multiply UPLINKs__**. | ||
624 | |||
625 | Final Payload is __**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**__ | ||
626 | |||
627 | 1. Battery Info (2 bytes): Battery voltage | ||
628 | 1. PAYVER (1 byte): Defined by AT+PAYVER | ||
629 | 1. PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling. | ||
630 | 1. PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT) | ||
631 | 1. DATA: Valid value: max 6 bytes(US915 version here, Notice*!) for each uplink so each uplink <= 11 bytes. For the last uplink, DATA will might less than 6 bytes | ||
632 | |||
633 | [[image:1675215848113-696.png||_mstalt="296998"]] | ||
634 | |||
635 | |||
636 | (% style="color:red" %)**Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:** | ||
637 | |||
638 | * For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date) | ||
639 | * For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date). | ||
640 | * For US915 band, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date). | ||
641 | * For all other bands: max 51 bytes for each uplink ( so 51 -5 = 46 max valid date). | ||
642 | |||
643 | (% style="color:red" %)**When AT+DATAUP=1, the maximum number of segments is 15, and the maximum total number of bytes is 1500;** | ||
644 | |||
645 | (% style="color:red" %)**When AT+DATAUP=1 and AT+ADR=0, the maximum number of bytes of each payload is determined by the DR value.** | ||
646 | |||
647 | |||
648 | == 2.4 Uplink Payload == | ||
649 | |||
650 | === 2.4.1 Device Payload, FPORT~=5 === | ||
651 | |||
652 | |||
653 | Include device configure status. Once SDI-12-LB/LS Joined the network, it will uplink this message to the server. | ||
654 | |||
655 | Users can also use the downlink command(0x26 01) to ask SDI-12-LB/LS to resend this uplink. | ||
656 | |||
657 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %) | ||
658 | |(% colspan="6" style="background-color:#4f81bd; color:white" %)**Device Status (FPORT=5)** | ||
659 | |(% style="background-color:#f2f2f2; width:103px" %)**Size (bytes)**|(% style="background-color:#f2f2f2; width:72px" %)**1**|(% style="background-color:#f2f2f2" %)**2**|(% style="background-color:#f2f2f2; width:91px" %)**1**|(% style="background-color:#f2f2f2; width:86px" %)**1**|(% style="background-color:#f2f2f2; width:44px" %)**2** | ||
660 | |(% style="background-color:#f2f2f2; width:103px" %)**Value**|(% style="background-color:#f2f2f2; width:72px" %)Sensor Model|(% style="background-color:#f2f2f2" %)Firmware Version|(% style="background-color:#f2f2f2; width:91px" %)Frequency Band|(% style="background-color:#f2f2f2; width:86px" %)Sub-band|(% style="background-color:#f2f2f2; width:44px" %)BAT | ||
661 | |||
662 | Example parse in TTNv3 | ||
663 | |||
664 | [[image:1675215946738-635.png||_mstalt="297778"]] | ||
665 | |||
666 | |||
667 | (% style="color:#037691" %)**Sensor Model**(%%): For SDI-12-LB/LS, this value is 0x17 | ||
668 | |||
669 | (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version | ||
670 | |||
671 | (% style="color:#037691" %)**Frequency Band**: | ||
672 | |||
673 | 0x01: EU868 | ||
674 | |||
675 | 0x02: US915 | ||
676 | |||
677 | 0x03: IN865 | ||
678 | |||
679 | 0x04: AU915 | ||
680 | |||
681 | 0x05: KZ865 | ||
682 | |||
683 | 0x06: RU864 | ||
684 | |||
685 | 0x07: AS923 | ||
686 | |||
687 | 0x08: AS923-1 | ||
688 | |||
689 | 0x09: AS923-2 | ||
690 | |||
691 | 0x0a: AS923-3 | ||
692 | |||
693 | 0x0b: CN470 | ||
694 | |||
695 | 0x0c: EU433 | ||
696 | |||
697 | 0x0d: KR920 | ||
698 | |||
699 | 0x0e: MA869 | ||
700 | |||
701 | |||
702 | (% style="color:#037691" %)**Sub-Band**: | ||
703 | |||
704 | AU915 and US915:value 0x00 ~~ 0x08 | ||
705 | |||
706 | CN470: value 0x0B ~~ 0x0C | ||
707 | |||
708 | Other Bands: Always 0x00 | ||
709 | |||
710 | |||
711 | (% style="color:#037691" %)**Battery Info**: | ||
712 | |||
713 | Check the battery voltage. | ||
714 | |||
715 | Ex1: 0x0B45 = 2885mV | ||
716 | |||
717 | Ex2: 0x0B49 = 2889mV | ||
718 | |||
719 | |||
720 | === 2.4.2 Uplink Payload, FPORT~=2 === | ||
721 | |||
722 | |||
723 | There are different cases for uplink. See below | ||
724 | |||
725 | * SDI-12 Debug Command return: FPORT=100 | ||
726 | |||
727 | * Periodically Uplink: FPORT=2 | ||
728 | |||
729 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:500px" %) | ||
730 | |=(% style="width: 90px;background-color:#4F81BD;color:white" %)((( | ||
731 | **Size(bytes)** | ||
732 | )))|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 90px;background-color:#4F81BD;color:white" %)**1**|=(% style="width: 240px;background-color:#4F81BD;color:white" %)**Length depends on the return from the commands** | ||
733 | |(% style="width:93px" %)Value|(% style="width:83px" %)((( | ||
734 | Battery(mV) | ||
735 | & | ||
736 | Interrupt_Flag | ||
737 | )))|(% style="width:91px" %)[[PAYLOAD_VER>>||anchor="H3.6Setthepayloadversion"]]|(% style="width:212px" %)((( | ||
738 | If the valid payload is too long and exceed the maximum support. | ||
739 | Payload length in server,server will show payload not provided in the LoRaWAN server. | ||
740 | ))) | ||
741 | |||
742 | [[image:1675216282284-923.png||_mstalt="295633"]] | ||
743 | |||
744 | |||
745 | === 2.4.3 Battery Info === | ||
746 | |||
747 | |||
748 | Check the battery voltage for SDI-12-LB/LS. | ||
749 | |||
750 | Ex1: 0x0B45 = 2885mV | ||
751 | |||
752 | Ex2: 0x0B49 = 2889mV | ||
753 | |||
754 | |||
755 | === 2.4.4 Interrupt Pin === | ||
756 | |||
757 | |||
758 | This data field shows if this packet is generated by (% style="color:#037691" %)**Interrupt Pin**(%%) or not. [[Click here>>||anchor="H3.2SetInterruptMode"]] for the hardware and software set up. Note: The Internet Pin is a separate pin in the screw terminal. See [[pin mapping>>||anchor="H1.7PinMapping"]]. | ||
759 | |||
760 | **Example:** | ||
761 | |||
762 | Ex1: 0x0B45:0x0B&0x80= 0x00 Normal uplink packet. | ||
763 | |||
764 | Ex2: 0x8B49:0x8B&0x80= 0x80 Interrupt Uplink Packet. | ||
765 | |||
766 | |||
767 | === 2.4.5 Payload version === | ||
768 | |||
769 | |||
770 | The version number of the payload, mainly used for decoding. The default is 01. | ||
771 | |||
772 | |||
773 | === 2.4.6 Decode payload in The Things Network === | ||
774 | |||
775 | |||
776 | While using TTN network, you can add the payload format to decode the payload. | ||
777 | |||
778 | [[image:1675216779406-595.png||_mstalt="298376"]] | ||
779 | |||
780 | |||
781 | There is no fix payload decoder in LoRaWAN server because the SDI-12 sensors returns are different. User need to write the decoder themselves for their case. | ||
782 | |||
783 | SDI-12-LB/LS TTN Payload Decoder: [[https:~~/~~/github.com/dragino/dragino-end-node-decoder>>url:https://github.com/dragino/dragino-end-node-decoder]] | ||
784 | |||
785 | |||
786 | == 2.5 Uplink Interval == | ||
787 | |||
788 | |||
789 | The SDI-12-LB/LS by default uplink the sensor data every 20 minutes. User can change this interval by AT Command or LoRaWAN Downlink Command. See this link: | ||
790 | |||
791 | [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/#H4.1ChangeUplinkInterval>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/#H4.1ChangeUplinkInterval]] | ||
792 | |||
793 | |||
794 | == 2.6 Examples To Set SDI commands == | ||
795 | |||
796 | === 2.6.1 Examples 1 ~-~- General Example === | ||
797 | |||
798 | |||
799 | COM port and SDI-12 sensor communication converted to SDI-12-LB/LS and SDI-12 sensor communication. | ||
800 | |||
801 | [[image:image-20230222143809-1.png||_mstalt="429962" height="564" width="729"]] | ||
802 | |||
803 | |||
804 | (% style="color:blue" %)**1) The AT+COMMANDx command is applied to the red arrow part, and sends the SDI12 command to the SDI12 sensor:** | ||
805 | |||
806 | a. Send the first command and get the first reply: | ||
807 | |||
808 | (% style="color:#037691" %)**AT+COMMANDx=1I!,0,0,1** | ||
809 | |||
810 | b. Send the second command and get the second reply: | ||
811 | |||
812 | (% style="color:#037691" %)**AT+COMMANDx=2I!,0,0,1** | ||
813 | |||
814 | c. Send the third command and get the third reply: | ||
815 | |||
816 | (% style="color:#037691" %)**AT+COMMANDx=3I!,0,0,1** | ||
817 | |||
818 | d. Send the fourth command and get the fourth reply: | ||
819 | |||
820 | (% style="color:#037691" %)**AT+COMMANDx=4I!,0,0,1** | ||
821 | |||
822 | e. Send the fifth command plus the sixth command, get the sixth reply: | ||
823 | |||
824 | (% style="color:#037691" %)**AT+COMMANDx=1M!,2,1,1** | ||
825 | |||
826 | f. Send the seventh command plus the eighth command, get the eighth reply: | ||
827 | |||
828 | (% style="color:#037691" %)**AT+COMMANDx=2M!,2,1,1** | ||
829 | |||
830 | g. Send the ninth command plus the tenth command, get the tenth reply: | ||
831 | |||
832 | (% style="color:#037691" %)**AT+COMMANDx=3M!,1,1,1** | ||
833 | |||
834 | h. Send the eleventh command plus the twelfth command, get the twelfth reply: | ||
835 | |||
836 | (% style="color:#037691" %)**AT+COMMANDx=4M!,1,1,1** | ||
837 | |||
838 | |||
839 | (% style="color:blue" %)**2) The AT+DATACUTx command is applied to the green arrow part, receiving and cut out data from the SDI12 sensor:** | ||
840 | |||
841 | a. The first reply, all 34 characters: ”113TRUEBNERSMT100038220303182331<CR><LF>” | ||
842 | |||
843 | Cut out all characters: (% _mstmutation="1" style="color:#037691" %)**AT+ALLDATAMOD=1 or AT+DATACUTx=34,2,1~~34**(% style="color:#037691" %); | ||
844 | |||
845 | b. The sixth reply, all 31 characters: "1+19210+1.04+0.00+22.49+11.75<CR><LF>" | ||
846 | |||
847 | Cut out all characters: (% _mstmutation="1" style="color:#037691" %)**AT+ALLDATAMOD=1 or AT+DATACUTx=31,2,1~~31**(% style="color:#037691" %); | ||
848 | |||
849 | c. The eighth reply, all 31 characters: "2+18990+1.08+0.00+22.24+11.80<CR><LF>" | ||
850 | |||
851 | Cut out all characters: (% _mstmutation="1" style="color:#037691" %)**AT+ALLDATAMOD=1 or AT+DATACUTx=31,2,1~~31**(% style="color:#037691" %); | ||
852 | |||
853 | d. The tenth reply, all 15 characters: "3-2919.8+24.0<CR><LF>" | ||
854 | |||
855 | Cut out all characters: (% _mstmutation="1" style="color:#037691" %)**AT+ALLDATAMOD=1 or AT+DATACUTx=15,2,1~~15**(% style="color:#037691" %); | ||
856 | |||
857 | e. The twelfth reply, all 25 characters: "4+30.8+22.84+4.7+954.38<CR><LF>" | ||
858 | |||
859 | Partial cut, the cut sensor address and the first two parameters:(% style="color:#037691" %)**AT+DATACUTx=25,2,1~~12, cut out the character field "4+30.8+22.84"**. | ||
860 | |||
861 | |||
862 | === 2.6.2 Example 2 ~-~- Connect to Hygrovue10 === | ||
863 | |||
864 | ==== 2.6.2.1 Reference Manual and Command ==== | ||
865 | |||
866 | |||
867 | * [[Hygrovue10 Product Page>>https://www.campbellsci.com/hygrovue10]] | ||
868 | |||
869 | * Commands to be used in PC and output. | ||
870 | |||
871 | ~1. check device address | ||
872 | |||
873 | 2. change device address | ||
874 | |||
875 | 3. check device ID | ||
876 | |||
877 | 4. start measure | ||
878 | |||
879 | 5. Get Meausre result | ||
880 | |||
881 | [[image:image-20230603120209-2.png||height="281" width="267"]] | ||
882 | |||
883 | |||
884 | ==== 2.6.2.2 Hardware Connection to SDI-12-LB/LS ==== | ||
885 | |||
886 | |||
887 | [[image:image-20230603120515-3.png]] | ||
888 | |||
889 | |||
890 | ==== 2.6.2.3 Commands set in SDI-12-LB/LS and uplink payload ==== | ||
891 | |||
892 | |||
893 | [[image:image-20230603120648-4.png]] | ||
894 | |||
895 | [[image:image-20230603120726-5.png]] | ||
896 | |||
897 | |||
898 | **Data in TTN:** | ||
899 | |||
900 | [[image:image-20230603120859-6.png||height="118" width="1285"]] | ||
901 | |||
902 | |||
903 | === 2.6.3 Example 3 ~-~- Connect to SIL-400 === | ||
904 | |||
905 | ==== 2.6.3.1 Reference Manual and Command ==== | ||
906 | |||
907 | |||
908 | * [[SIL-400 Product Page>>https://www.apogeeinstruments.com/sil-411-commercial-grade-sdi-12-digital-output-standard-field-of-view-infrared-radiometer-sensor/]] | ||
909 | |||
910 | * Commands to be used in PC and output. | ||
911 | |||
912 | ~1. check device address | ||
913 | |||
914 | 2. change device address | ||
915 | |||
916 | 3. check device ID | ||
917 | |||
918 | 4. start measure | ||
919 | |||
920 | 5. Get Meausre result | ||
921 | |||
922 | [[image:image-20230603121606-7.png||height="242" width="307"]] | ||
923 | |||
924 | |||
925 | ==== 2.6.3.2 Hardware Connection to SDI-12-LB/LS ==== | ||
926 | |||
927 | |||
928 | [[image:image-20230603121643-8.png||height="442" width="656"]] | ||
929 | |||
930 | |||
931 | ==== 2.6.3.3 Commands set in SDI-12-LB/LS and uplink payload ==== | ||
932 | |||
933 | |||
934 | [[image:image-20230603121721-9.png]] | ||
935 | |||
936 | [[image:image-20230628090323-1.png||height="414" width="694"]] | ||
937 | |||
938 | Data in TTN: | ||
939 | |||
940 | [[image:image-20230603121826-11.png||height="155" width="1104"]] | ||
941 | |||
942 | |||
943 | === 2.6.4 Example 4 ~-~- Connect to TEROS-12 === | ||
944 | |||
945 | ==== 2.6.4.1 Reference Manual and Command ==== | ||
946 | |||
947 | |||
948 | * [[TEROS-12 Product Page>>https://www.metergroup.com/en/meter-environment/products/teros-12-soil-moisture-sensor]] | ||
949 | |||
950 | * Commands to be used in PC and output. | ||
951 | |||
952 | 1.check device address | ||
953 | |||
954 | 2.change device address | ||
955 | |||
956 | 3.check device ID | ||
957 | |||
958 | 4.start measure | ||
959 | |||
960 | 5.Get Meausre result | ||
961 | |||
962 | [[image:image-20230603122248-16.png||height="196" width="198"]] | ||
963 | |||
964 | |||
965 | ==== 2.6.4.2 Hardware Connection to SDI-12-LB/LS ==== | ||
966 | |||
967 | |||
968 | [[image:image-20230603122212-15.png||height="502" width="667"]] | ||
969 | |||
970 | |||
971 | ==== 2.6.4.3 Commands set in SDI-12-LB/LS and uplink payload ==== | ||
972 | |||
973 | |||
974 | [[image:image-20230603122040-12.png]] | ||
975 | |||
976 | [[image:image-20230603122109-13.png||height="469" width="762"]] | ||
977 | |||
978 | |||
979 | **Data in TTN:** | ||
980 | |||
981 | [[image:image-20230603122139-14.png||height="148" width="1128"]] | ||
982 | |||
983 | |||
984 | === 2.6.5 Example 5 ~-~- Connect to SIL-400/TEROS-12 & Hygrovue10 === | ||
985 | |||
986 | ==== 2.6.5.1 Important Notice! ==== | ||
987 | |||
988 | |||
989 | * The product page and reference command see above example 2,3,4 | ||
990 | |||
991 | * All of these SDI-12 sensors use the same address (address 0) by default. So we need to change their address to different address, by using **aAb!** command. See above example. | ||
992 | |||
993 | * The sensor needs to be powered to a steady statue. So the 12VT time need to be set to the maximum stable time for the sensors. in this example, it is 13 seconds. | ||
994 | |||
995 | * If these SDI-12 sensors are powered by external power source. It will add 300uA in the total current in SDI-12-LB/LS. | ||
996 | |||
997 | ==== 2.6.5.2 Hardware Connection to SDI-12-LB/LS ==== | ||
998 | |||
999 | |||
1000 | [[image:image-20230603122508-17.png||height="526" width="742"]] | ||
1001 | |||
1002 | |||
1003 | ==== 2.6.5.3 Commands set in SDI-12-LB/LS and uplink payload ==== | ||
1004 | |||
1005 | |||
1006 | [[image:image-20230603122549-18.png]] | ||
1007 | |||
1008 | [[image:image-20230603122623-19.png||height="483" width="1121"]] | ||
1009 | |||
1010 | |||
1011 | **Data in TTN:** | ||
1012 | |||
1013 | [[image:image-20230603122719-20.png||height="151" width="1179"]] | ||
1014 | |||
1015 | |||
1016 | === 2.6.6 Example 6 ~-~- Connect to ENTELECHY-EP_SDI-12 === | ||
1017 | |||
1018 | ==== 2.6.6.1 Reference Manual and Command ==== | ||
1019 | |||
1020 | |||
1021 | * [[https:~~/~~/enviroprosoilprobes.com/wp-content/uploads/2019/11/ENTELECHY-EP_SDI-12-Commands.pdf>>url:https://enviroprosoilprobes.com/wp-content/uploads/2019/11/ENTELECHY-EP_SDI-12-Commands.pdf]] | ||
1022 | |||
1023 | * Commands to be used in PC and output. | ||
1024 | |||
1025 | 1.check device address | ||
1026 | |||
1027 | 2.change device address | ||
1028 | |||
1029 | 3.check device ID | ||
1030 | |||
1031 | 4.start measure | ||
1032 | |||
1033 | 5.Get Meausre result | ||
1034 | |||
1035 | |||
1036 | [[image:image-20230627174559-3.png]] | ||
1037 | |||
1038 | |||
1039 | ==== 2.6.6.2 Hardware Connection to SDI-12-LB/LS ==== | ||
1040 | |||
1041 | |||
1042 | [[image:image-20230627174446-2.png]] | ||
1043 | |||
1044 | |||
1045 | ==== 2.6.6.3 Commands set in SDI-12-LB/LS and uplink payload ==== | ||
1046 | |||
1047 | |||
1048 | [[image:image-20230627175513-4.png||height="596" width="576"]] | ||
1049 | |||
1050 | [[image:image-20230627175736-5.png||height="429" width="693"]] | ||
1051 | |||
1052 | |||
1053 | **Data in TTN:** | ||
1054 | |||
1055 | [[image:image-20230627180303-6.png||height="292" width="1171"]] | ||
1056 | |||
1057 | |||
1058 | === 2.6.7 Example 7 ~-~- Connect to GroPoint Profile-8 (SDI-12 Version) === | ||
1059 | |||
1060 | ==== 2.6.7.1 Reference Manual and Command ==== | ||
1061 | |||
1062 | |||
1063 | * [[https:~~/~~/static1.squarespace.com/static/5db0b690c4990258f8f6d042/t/64189e1ab3ebc54e6947b0c0/1679334941034/2625-N-T+GroPoint+Profile+User+Manual-V1.1.3.pdf>>https://static1.squarespace.com/static/5db0b690c4990258f8f6d042/t/64189e1ab3ebc54e6947b0c0/1679334941034/2625-N-T+GroPoint+Profile+User+Manual-V1.1.3.pdf]] | ||
1064 | |||
1065 | * Commands to be used in PC and output. | ||
1066 | |||
1067 | 1. check device address | ||
1068 | 1. change device address | ||
1069 | 1. check device ID | ||
1070 | 1. start measure | ||
1071 | 1. Get Meausre result | ||
1072 | |||
1073 | [[image:image-20240423143921-1.png]] | ||
1074 | |||
1075 | |||
1076 | ==== 2.6.7.2 Hardware Connection to SDI-12-LB/LS ==== | ||
1077 | |||
1078 | |||
1079 | (% style="color:red" %)**Note: When the bytes returned by the sensor are not fixed, the full byte interception can be used: AT+ALLDATAMOD=1 (The DATACUTx parameter needs to be cleared when using this directive, or it will not work.)** | ||
1080 | |||
1081 | [[image:image-20240423145522-2.png||height="345" width="400"]] | ||
1082 | |||
1083 | |||
1084 | ==== 2.6.7.3 Commands set in SDI-12-LB/LS and uplink payload ==== | ||
1085 | |||
1086 | [[image:image-20240423151202-3.png]] | ||
1087 | |||
1088 | (% class="wikigeneratedid" id="H" %) | ||
1089 | [[image:image-20240423162851-6.png||height="251" width="935"]] | ||
1090 | |||
1091 | |||
1092 | DATA in TTN: | ||
1093 | |||
1094 | [[image:image-20240423162322-4.png||height="269" width="933"]] | ||
1095 | |||
1096 | |||
1097 | === 2.6.8 Example 8 ~-~- Connect to Acclima TDR Soil Moisture Sensor === | ||
1098 | |||
1099 | ==== 2.6.8.1 Reference Manual and Command ==== | ||
1100 | |||
1101 | |||
1102 | * [[Acclima TDR Soil Moisture Sensor User Manual>>url:https://acclima.com/tdr-soil-moisture-sensor-user-manual/]] | ||
1103 | |||
1104 | * Commands to be used in PC and output. | ||
1105 | |||
1106 | 1. check device address | ||
1107 | 1. change device address | ||
1108 | 1. check device ID | ||
1109 | 1. start measure | ||
1110 | 1. Get Meausre result | ||
1111 | |||
1112 | [[image:image-20240903152650-3.png]] | ||
1113 | |||
1114 | [[image:image-20240903152627-2.png]] | ||
1115 | |||
1116 | |||
1117 | ==== 2.6.8.2 Hardware Connection to SDI-12-LB/LS ==== | ||
1118 | |||
1119 | |||
1120 | (% style="color:red" %)**Note: When the bytes returned by the sensor are not fixed, the full byte interception can be used: AT+ALLDATAMOD=1 (The DATACUTx parameter needs to be cleared when using this directive, or it will not work.)** | ||
1121 | |||
1122 | [[image:image-20240903153004-5.png||height="358" width="660"]] | ||
1123 | |||
1124 | |||
1125 | ==== 2.6.8.3 Commands set in SDI-12-LB/LS and uplink payload ==== | ||
1126 | |||
1127 | |||
1128 | [[image:image-20240903153258-6.png]] | ||
1129 | |||
1130 | [[image:image-20240903153627-7.png]] | ||
1131 | |||
1132 | DATA in TTN: | ||
1133 | |||
1134 | [[image:image-20240903154020-10.png||height="467" width="961"]] | ||
1135 | |||
1136 | |||
1137 | == 2.7 Frequency Plans == | ||
1138 | |||
1139 | |||
1140 | The SDI-12-LB/LS uses OTAA mode and below frequency plans by default. Each frequency band use different firmware, user update the firmware to the corresponding band for their country. | ||
1141 | |||
1142 | [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/>>url:http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/]] | ||
1143 | |||
1144 | |||
1145 | == 2.8 Firmware Change Log == | ||
1146 | |||
1147 | |||
1148 | **Firmware download link:** | ||
1149 | |||
1150 | [[https:~~/~~/www.dropbox.com/sh/qrbgbikb109lkiv/AACBR-v_ZhZAMengcY7Nsa1ja?dl=0>>https://www.dropbox.com/sh/qrbgbikb109lkiv/AACBR-v_ZhZAMengcY7Nsa1ja?dl=0]] | ||
1151 | |||
1152 | |||
1153 | = 3. Configure SDI-12-LB/LS via AT Command or LoRaWAN Downlink = | ||
1154 | |||
1155 | |||
1156 | Use can configure SDI-12-LB/LS via AT Command or LoRaWAN Downlink. | ||
1157 | |||
1158 | * AT Command Connection: See [[FAQ>>||anchor="H7.FAQ"]]. | ||
1159 | * LoRaWAN Downlink instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section. | ||
1160 | |||
1161 | There are two kinds of commands to configure SDI-12-LB/LS, they are: | ||
1162 | |||
1163 | * (% style="color:blue" %)**General Commands**. | ||
1164 | |||
1165 | These commands are to configure: | ||
1166 | |||
1167 | * General system settings like: uplink interval. | ||
1168 | * LoRaWAN protocol & radio related command. | ||
1169 | |||
1170 | They are same for all Dragino Device which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki: | ||
1171 | |||
1172 | [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/]] | ||
1173 | |||
1174 | |||
1175 | * (% style="color:blue" %)**Commands special design for SDI-12-LB/LS** | ||
1176 | |||
1177 | These commands only valid for SDI-12-LB/LS, as below: | ||
1178 | |||
1179 | |||
1180 | == 3.1 Set Transmit Interval Time == | ||
1181 | |||
1182 | |||
1183 | Feature: Change LoRaWAN End Node Transmit Interval. | ||
1184 | |||
1185 | (% style="color:blue" %)**AT Command: AT+TDC** | ||
1186 | |||
1187 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %) | ||
1188 | |=(% style="width: 160px; background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 160px; background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 190px;background-color:#4F81BD;color:white" %)**Response** | ||
1189 | |(% style="background-color:#f2f2f2; width:157px" %)AT+TDC=?|(% style="background-color:#f2f2f2; width:166px" %)Show current transmit Interval|(% style="background-color:#f2f2f2" %)((( | ||
1190 | 30000 | ||
1191 | OK | ||
1192 | the interval is 30000ms = 30s | ||
1193 | ))) | ||
1194 | |(% style="background-color:#f2f2f2; width:157px" %)AT+TDC=60000|(% style="background-color:#f2f2f2; width:166px" %)Set Transmit Interval|(% style="background-color:#f2f2f2" %)((( | ||
1195 | OK | ||
1196 | Set transmit interval to 60000ms = 60 seconds | ||
1197 | ))) | ||
1198 | |||
1199 | (% style="color:blue" %)**Downlink Command: 0x01** | ||
1200 | |||
1201 | Format: Command Code (0x01) followed by 3 bytes time value. | ||
1202 | |||
1203 | If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01. | ||
1204 | |||
1205 | * Example 1: Downlink Payload: 0100001E ~/~/ Set Transmit Interval (TDC) = 30 seconds | ||
1206 | * Example 2: Downlink Payload: 0100003C ~/~/ Set Transmit Interval (TDC) = 60 seconds | ||
1207 | |||
1208 | == 3.2 Set Interrupt Mode == | ||
1209 | |||
1210 | |||
1211 | Feature, Set Interrupt mode for GPIO_EXIT. | ||
1212 | |||
1213 | (% style="color:blue" %)**AT Command: AT+INTMOD** | ||
1214 | |||
1215 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %) | ||
1216 | |=(% style="width: 154px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 196px;background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 160px;background-color:#4F81BD;color:white" %)**Response** | ||
1217 | |(% style="background-color:#f2f2f2; width:154px" %)AT+INTMOD=?|(% style="background-color:#f2f2f2; width:196px" %)Show current interrupt mode|(% style="background-color:#f2f2f2; width:157px" %)((( | ||
1218 | 0 | ||
1219 | OK | ||
1220 | the mode is 0 =Disable Interrupt | ||
1221 | ))) | ||
1222 | |(% style="background-color:#f2f2f2; width:154px" %)AT+INTMOD=2|(% style="background-color:#f2f2f2; width:196px" %)((( | ||
1223 | Set Transmit Interval | ||
1224 | 0. (Disable Interrupt), | ||
1225 | ~1. (Trigger by rising and falling edge) | ||
1226 | 2. (Trigger by falling edge) | ||
1227 | 3. (Trigger by rising edge) | ||
1228 | )))|(% style="background-color:#f2f2f2; width:157px" %)OK | ||
1229 | |||
1230 | (% style="color:blue" %)**Downlink Command: 0x06** | ||
1231 | |||
1232 | Format: Command Code (0x06) followed by 3 bytes. | ||
1233 | |||
1234 | This means that the interrupt mode of the end node is set to 0x000003=3 (rising edge trigger), and the type code is 06. | ||
1235 | |||
1236 | * Example 1: Downlink Payload: 06000000 ~/~/ Turn off interrupt mode | ||
1237 | * Example 2: Downlink Payload: 06000003 ~/~/ Set the interrupt mode to rising edge trigger | ||
1238 | |||
1239 | == 3.3 Set the output time == | ||
1240 | |||
1241 | |||
1242 | Feature, Control the output 3V3 , 5V or 12V. | ||
1243 | |||
1244 | (% style="color:blue" %)**AT Command: AT+3V3T** | ||
1245 | |||
1246 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:474px" %) | ||
1247 | |=(% style="width: 154px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 201px;background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 120px;background-color:#4F81BD;color:white" %)**Response** | ||
1248 | |(% style="background-color:#f2f2f2; width:154px" %)AT+3V3T=?|(% style="background-color:#f2f2f2; width:201px" %)Show 3V3 open time.|(% style="background-color:#f2f2f2; width:116px" %)((( | ||
1249 | 0 | ||
1250 | OK | ||
1251 | ))) | ||
1252 | |(% style="background-color:#f2f2f2; width:154px" %)AT+3V3T=0|(% style="background-color:#f2f2f2; width:201px" %)Normally open 3V3 power supply.|(% style="background-color:#f2f2f2; width:116px" %)((( | ||
1253 | OK | ||
1254 | default setting | ||
1255 | ))) | ||
1256 | |(% style="background-color:#f2f2f2; width:154px" %)AT+3V3T=1000|(% style="background-color:#f2f2f2; width:201px" %)Close after a delay of 1000 milliseconds.|(% style="background-color:#f2f2f2; width:116px" %)((( | ||
1257 | OK | ||
1258 | ))) | ||
1259 | |(% style="background-color:#f2f2f2; width:154px" %)AT+3V3T=65535|(% style="background-color:#f2f2f2; width:201px" %)Normally closed 3V3 power supply.|(% style="background-color:#f2f2f2; width:116px" %)((( | ||
1260 | OK | ||
1261 | ))) | ||
1262 | |||
1263 | (% style="color:blue" %)**AT Command: AT+5VT** | ||
1264 | |||
1265 | (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:470px" %) | ||
1266 | |=(% style="width: 155px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 196px;background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 119px;background-color:#4F81BD;color:white" %)**Response** | ||
1267 | |(% style="background-color:#f2f2f2; width:155px" %)AT+5VT=?|(% style="background-color:#f2f2f2; width:196px" %)Show 5V open time.|(% style="background-color:#f2f2f2; width:114px" %)((( | ||
1268 | 0 | ||
1269 | OK | ||
1270 | ))) | ||
1271 | |(% style="background-color:#f2f2f2; width:155px" %)AT+5VT=0|(% style="background-color:#f2f2f2; width:196px" %)Normally closed 5V power supply.|(% style="background-color:#f2f2f2; width:114px" %)((( | ||
1272 | OK | ||
1273 | default setting | ||
1274 | ))) | ||
1275 | |(% style="background-color:#f2f2f2; width:155px" %)AT+5VT=1000|(% style="background-color:#f2f2f2; width:196px" %)Close after a delay of 1000 milliseconds.|(% style="background-color:#f2f2f2; width:114px" %)((( | ||
1276 | OK | ||
1277 | ))) | ||
1278 | |(% style="background-color:#f2f2f2; width:155px" %)AT+5VT=65535|(% style="background-color:#f2f2f2; width:196px" %)Normally open 5V power supply.|(% style="background-color:#f2f2f2; width:114px" %)((( | ||
1279 | OK | ||
1280 | ))) | ||
1281 | |||
1282 | (% style="color:blue" %)**AT Command: AT+12VT ** | ||
1283 | |||
1284 | (% style="color:blue" %)**(The v1.2 version is enabled for 1 second by default, and the version below v1.2 is disabled by default)** | ||
1285 | |||
1286 | (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:443px" %) | ||
1287 | |=(% style="width: 156px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 199px;background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 89px;background-color:#4F81BD;color:white" %)**Response** | ||
1288 | |(% style="background-color:#f2f2f2; width:156px" %)AT+12VT=?|(% style="background-color:#f2f2f2; width:199px" %)Show 12V open time.|(% style="background-color:#f2f2f2; width:83px" %)((( | ||
1289 | 0 | ||
1290 | OK | ||
1291 | ))) | ||
1292 | |(% style="background-color:#f2f2f2; width:156px" %)AT+12VT=0|(% style="background-color:#f2f2f2; width:199px" %)Normally closed 12V power supply.|(% style="background-color:#f2f2f2; width:83px" %)OK | ||
1293 | |(% style="background-color:#f2f2f2; width:156px" %)AT+12VT=500|(% style="background-color:#f2f2f2; width:199px" %)Close after a delay of 500 milliseconds.|(% style="background-color:#f2f2f2; width:83px" %)((( | ||
1294 | OK | ||
1295 | ))) | ||
1296 | |||
1297 | (% style="color:blue" %)**Downlink Command: 0x07** | ||
1298 | |||
1299 | Format: Command Code (0x07) followed by 3 bytes. | ||
1300 | |||
1301 | The first byte is which power, the second and third bytes are the time to turn on. | ||
1302 | |||
1303 | * Example 1: Downlink Payload: 070101F4 **~-~-->** AT+3V3T=500 | ||
1304 | * Example 2: Downlink Payload: 0701FFFF **~-~-->** AT+3V3T=65535 | ||
1305 | * Example 3: Downlink Payload: 070203E8 **~-~-->** AT+5VT=1000 | ||
1306 | * Example 4: Downlink Payload: 07020000 **~-~-->** AT+5VT=0 | ||
1307 | * Example 5: Downlink Payload: 070301F4 **~-~-->** AT+12VT=500 | ||
1308 | * Example 6: Downlink Payload: 07030000 **~-~-->** AT+12VT=0 | ||
1309 | |||
1310 | == 3.4 Set the all data mode == | ||
1311 | |||
1312 | |||
1313 | Feature, Set the all data mode. | ||
1314 | |||
1315 | (% style="color:blue" %)**AT Command: AT+ALLDATAMOD** | ||
1316 | |||
1317 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:437px" %) | ||
1318 | |=(% style="background-color:#4F81BD;color:white" %)**Command Example**|=(% style="background-color:#4F81BD;color:white" %)**Function**|=(% style="background-color:#4F81BD;color:white" %)**Response** | ||
1319 | |(% style="background-color:#f2f2f2" %)AT+ALLDATAMOD=?|(% style="background-color:#f2f2f2" %)Show current all data mode|(% style="background-color:#f2f2f2" %)((( | ||
1320 | 0 | ||
1321 | OK | ||
1322 | ))) | ||
1323 | |(% style="background-color:#f2f2f2" %)AT+ALLDATAMOD=1|(% style="background-color:#f2f2f2" %)Set all data mode is 1.|(% style="background-color:#f2f2f2" %)OK | ||
1324 | |||
1325 | (% style="color:blue" %)**Downlink Command: 0xAB** | ||
1326 | |||
1327 | Format: Command Code (0xAB) followed by 1 bytes. | ||
1328 | |||
1329 | * Example 1: Downlink Payload: AB 00 ~/~/ AT+ALLDATAMOD=0 | ||
1330 | * Example 2: Downlink Payload: AB 01 ~/~/ AT+ALLDATAMOD=1 | ||
1331 | |||
1332 | == 3.5 Set the splicing payload for uplink == | ||
1333 | |||
1334 | |||
1335 | Feature, splicing payload for uplink. | ||
1336 | |||
1337 | (% style="color:blue" %)**AT Command: AT+DATAUP** | ||
1338 | |||
1339 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %) | ||
1340 | |=(% style="width: 154px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 266px;background-color:#4F81BD;color:white" %)**Function**|=(% style="background-color:#4F81BD;color:white" %)**Response** | ||
1341 | |(% style="background-color:#f2f2f2; width:154px" %)AT+DATAUP =?|(% style="background-color:#f2f2f2; width:266px" %)Show current splicing payload for uplink mode|(% style="background-color:#f2f2f2" %)((( | ||
1342 | 0 | ||
1343 | OK | ||
1344 | ))) | ||
1345 | |(% style="background-color:#f2f2f2; width:154px" %)AT+DATAUP =0|(% style="background-color:#f2f2f2; width:266px" %)((( | ||
1346 | Set splicing payload for uplink mode is 0. | ||
1347 | )))|(% style="background-color:#f2f2f2" %)((( | ||
1348 | OK | ||
1349 | ))) | ||
1350 | |(% style="background-color:#f2f2f2; width:154px" %)AT+DATAUP =1|(% style="background-color:#f2f2f2; width:266px" %)Set splicing payload for uplink mode is 1 , and the each splice uplink is sent sequentially.|(% style="background-color:#f2f2f2" %)OK | ||
1351 | |(% style="background-color:#f2f2f2; width:154px" %)AT+DATAUP =1,20000|(% style="background-color:#f2f2f2; width:266px" %)((( | ||
1352 | Set splicing payload for uplink mode is 1, and the uplink interval of each splice to 20000 milliseconds. | ||
1353 | )))|(% style="background-color:#f2f2f2" %)OK | ||
1354 | |||
1355 | (% style="color:blue" %)**Downlink Command: 0xAD** | ||
1356 | |||
1357 | Format: Command Code (0xAD) followed by 1 bytes or 5 bytes. | ||
1358 | |||
1359 | * Example 1: Downlink Payload: AD 00 ~/~/ AT+DATAUP=0 | ||
1360 | * Example 2: Downlink Payload: AD 01 ~/~/ AT+DATAUP =1 | ||
1361 | * Example 3: Downlink Payload: AD 01 00 00 14 ~/~/ AT+DATAUP =1,20000 | ||
1362 | |||
1363 | This means that the interval is set to 0x000014=20S | ||
1364 | |||
1365 | |||
1366 | == 3.6 Set the payload version == | ||
1367 | |||
1368 | |||
1369 | Feature, Set the payload version. | ||
1370 | |||
1371 | (% style="color:blue" %)**AT Command: AT+PAYVER** | ||
1372 | |||
1373 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:437px" %) | ||
1374 | |=(% style="width: 158px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 192px;background-color:#4F81BD;color:white" %)**Function**|=(% style="background-color:#4F81BD;color:white" %)**Response** | ||
1375 | |(% style="background-color:#f2f2f2; width:158px" %)AT+PAYVER=?|(% style="background-color:#f2f2f2; width:192px" %)Show current payload version|(% style="background-color:#f2f2f2" %)((( | ||
1376 | 1 | ||
1377 | OK | ||
1378 | ))) | ||
1379 | |(% style="background-color:#f2f2f2; width:158px" %)AT+PAYVER=5|(% style="background-color:#f2f2f2; width:192px" %)Set payload version is 5.|(% style="background-color:#f2f2f2" %)OK | ||
1380 | |||
1381 | (% style="color:blue" %)**Downlink Command: 0xAE** | ||
1382 | |||
1383 | Format: Command Code (0xAE) followed by 1 bytes. | ||
1384 | |||
1385 | * Example 1: Downlink Payload: AE 01 ~/~/ AT+PAYVER=1 | ||
1386 | * Example 2: Downlink Payload: AE 05 ~/~/ AT+PAYVER=5 | ||
1387 | |||
1388 | = 4. Battery & Power Consumption = | ||
1389 | |||
1390 | |||
1391 | SDI-12-LB use ER26500 + SPC1520 battery pack and SDI-12-LS use 3000mAh Recharable Battery with Solar Panel. See below link for detail information about the battery info and how to replace. | ||
1392 | |||
1393 | [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] . | ||
1394 | |||
1395 | |||
1396 | = 5. Remote Configure device = | ||
1397 | |||
1398 | == 5.1 Connect via BLE == | ||
1399 | |||
1400 | |||
1401 | Please see this instruction for how to configure via BLE: [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/BLE%20Bluetooth%20Remote%20Configure/>>url:http://wiki.dragino.com/xwiki/bin/view/Main/BLE%20Bluetooth%20Remote%20Configure/]] | ||
1402 | |||
1403 | |||
1404 | == 5.2 AT Command Set == | ||
1405 | |||
1406 | |||
1407 | |||
1408 | = 6. OTA firmware update = | ||
1409 | |||
1410 | |||
1411 | Please see this link for how to do OTA firmware update. | ||
1412 | |||
1413 | [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/]] | ||
1414 | |||
1415 | |||
1416 | = 7. FAQ = | ||
1417 | |||
1418 | == 7.1 How to use AT Command via UART to access device? == | ||
1419 | |||
1420 | |||
1421 | See: [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H1.LoRaSTv4baseHardware>>url:http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H1.LoRaSTv4baseHardware]] | ||
1422 | |||
1423 | |||
1424 | == 7.2 How to update firmware via UART port? == | ||
1425 | |||
1426 | |||
1427 | See: [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H1.LoRaSTv4baseHardware>>url:http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H1.LoRaSTv4baseHardware]] | ||
1428 | |||
1429 | |||
1430 | == 7.3 How to change the LoRa Frequency Bands/Region? == | ||
1431 | |||
1432 | |||
1433 | You can follow the instructions for [[how to upgrade image>>doc:Main.Firmware Upgrade Instruction for STM32 base products.WebHome]]. | ||
1434 | When downloading the images, choose the required image file for download. | ||
1435 | |||
1436 | |||
1437 | == 7.4 Why is the data uploaded to the LoRaWAN platform node empty and fProt~=0? == | ||
1438 | |||
1439 | |||
1440 | This is due to The length of bytes sent by the node is limited by the lorawan protocol, and the fixed DR needs to be adjusted to improve this problem. | ||
1441 | |||
1442 | Please refer to the following link for the number of bytes limited by different frequencies and different DRs in the lorawan protocol | ||
1443 | |||
1444 | [[lora-alliance.org/wp-content/uploads/2021/05/RP002-1.0.3-FINAL-1.pdf>>url:https://lora-alliance.org/wp-content/uploads/2021/05/RP002-1.0.3-FINAL-1.pdf]] | ||
1445 | |||
1446 | Example: | ||
1447 | |||
1448 | [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20240620145456-1.png?rev=1.1||alt="image-20240620145456-1.png"]] | ||
1449 | |||
1450 | Please refer to the following command to fix DR | ||
1451 | |||
1452 | AT+ADR=0 | ||
1453 | |||
1454 | AT+DR=3 | ||
1455 | |||
1456 | Downlink command: | ||
1457 | |||
1458 | [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/#H7.4DataRate>>url:http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/#H7.4DataRate]] | ||
1459 | |||
1460 | |||
1461 | = 8. Order Info = | ||
1462 | |||
1463 | |||
1464 | ((( | ||
1465 | **Part Number: (% style="color:blue" %)SDI-12-LB-XX-YY(%%) or (% style="color:blue" %)SDI-12-LS-XX-YY(%%)** | ||
1466 | ))) | ||
1467 | |||
1468 | ((( | ||
1469 | (% style="color:blue" %)**XX**(%%): The default frequency band | ||
1470 | ))) | ||
1471 | |||
1472 | ((( | ||
1473 | * (% style="color:red" %)**AS923**(%%): LoRaWAN AS923 band | ||
1474 | * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band | ||
1475 | * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band | ||
1476 | * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band | ||
1477 | * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band | ||
1478 | * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band | ||
1479 | * (% style="color:red" %)**IN865**(%%): LoRaWAN IN865 band | ||
1480 | * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band | ||
1481 | ))) | ||
1482 | |||
1483 | (% style="color:blue" %)**YY: **(%%)The grand connector hole size | ||
1484 | |||
1485 | * M12: M12 hole | ||
1486 | * M16: M16 hole | ||
1487 | |||
1488 | = 9. Packing Info = | ||
1489 | |||
1490 | |||
1491 | (% style="color:#037691" %)**Package Includes**: | ||
1492 | |||
1493 | * SDI-12-LB or SDI-12-LS SDI-12 to LoRaWAN Converter x 1 | ||
1494 | |||
1495 | (% style="color:#037691" %)**Dimension and weight**: | ||
1496 | |||
1497 | * Device Size: cm | ||
1498 | * Device Weight: g | ||
1499 | * Package Size / pcs : cm | ||
1500 | * Weight / pcs : g | ||
1501 | |||
1502 | = 10. Support = | ||
1503 | |||
1504 | |||
1505 | * Support is provided Monday to Friday, from 09:00 to 18:00 GMT+8. Due to different timezones we cannot offer live support. However, your questions will be answered as soon as possible in the before-mentioned schedule. | ||
1506 | |||
1507 | * Provide as much information as possible regarding your enquiry (product models, accurately describe your problem and steps to replicate it etc) and send a mail to [[support@dragino.com>>url:http://../../../../../../D:%5C%E5%B8%82%E5%9C%BA%E8%B5%84%E6%96%99%5C%E8%AF%B4%E6%98%8E%E4%B9%A6%5CLoRa%5CLT%E7%B3%BB%E5%88%97%5Csupport@dragino.com]] |