Version 135.1 by Xiaoling on 2025/04/16 15:13

Show last authors
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:image-20250416150535-1.jpeg]]
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:image-20250329133856-1.jpeg]]
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 [[image:image-20230201090528-5.png||_mstalt="430300" height="442" width="1056"]]
208
209
210 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.
211
212
213 (% style="color:blue" %)**Step 1**(%%): Create a device in TTN with the OTAA keys from SDI-12-LB/LS.
214
215 Each SDI-12-LB/LS is shipped with a sticker with the default device EUI as below:
216
217 [[image:image-20230426084456-1.png||height="241" width="519"]]
218
219
220 User can enter this key in their LoRaWAN Server portal. Below is TTN V3 screen shot:
221
222 * **Create the application.**
223
224 [[image:image-20250329133946-2.jpeg]]
225
226 [[image:image-20250329134001-3.jpeg]]
227
228
229
230 * **Add devices to the created Application.**
231
232 [[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"]]
233
234 [[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"]]
235
236
237 * **Enter end device specifics manually.**
238
239 [[image:image-20241118164859-1.png||height="561" width="642"]]
240
241 [[image:image-20241118165221-2.png||height="426" width="630"]]
242
243
244
245
246
247 (% style="color:blue" %)**Step 2: **(%%)Add decoder
248
249 While using TTN network, you can add the payload format to decode the payload.
250
251 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.
252
253 SDI-12-LB/LS TTN Payload Decoder: [[https:~~/~~/github.com/dragino/dragino-end-node-decoder>>url:https://github.com/dragino/dragino-end-node-decoder]]
254
255 Below is TTN screen shot:
256
257 [[image:image-20241118165746-3.png||height="470" width="869"]]
258
259 [[image:image-20241118165832-4.png||height="336" width="724"]]
260
261
262 (% style="color:blue" %)**Step 3**(%%): Activate on SDI-12-LB/LS
263
264 Press the button for 5 seconds to activate the SDI-12-LB/LS.
265
266 (% 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.
267
268 [[image:1675213704414-644.png||_mstalt="293748"]]
269
270
271 == ​2.3 SDI-12 Related Commands ==
272
273
274 User need to configure SDI-12-LB/LS to communicate with SDI-12 sensors otherwise the uplink payload will only include a few bytes.
275
276 If you use UART to connect a computer, refer to the following connection methods:
277
278 [[image:image-20240823165402-1.jpeg||height="488" width="678"]]
279
280 Screenshot example:
281
282 [[image:image-20240823165526-2.png||height="489" width="690"]]
283
284
285
286 === 2.3.1 Basic SDI-12 debug command ===
287
288
289 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.
290
291 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.
292
293 The following is the display information on the serial port and the server.
294
295
296 [[image:image-20230201091027-6.png||_mstalt="429065"]]
297
298
299 [[image:image-20230201091027-7.png||_mstalt="429429" height="261" width="1179"]]
300
301
302
303 ==== (% style="color:blue" %)**al!  ~-~- Get SDI-12 sensor Identification**(%%) ====
304
305
306 * AT Command: AT+ADDRI=aa
307 * LoRaWAN Downlink(prefix 0xAA00): AA 00 aa
308
309 (% style="color:#037691" %)**Parameter:  **(%%)aa: ASCII value of SDI-12 sensor address in downlink or HEX value in AT Command)
310
311 (% style="color:blue" %)**Example :   **(%%)AT+ADDRI=0 ( Equal to downlink: 0x AA 00 30)
312
313
314 The following is the display information on the serial port and the server.
315
316
317 [[image:image-20230201091257-8.png||_mstalt="431392"]]
318
319
320 [[image:image-20230201091257-9.png||_mstalt="431756" height="225" width="1242"]]
321
322
323 ==== (% style="color:blue" %)**aM!,aMC!, aM1!- aM9!, aMC1!- aMC9!**(%%) ====
324
325
326 (% style="color:red" %)**aM! **(%%): Start Non-Concurrent Measurement
327
328 (% style="color:red" %)**aMC! **(%%): Start Non-Concurrent Measurement – Request CRC
329
330 (% style="color:red" %)**aM1!- aM9! **(%%): Additional Measurements
331
332 (% style="color:red" %)**aMC1!- aMC9!**(%%) : Additional Measurements – Request CRC
333
334
335 * AT Command : AT+ADDRM=0,1,0,1
336
337 * LoRaWAN Downlink(prefix 0xAA01): 0xAA 01 30 01 00 01
338
339 Downlink:AA 01 aa bb cc dd
340
341 (% style="color:#037691" %)**aa**(%%): SDI-12 sensor address.
342
343 (% style="color:#037691" %)**bb**(%%): 0: no CRC, 1: request CRC
344
345 (% style="color:#037691" %)**cc**(%%): 1-9: Additional Measurement, 0: no additional measurement
346
347 (% style="color:#037691" %)**dd**(%%): delay (in second) to send (% style="color:#037691" %)__**aD0!**__(%%) to get return.
348
349
350 The following is the display information on the serial port and the server.
351
352
353 [[image:image-20230201091630-10.png||_mstalt="449995"]]
354
355
356 [[image:image-20230201091630-11.png||_mstalt="450372" height="247" width="1165"]]
357
358
359
360 ==== (% style="color:blue" %)**aC!, aCC!,  aC1!- aC9!,  aCC1!- aCC9! **(%%) ====
361
362
363 (% style="color:red" %)**aC!**(%%) : Start Concurrent Measurement
364
365 (% style="color:red" %)**aCC!** (%%): Start Concurrent Measurement – Request CRC
366
367 (% style="color:red" %)**aC1!- aC9!**(%%) : Start Additional Concurrent Measurements
368
369 (% style="color:red" %)**aCC1!- aCC9!**(%%) : Start Additional Concurrent Measurements – Request CRC
370
371
372 * AT Command : AT+ADDRC=0,1,0,1 
373
374 * LoRaWAN Downlink(0xAA02): 0xAA 02 30 01 00 01
375
376 Downlink: AA 02 aa bb cc dd
377
378 (% style="color:#037691" %)**aa**(%%): SDI-12 sensor address.
379
380 (% style="color:#037691" %)**bb**(%%): 0: no CRC, 1: request CRC
381
382 (% style="color:#037691" %)**cc**(%%): 1-9: Additional Measurement, 0: no additional measurement
383
384 (% style="color:#037691" %)**dd**(%%): delay (in second) to send (% style="color:#037691" %)__**aD0!**__(%%)__ __to get return.
385
386
387 The following is the display information on the serial port and the server.
388
389
390 [[image:image-20230201091954-12.png||_mstalt="453687"]]
391
392
393 [[image:image-20230201091954-13.png||_mstalt="454064" height="203" width="1117"]]
394
395
396
397 ==== (% style="color:blue" %)**aR0!- aR9!,  aRC0!- aRC9!**(%%) ====
398
399
400 Start Continuous Measurement
401
402 Start Continuous Measurement – Request CRC
403
404
405 * AT Command : AT+ADDRR=0,1,0,1 
406 * LoRaWAN Downlink (0xAA 03): 0xAA 03 30 01 00 01
407
408 Downlink: AA 03 aa bb cc dd
409
410 (% style="color:#037691" %)**aa**(%%): SDI-12 sensor address.
411
412 (% style="color:#037691" %)**bb**(%%): 0: no CRC, 1: request CRC
413
414 (% style="color:#037691" %)**cc**(%%): 1-9: Additional Measurement, 0: no additional measurement
415
416 (% style="color:#037691" %)**dd**(%%): delay (in second) to send (% style="color:#037691" %)__**aD0!**__(%%) to get return.
417
418
419 The following is the display information on the serial port and the server.
420
421
422 [[image:image-20230201092208-14.png||_mstalt="452283"]]
423
424
425 [[image:image-20230201092208-15.png||_mstalt="452660" height="214" width="1140"]]
426
427
428 === 2.3.2 Advance SDI-12 Debug command ===
429
430
431 This command can be used to debug all SDI-12 command.
432
433
434 LoRaWAN Downlink: A8 aa xx xx xx xx bb cc dd
435
436 (% style="color:#037691" %)**aa **(%%): total SDI-12 command length
437
438 (% style="color:#037691" %)**xx **(%%): SDI-12 command
439
440 (% style="color:#037691" %)**bb **(%%): Delay to wait for return
441
442 (% style="color:#037691" %)**cc **(%%): 0: don't uplink return to LoRaWAN, 1: Uplink return to LoRaWAN on FPORT=100
443
444 (% style="color:#037691" %)**dd: **(%%) 0: Do not use aD0! command access, 1: use aD0! command access.
445
446
447 (% style="color:blue" %)**Example1: **(%%) AT+CFGDEV =0RC0!,1
448
449 (% style="color:#037691" %)**0RC0! **(%%): SDI-12 Command,
450
451 (% style="color:#037691" %)**1 **(%%): Delay 1 second.  ( 0: 810 mini-second)
452
453 Equal Downlink: 0xA8 05 30 52 43 30 21 01 01
454
455
456 The following is the display information on the serial port and the server.
457
458
459 [[image:image-20230201092355-16.png||_mstalt="453960"]]
460
461
462 [[image:image-20230201092355-17.png||_mstalt="454337" height="426" width="1135"]]
463
464
465 (% style="color:blue" %)**Example2: **(%%) AT+CFGDEV =0M!,1,1
466
467 (% style="color:#037691" %)**0M! **(%%): SDI-12 Command,
468
469 (% style="color:#037691" %)**1 **(%%): Delay 1 second.  ( 0: 810 mini-second)
470
471 (% style="color:#037691" %)**1 **(%%): Use aD0! command access.
472
473 Equal Downlink: 0xA8 03 30  4D 21 01 01 01
474
475
476 The following is the display information on the serial port and the server.
477
478
479 [[image:image-20230628091055-1.png||height="368" width="462"]]
480
481 [[image:image-20230628091130-2.png||height="258" width="879"]]
482
483
484 === 2.3.3 Convert ASCII to String ===
485
486
487 This command is used to convert between ASCII and String format.
488
489 AT+CONVFORM ( Max length: 80 bytes)
490
491
492 (% style="color:blue" %)**Example:**
493
494 1) AT+CONVFORM=0, string Convert String from String to ASCII
495
496 [[image:1675214845056-885.png||_mstalt="297622"]]
497
498
499 2) AT+CONVFORM=1, ASCII Convert ASCII to String.
500
501 [[image:1675214856590-846.png||_mstalt="297739"]]
502
503
504 === 2.3.4 Define periodically SDI-12 commands and uplink. ===
505
506
507 AT+COMMANDx & AT+DATACUTx
508
509 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.
510
511
512 * (% style="color:blue" %)**AT Command:**
513
514 (% style="color:#037691" %)**AT+COMMANDx=var1,var2,var3,var4.**
515
516 (% style="color:red" %)**var1**(%%): SDI-12 command , for example: 0RC0!
517
518 (% style="color:red" %)**var2**(%%): Wait timeout for return. (unit: second)
519
520 (% style="color:red" %)**var3**(%%): Whether to send //addrD0!// to get return after var2 timeout. 0: Don't Send //addrD0! //; 1: Send //addrD0!//.
521
522 (% style="color:red" %)**var4**(%%): validation check for return. If return invalid, SDI-12-LB/LS will resend this command. Max 3 retries.
523
524 (% style="color:red" %)**0 **(%%) No validation check;
525
526 (% style="color:red" %)**1** (%%) Check if return chars are printable char(0x20 ~~ 0x7E);
527
528 (% style="color:red" %)**2**(%%)  Check if there is return from SDI-12 sensor
529
530 (% style="color:red" %)**3** (%%) Check if return pass CRC check ( SDI-12 command var1 must include CRC request);
531
532
533 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.
534
535
536 (% style="color:blue" %)**AT+DATACUTx**(%%) : This command defines how to handle the return from AT+COMMANDx, max return length is 100 bytes.
537
538 (% border="1" style="width:436px" %)
539 |(% style="background-color:#f2f2f2; width:433px" %)(((
540 (% style="color:#0070c0" %)**AT+DATACUTx=a,b,c**
541
542 **a**:  length for the return of AT+COMMAND
543
544 **b**: 1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections.
545
546 **c**:  define the position for valid value. 
547 )))
548
549 For example, if return from AT+COMMAND1 is “013METER   TER12 112T12-00024895<CR><LF>” , Below AT+DATACUT1 will get different result to combine payload:
550
551
552 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
553 |=(% style="width: 164px;background-color:#4F81BD;color:white" %)**AT+DATACUT1 value**|=(% style="width: 346px;background-color:#4F81BD;color:white" %)**Final Result to combine Payload**
554 |(% style="background-color:#f2f2f2; width:164px" %)34,1,1+2+3|(% style="background-color:#f2f2f2; width:344px" %)0D 00 01 30 31 33
555 |(% 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
556 |(% 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
557
558 * (% style="color:blue" %)** Downlink Payload:**
559
560 (% style="color:blue" %)**0xAF**(%%)  downlink command can be used to set AT+COMMANDx or AT+DATACUTx.
561
562
563 (% style="color:red" %)**Note : if user use AT+COMMANDx to add a new command, he also need to send AT+DATACUTx downlink.**
564
565
566 Format: ** (% style="color:#037691" %)AF MM NN LL XX XX XX XX YY(%%)**
567
568 Where:
569
570 * (% style="color:#037691" %)**MM **(%%): the AT+COMMAND or AT+DATACUT to be set. Value from 01 ~~ 0F,
571 * (% style="color:#037691" %)**NN **(%%):  1: set the AT+COMMAND value ; 2: set the AT+DATACUT value.
572 * (% style="color:#037691" %)**LL **(%%):  The length of AT+COMMAND or AT+DATACUT command
573 * (% style="color:#037691" %)**XX XX XX XX **(%%): AT+COMMAND or AT+DATACUT command
574 * (% 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. 
575
576 (% style="color:blue" %)**Example:**
577
578 [[image:image-20230201094129-18.png||_mstalt="455065"]]
579
580
581
582 (% style="color:blue" %)**Clear SDI12 Command**
583
584 The AT+COMMANDx and AT+DATACUTx settings are stored in special location, user can use below command to clear them.
585
586
587 * (% style="color:#037691" %)**AT Command:**
588
589 (% style="color:#4f81bd" %)**AT+CMDEAR=mm,nn** (%%) mm: start position of erase ,nn: stop position of erase
590
591
592 Etc. AT+CMDEAR=1,10 means erase AT+COMMAND1/AT+DATACUT1 to AT+COMMAND10/AT+DATACUT10
593
594
595 * (% style="color:#037691" %)**Downlink Payload:**
596
597 (% style="color:#4f81bd" %)**0x09 aa bb**(%%)  same as AT+CMDEAR=aa,bb
598
599
600
601 (% style="color:blue" %)**command combination**
602
603 Below shows a screen shot how the results combines together to a uplink payload.
604
605 [[image:1675215745275-920.png||_mstalt="295334"]]
606
607
608 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.
609
610 (% 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.
611
612
613 (% 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.
614
615
616 [[image:1675215782925-448.png||_mstalt="297466"]]
617
618
619 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.
620
621
622 (% style="color:blue" %)**Compose Uplink**
623
624 (% style="color:#4f81bd" %)**AT+DATAUP=0**
625
626 Compose the uplink payload with value returns in sequence and send with **__A SIGNLE UPLINK__**.
627
628 Final Payload is **__Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx__**
629
630 Where PAYVER is defined by AT+PAYVER, below is an example screen shot.
631
632
633 [[image:1675215828102-844.png||_mstalt="294645"]]
634
635
636 (% style="color:#4f81bd" %)**AT+DATAUP=1**
637
638 Compose the uplink payload with value returns in sequence and send with **__Multiply UPLINKs__**.
639
640 Final Payload is __**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**__
641
642 1. Battery Info (2 bytes): Battery voltage
643 1. PAYVER (1 byte): Defined by AT+PAYVER
644 1. PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
645 1. PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
646 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
647
648 [[image:1675215848113-696.png||_mstalt="296998"]]
649
650
651 (% style="color:red" %)**Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:**
652
653 * For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
654 * For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
655 * For US915 band, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
656 * For all other bands: max 51 bytes for each uplink  ( so 51 -5 = 46 max valid date).
657
658 (% style="color:red" %)**When AT+DATAUP=1, the maximum number of segments is 15, and the maximum total number of bytes is 1500;**
659
660 (% 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.**
661
662
663 == 2.4 Uplink Payload ==
664
665 === 2.4.1 Device Payload, FPORT~=5 ===
666
667
668 Include device configure status. Once SDI-12-LB/LS Joined the network, it will uplink this message to the server.
669
670 Users can also use the downlink command(0x26 01) to ask SDI-12-LB/LS to resend this uplink.
671
672 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
673 |(% colspan="6" style="background-color:#4f81bd; color:white" %)**Device Status (FPORT=5)**
674 |(% 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**
675 |(% 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
676
677 Example parse in TTNv3
678
679 [[image:1675215946738-635.png||_mstalt="297778"]]
680
681
682 (% style="color:#037691" %)**Sensor Model**(%%): For SDI-12-LB/LS, this value is 0x17
683
684 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
685
686 (% style="color:#037691" %)**Frequency Band**:
687
688 0x01: EU868
689
690 0x02: US915
691
692 0x03: IN865
693
694 0x04: AU915
695
696 0x05: KZ865
697
698 0x06: RU864
699
700 0x07: AS923
701
702 0x08: AS923-1
703
704 0x09: AS923-2
705
706 0x0a: AS923-3
707
708 0x0b: CN470
709
710 0x0c: EU433
711
712 0x0d: KR920
713
714 0x0e: MA869
715
716
717 (% style="color:#037691" %)**Sub-Band**:
718
719 AU915 and US915:value 0x00 ~~ 0x08
720
721 CN470: value 0x0B ~~ 0x0C
722
723 Other Bands: Always 0x00
724
725
726 (% style="color:#037691" %)**Battery Info**:
727
728 Check the battery voltage.
729
730 Ex1: 0x0B45 = 2885mV
731
732 Ex2: 0x0B49 = 2889mV
733
734
735 === 2.4.2 Uplink Payload, FPORT~=2 ===
736
737
738 There are different cases for uplink. See below
739
740 * SDI-12 Debug Command return: FPORT=100
741
742 * Periodically Uplink: FPORT=2
743
744 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:500px" %)
745 |=(% style="width: 90px;background-color:#4F81BD;color:white" %)(((
746 **Size(bytes)**
747 )))|=(% 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**
748 |(% style="width:93px" %)Value|(% style="width:83px" %)(((
749 Battery(mV)
750 &
751 Interrupt_Flag
752 )))|(% style="width:91px" %)[[PAYLOAD_VER>>||anchor="H3.6Setthepayloadversion"]]|(% style="width:212px" %)(((
753 If the valid payload is too long and exceed the maximum support.
754 Payload length in server,server will show payload not provided in the LoRaWAN server.
755 )))
756
757 [[image:1675216282284-923.png||_mstalt="295633"]]
758
759
760 === 2.4.3 Battery Info ===
761
762
763 Check the battery voltage for SDI-12-LB/LS.
764
765 Ex1: 0x0B45 = 2885mV
766
767 Ex2: 0x0B49 = 2889mV
768
769
770 === 2.4.4 Interrupt Pin ===
771
772
773 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"]].
774
775 **Example:**
776
777 Ex1: 0x0B45:0x0B&0x80= 0x00    Normal uplink packet.
778
779 Ex2: 0x8B49:0x8B&0x80= 0x80    Interrupt Uplink Packet.
780
781
782 === 2.4.5 Payload version ===
783
784
785 The version number of the payload, mainly used for decoding. The default is 01.
786
787
788 === 2.4.6 ​Decode payload in The Things Network ===
789
790
791 While using TTN network, you can add the payload format to decode the payload.
792
793 [[image:1675216779406-595.png||_mstalt="298376"]]
794
795
796 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.
797
798 SDI-12-LB/LS TTN Payload Decoder: [[https:~~/~~/github.com/dragino/dragino-end-node-decoder>>url:https://github.com/dragino/dragino-end-node-decoder]]
799
800
801 == 2.5 Uplink Interval ==
802
803
804 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:
805
806 [[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]]
807
808
809 == 2.6 Examples To Set SDI commands ==
810
811 === 2.6.1 Examples 1 ~-~- General Example ===
812
813
814 COM port and SDI-12 sensor communication converted to SDI-12-LB/LS and SDI-12 sensor communication.
815
816 [[image:image-20230222143809-1.png||_mstalt="429962" height="564" width="729"]]
817
818
819 (% style="color:blue" %)**1) The AT+COMMANDx command is applied to the red arrow part, and sends the SDI12 command to the SDI12 sensor:**
820
821 a. Send the first command and get the first reply:
822
823 (% style="color:#037691" %)**AT+COMMANDx=1I!,0,0,1**
824
825 b. Send the second command and get the second reply:
826
827 (% style="color:#037691" %)**AT+COMMANDx=2I!,0,0,1**
828
829 c. Send the third command and get the third reply:
830
831 (% style="color:#037691" %)**AT+COMMANDx=3I!,0,0,1**
832
833 d. Send the fourth command and get the fourth reply:
834
835 (% style="color:#037691" %)**AT+COMMANDx=4I!,0,0,1**
836
837 e. Send the fifth command plus the sixth command, get the sixth reply:
838
839 (% style="color:#037691" %)**AT+COMMANDx=1M!,2,1,1**
840
841 f. Send the seventh command plus the eighth command, get the eighth reply:
842
843 (% style="color:#037691" %)**AT+COMMANDx=2M!,2,1,1**
844
845 g. Send the ninth command plus the tenth command, get the tenth reply:
846
847 (% style="color:#037691" %)**AT+COMMANDx=3M!,1,1,1**
848
849 h. Send the eleventh command plus the twelfth command, get the twelfth reply:
850
851 (% style="color:#037691" %)**AT+COMMANDx=4M!,1,1,1**
852
853
854 (% style="color:blue" %)**2) The AT+DATACUTx command is applied to the green arrow part, receiving and cut out data from the SDI12 sensor:**
855
856 a. The first reply, all 34 characters: ”113TRUEBNERSMT100038220303182331<CR><LF>”
857
858 Cut out all characters: (% _mstmutation="1" style="color:#037691" %)**AT+ALLDATAMOD=1 or AT+DATACUTx=34,2,1~~34**(% style="color:#037691" %);
859
860 b. The sixth reply, all 31 characters: "1+19210+1.04+0.00+22.49+11.75<CR><LF>"
861
862 Cut out all characters: (% _mstmutation="1" style="color:#037691" %)**AT+ALLDATAMOD=1 or AT+DATACUTx=31,2,1~~31**(% style="color:#037691" %);
863
864 c. The eighth reply, all 31 characters: "2+18990+1.08+0.00+22.24+11.80<CR><LF>"
865
866 Cut out all characters: (% _mstmutation="1" style="color:#037691" %)**AT+ALLDATAMOD=1 or AT+DATACUTx=31,2,1~~31**(% style="color:#037691" %);
867
868 d. The tenth reply, all 15 characters: "3-2919.8+24.0<CR><LF>"
869
870 Cut out all characters: (% _mstmutation="1" style="color:#037691" %)**AT+ALLDATAMOD=1 or AT+DATACUTx=15,2,1~~15**(% style="color:#037691" %);
871
872 e. The twelfth reply, all 25 characters: "4+30.8+22.84+4.7+954.38<CR><LF>"
873
874 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"**.
875
876
877 === 2.6.2 Example 2 ~-~- Connect to Hygrovue10 ===
878
879 ==== 2.6.2.1 Reference Manual and Command ====
880
881
882 * [[Hygrovue10 Product Page>>https://www.campbellsci.com/hygrovue10]]
883
884 * Commands to be used in PC and output.
885
886 ~1. check device address
887
888 2. change device address
889
890 3. check device ID
891
892 4. start measure
893
894 5. Get Meausre result
895
896 [[image:image-20230603120209-2.png||height="281" width="267"]]
897
898
899 ==== 2.6.2.2 Hardware Connection to SDI-12-LB/LS ====
900
901
902 [[image:image-20230603120515-3.png]]
903
904
905 ==== 2.6.2.3 Commands set in SDI-12-LB/LS and uplink payload ====
906
907
908 [[image:image-20230603120648-4.png]]
909
910 [[image:image-20230603120726-5.png]]
911
912
913 **Data in TTN:**
914
915 [[image:image-20230603120859-6.png||height="118" width="1285"]]
916
917
918 === 2.6.3 Example 3 ~-~- Connect to SIL-400 ===
919
920 ==== 2.6.3.1 Reference Manual and Command ====
921
922
923 * [[SIL-400 Product Page>>https://www.apogeeinstruments.com/sil-411-commercial-grade-sdi-12-digital-output-standard-field-of-view-infrared-radiometer-sensor/]]
924
925 * Commands to be used in PC and output.
926
927 ~1. check device address
928
929 2. change device address
930
931 3. check device ID
932
933 4. start measure
934
935 5. Get Meausre result
936
937 [[image:image-20230603121606-7.png||height="242" width="307"]]
938
939
940 ==== 2.6.3.2 Hardware Connection to SDI-12-LB/LS ====
941
942
943 [[image:image-20230603121643-8.png||height="442" width="656"]]
944
945
946 ==== 2.6.3.3 Commands set in SDI-12-LB/LS and uplink payload ====
947
948
949 [[image:image-20230603121721-9.png]]
950
951 [[image:image-20230628090323-1.png||height="414" width="694"]]
952
953 Data in TTN:
954
955 [[image:image-20230603121826-11.png||height="155" width="1104"]]
956
957
958 === 2.6.4 Example 4 ~-~- Connect to TEROS-12 ===
959
960 ==== 2.6.4.1 Reference Manual and Command ====
961
962
963 * [[TEROS-12 Product Page>>https://www.metergroup.com/en/meter-environment/products/teros-12-soil-moisture-sensor]]
964
965 * Commands to be used in PC and output.
966
967 1.check device address
968
969 2.change device address
970
971 3.check device ID
972
973 4.start measure
974
975 5.Get Meausre result
976
977 [[image:image-20230603122248-16.png||height="196" width="198"]]
978
979
980 ==== 2.6.4.2 Hardware Connection to SDI-12-LB/LS ====
981
982
983 [[image:image-20230603122212-15.png||height="502" width="667"]]
984
985
986 ==== 2.6.4.3 Commands set in SDI-12-LB/LS and uplink payload ====
987
988
989 [[image:image-20230603122040-12.png]]
990
991 [[image:image-20230603122109-13.png||height="469" width="762"]]
992
993
994 **Data in TTN:**
995
996 [[image:image-20230603122139-14.png||height="148" width="1128"]]
997
998
999 === 2.6.5 Example 5 ~-~- Connect to SIL-400/TEROS-12 & Hygrovue10 ===
1000
1001 ==== 2.6.5.1 Important Notice! ====
1002
1003
1004 * The product page and reference command see above example 2,3,4
1005
1006 * 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.
1007
1008 * 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.
1009
1010 * If these SDI-12 sensors are powered by external power source. It will add 300uA in the total current in SDI-12-LB/LS.
1011
1012 ==== 2.6.5.2 Hardware Connection to SDI-12-LB/LS ====
1013
1014
1015 [[image:image-20230603122508-17.png||height="526" width="742"]]
1016
1017
1018 ==== 2.6.5.3 Commands set in SDI-12-LB/LS and uplink payload ====
1019
1020
1021 [[image:image-20230603122549-18.png]]
1022
1023 [[image:image-20230603122623-19.png||height="483" width="1121"]]
1024
1025
1026 **Data in TTN:**
1027
1028 [[image:image-20230603122719-20.png||height="151" width="1179"]]
1029
1030
1031 === 2.6.6 Example 6 ~-~- Connect to ENTELECHY-EP_SDI-12 ===
1032
1033 ==== 2.6.6.1 Reference Manual and Command ====
1034
1035
1036 * [[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]]
1037
1038 * Commands to be used in PC and output.
1039
1040 1.check device address
1041
1042 2.change device address
1043
1044 3.check device ID
1045
1046 4.start measure
1047
1048 5.Get Meausre result
1049
1050
1051 [[image:image-20230627174559-3.png]]
1052
1053
1054 ==== 2.6.6.2 Hardware Connection to SDI-12-LB/LS ====
1055
1056
1057 [[image:image-20230627174446-2.png]]
1058
1059
1060 ==== 2.6.6.3 Commands set in SDI-12-LB/LS and uplink payload ====
1061
1062
1063 [[image:image-20230627175513-4.png||height="596" width="576"]]
1064
1065 [[image:image-20230627175736-5.png||height="429" width="693"]]
1066
1067
1068 **Data in TTN:**
1069
1070 [[image:image-20230627180303-6.png||height="292" width="1171"]]
1071
1072
1073 === 2.6.7 Example 7 ~-~- Connect to GroPoint Profile-8 (SDI-12 Version) ===
1074
1075 ==== 2.6.7.1  Reference Manual and Command ====
1076
1077
1078 * [[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]]
1079
1080 * Commands to be used in PC and output.
1081
1082 1. check device address
1083 1. change device address
1084 1. check device ID
1085 1. start measure
1086 1. Get Meausre result
1087
1088 [[image:image-20240423143921-1.png]]
1089
1090
1091 ==== 2.6.7.2 Hardware Connection to SDI-12-LB/LS ====
1092
1093
1094 (% 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.)**
1095
1096 [[image:image-20240423145522-2.png||height="345" width="400"]]
1097
1098
1099 ==== 2.6.7.3 Commands set in SDI-12-LB/LS and uplink payload ====
1100
1101 [[image:image-20240423151202-3.png]]
1102
1103 (% class="wikigeneratedid" id="H" %)
1104 [[image:image-20240423162851-6.png||height="251" width="935"]]
1105
1106
1107 DATA in TTN:
1108
1109 [[image:image-20240423162322-4.png||height="269" width="933"]]
1110
1111
1112 === 2.6.8 Example 8 ~-~- Connect to Acclima TDR Soil Moisture Sensor ===
1113
1114 ==== 2.6.8.1  Reference Manual and Command ====
1115
1116
1117 * [[Acclima TDR Soil Moisture Sensor User Manual>>url:https://acclima.com/tdr-soil-moisture-sensor-user-manual/]]
1118
1119 * Commands to be used in PC and output.
1120
1121 1. check device address
1122 1. change device address
1123 1. check device ID
1124 1. start measure
1125 1. Get Meausre result
1126
1127 [[image:image-20240903152650-3.png]]
1128
1129 [[image:image-20240903152627-2.png]]
1130
1131
1132 ==== 2.6.8.2 Hardware Connection to SDI-12-LB/LS ====
1133
1134
1135 (% 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.)**
1136
1137 [[image:image-20240903153004-5.png||height="358" width="660"]]
1138
1139
1140 ==== 2.6.8.3 Commands set in SDI-12-LB/LS and uplink payload ====
1141
1142
1143 [[image:image-20240903153258-6.png]]
1144
1145 [[image:image-20240903153627-7.png]]
1146
1147 DATA in TTN:
1148
1149 [[image:image-20240903154020-10.png||height="467" width="961"]]
1150
1151
1152 == 2.7 Frequency Plans ==
1153
1154
1155 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.
1156
1157 [[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/]]
1158
1159
1160 == 2.8 Firmware Change Log ==
1161
1162
1163 **Firmware download link:**
1164
1165 [[https:~~/~~/www.dropbox.com/sh/qrbgbikb109lkiv/AACBR-v_ZhZAMengcY7Nsa1ja?dl=0>>https://www.dropbox.com/sh/qrbgbikb109lkiv/AACBR-v_ZhZAMengcY7Nsa1ja?dl=0]]
1166
1167
1168 = 3. Configure SDI-12-LB/LS via AT Command or LoRaWAN Downlink =
1169
1170
1171 Use can configure SDI-12-LB/LS via AT Command or LoRaWAN Downlink.
1172
1173 * AT Command Connection: See [[FAQ>>||anchor="H7.FAQ"]].
1174 * LoRaWAN Downlink instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
1175
1176 There are two kinds of commands to configure SDI-12-LB/LS, they are:
1177
1178 * (% style="color:blue" %)**General Commands**.
1179
1180 These commands are to configure:
1181
1182 * General system settings like: uplink interval.
1183 * LoRaWAN protocol & radio related command.
1184
1185 They are same for all Dragino Device which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki:
1186
1187 [[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/]]
1188
1189
1190 * (% style="color:blue" %)**Commands special design for SDI-12-LB/LS**
1191
1192 These commands only valid for SDI-12-LB/LS, as below:
1193
1194
1195 == 3.1 Set Transmit Interval Time ==
1196
1197
1198 Feature: Change LoRaWAN End Node Transmit Interval.
1199
1200 (% style="color:blue" %)**AT Command: AT+TDC**
1201
1202 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
1203 |=(% 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**
1204 |(% style="background-color:#f2f2f2; width:157px" %)AT+TDC=?|(% style="background-color:#f2f2f2; width:166px" %)Show current transmit Interval|(% style="background-color:#f2f2f2" %)(((
1205 30000
1206 OK
1207 the interval is 30000ms = 30s
1208 )))
1209 |(% style="background-color:#f2f2f2; width:157px" %)AT+TDC=60000|(% style="background-color:#f2f2f2; width:166px" %)Set Transmit Interval|(% style="background-color:#f2f2f2" %)(((
1210 OK
1211 Set transmit interval to 60000ms = 60 seconds
1212 )))
1213
1214 (% style="color:blue" %)**Downlink Command: 0x01**
1215
1216 Format: Command Code (0x01) followed by 3 bytes time value.
1217
1218 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
1219
1220 * Example 1: Downlink Payload: 0100001E  ~/~/ Set Transmit Interval (TDC) = 30 seconds
1221 * Example 2: Downlink Payload: 0100003C  ~/~/  Set Transmit Interval (TDC) = 60 seconds
1222
1223 == 3.2 Set Interrupt Mode ==
1224
1225
1226 Feature, Set Interrupt mode for GPIO_EXIT.
1227
1228 (% style="color:blue" %)**AT Command: AT+INTMOD**
1229
1230 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
1231 |=(% 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**
1232 |(% style="background-color:#f2f2f2; width:154px" %)AT+INTMOD=?|(% style="background-color:#f2f2f2; width:196px" %)Show current interrupt mode|(% style="background-color:#f2f2f2; width:157px" %)(((
1233 0
1234 OK
1235 the mode is 0 =Disable Interrupt
1236 )))
1237 |(% style="background-color:#f2f2f2; width:154px" %)AT+INTMOD=2|(% style="background-color:#f2f2f2; width:196px" %)(((
1238 Set Transmit Interval
1239 0. (Disable Interrupt),
1240 ~1. (Trigger by rising and falling edge)
1241 2. (Trigger by falling edge)
1242 3. (Trigger by rising edge)
1243 )))|(% style="background-color:#f2f2f2; width:157px" %)OK
1244
1245 (% style="color:blue" %)**Downlink Command: 0x06**
1246
1247 Format: Command Code (0x06) followed by 3 bytes.
1248
1249 This means that the interrupt mode of the end node is set to 0x000003=3 (rising edge trigger), and the type code is 06.
1250
1251 * Example 1: Downlink Payload: 06000000  ~/~/  Turn off interrupt mode
1252 * Example 2: Downlink Payload: 06000003  ~/~/  Set the interrupt mode to rising edge trigger
1253
1254 == 3.3 Set the output time ==
1255
1256
1257 Feature, Control the output 3V3 , 5V or 12V.
1258
1259 (% style="color:blue" %)**AT Command: AT+3V3T**
1260
1261 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:474px" %)
1262 |=(% 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**
1263 |(% style="background-color:#f2f2f2; width:154px" %)AT+3V3T=?|(% style="background-color:#f2f2f2; width:201px" %)Show 3V3 open time.|(% style="background-color:#f2f2f2; width:116px" %)(((
1264 0
1265 OK
1266 )))
1267 |(% 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" %)(((
1268 OK
1269 default setting
1270 )))
1271 |(% 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" %)(((
1272 OK
1273 )))
1274 |(% 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" %)(((
1275 OK
1276 )))
1277
1278 (% style="color:blue" %)**AT Command: AT+5VT**
1279
1280 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:470px" %)
1281 |=(% 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**
1282 |(% style="background-color:#f2f2f2; width:155px" %)AT+5VT=?|(% style="background-color:#f2f2f2; width:196px" %)Show 5V open time.|(% style="background-color:#f2f2f2; width:114px" %)(((
1283 0
1284 OK
1285 )))
1286 |(% 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" %)(((
1287 OK
1288 default setting
1289 )))
1290 |(% 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" %)(((
1291 OK
1292 )))
1293 |(% 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" %)(((
1294 OK
1295 )))
1296
1297 (% style="color:blue" %)**AT Command: AT+12VT **
1298
1299 (% style="color:blue" %)**(The v1.2 version is enabled for 1 second by default, and the version below v1.2 is disabled by default)**
1300
1301 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:443px" %)
1302 |=(% 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**
1303 |(% style="background-color:#f2f2f2; width:156px" %)AT+12VT=?|(% style="background-color:#f2f2f2; width:199px" %)Show 12V open time.|(% style="background-color:#f2f2f2; width:83px" %)(((
1304 0
1305 OK
1306 )))
1307 |(% 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
1308 |(% 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" %)(((
1309 OK
1310 )))
1311
1312 (% style="color:blue" %)**Downlink Command: 0x07**
1313
1314 Format: Command Code (0x07) followed by 3 bytes.
1315
1316 The first byte is which power, the second and third bytes are the time to turn on.
1317
1318 * Example 1: Downlink Payload: 070101F4  **~-~-->**  AT+3V3T=500
1319 * Example 2: Downlink Payload: 0701FFFF   **~-~-->**  AT+3V3T=65535
1320 * Example 3: Downlink Payload: 070203E8  **~-~-->**  AT+5VT=1000
1321 * Example 4: Downlink Payload: 07020000  **~-~-->**  AT+5VT=0
1322 * Example 5: Downlink Payload: 070301F4  **~-~-->**  AT+12VT=500
1323 * Example 6: Downlink Payload: 07030000  **~-~-->**  AT+12VT=0
1324
1325 == 3.4 Set the all data mode ==
1326
1327
1328 Feature, Set the all data mode.
1329
1330 (% style="color:blue" %)**AT Command: AT+ALLDATAMOD**
1331
1332 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:437px" %)
1333 |=(% style="background-color:#4F81BD;color:white" %)**Command Example**|=(% style="background-color:#4F81BD;color:white" %)**Function**|=(% style="background-color:#4F81BD;color:white" %)**Response**
1334 |(% style="background-color:#f2f2f2" %)AT+ALLDATAMOD=?|(% style="background-color:#f2f2f2" %)Show current all data mode|(% style="background-color:#f2f2f2" %)(((
1335 0
1336 OK
1337 )))
1338 |(% style="background-color:#f2f2f2" %)AT+ALLDATAMOD=1|(% style="background-color:#f2f2f2" %)Set all data mode is 1.|(% style="background-color:#f2f2f2" %)OK
1339
1340 (% style="color:blue" %)**Downlink Command: 0xAB**
1341
1342 Format: Command Code (0xAB) followed by 1 bytes.
1343
1344 * Example 1: Downlink Payload: AB 00  ~/~/  AT+ALLDATAMOD=0
1345 * Example 2: Downlink Payload: AB 01  ~/~/  AT+ALLDATAMOD=1
1346
1347 == 3.5 Set the splicing payload for uplink ==
1348
1349
1350 Feature, splicing payload for uplink.
1351
1352 (% style="color:blue" %)**AT Command: AT+DATAUP**
1353
1354 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
1355 |=(% 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**
1356 |(% 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" %)(((
1357 0
1358 OK
1359 )))
1360 |(% style="background-color:#f2f2f2; width:154px" %)AT+DATAUP =0|(% style="background-color:#f2f2f2; width:266px" %)(((
1361 Set splicing payload for uplink mode is 0.
1362 )))|(% style="background-color:#f2f2f2" %)(((
1363 OK
1364 )))
1365 |(% 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
1366 |(% style="background-color:#f2f2f2; width:154px" %)AT+DATAUP =1,20000|(% style="background-color:#f2f2f2; width:266px" %)(((
1367 Set splicing payload for uplink mode is 1, and the uplink interval of each splice to 20000 milliseconds.
1368 )))|(% style="background-color:#f2f2f2" %)OK
1369
1370 (% style="color:blue" %)**Downlink Command: 0xAD**
1371
1372 Format: Command Code (0xAD) followed by 1 bytes or 5 bytes.
1373
1374 * Example 1: Downlink Payload: AD 00  ~/~/  AT+DATAUP=0
1375 * Example 2: Downlink Payload: AD 01  ~/~/  AT+DATAUP =1
1376 * Example 3: Downlink Payload: AD 01 00 00 14  ~/~/  AT+DATAUP =1,20000
1377
1378 This means that the interval is set to 0x000014=20S
1379
1380
1381 == 3.6 Set the payload version ==
1382
1383
1384 Feature, Set the payload version.
1385
1386 (% style="color:blue" %)**AT Command: AT+PAYVER**
1387
1388 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:437px" %)
1389 |=(% 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**
1390 |(% style="background-color:#f2f2f2; width:158px" %)AT+PAYVER=?|(% style="background-color:#f2f2f2; width:192px" %)Show current payload version|(% style="background-color:#f2f2f2" %)(((
1391 1
1392 OK
1393 )))
1394 |(% 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
1395
1396 (% style="color:blue" %)**Downlink Command: 0xAE**
1397
1398 Format: Command Code (0xAE) followed by 1 bytes.
1399
1400 * Example 1: Downlink Payload: AE 01  ~/~/  AT+PAYVER=1
1401 * Example 2: Downlink Payload: AE 05  ~/~/  AT+PAYVER=5
1402
1403 = 4. Battery & Power Consumption =
1404
1405
1406 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.
1407
1408 [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
1409
1410
1411 = 5. Remote Configure device =
1412
1413 == 5.1 Connect via BLE ==
1414
1415
1416 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/]]
1417
1418
1419 == 5.2 AT Command Set ==
1420
1421
1422
1423 = 6. OTA firmware update =
1424
1425
1426 Please see this link for how to do OTA firmware update.
1427
1428 [[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/]]
1429
1430
1431 = 7. FAQ =
1432
1433 == 7.1 How to use AT Command  via UART to access device? ==
1434
1435
1436 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]]
1437
1438
1439 == 7.2 How to update firmware via UART port? ==
1440
1441
1442 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]]
1443
1444
1445 == 7.3 How to change the LoRa Frequency Bands/Region? ==
1446
1447
1448 You can follow the instructions for [[how to upgrade image>>doc:Main.Firmware Upgrade Instruction for STM32 base products.WebHome]].
1449 When downloading the images, choose the required image file for download. ​
1450
1451
1452 == 7.4 Why is the data uploaded to the LoRaWAN platform node empty and fProt~=0? ==
1453
1454
1455 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.
1456
1457 Please refer to the following link for the number of bytes limited by different frequencies and different DRs in the lorawan protocol
1458
1459 [[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]]
1460
1461 Example:
1462
1463 [[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"]]
1464
1465 Please refer to the following command to fix DR
1466
1467 AT+ADR=0
1468
1469 AT+DR=3
1470
1471 Downlink command:
1472
1473 [[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]]
1474
1475
1476 = 8. ​Order Info =
1477
1478
1479 (((
1480 **Part Number: (% style="color:blue" %)SDI-12-LB-XX-YY(%%) or (% style="color:blue" %)SDI-12-LS-XX-YY(%%)**
1481 )))
1482
1483 (((
1484 (% style="color:blue" %)**XX**(%%): The default frequency band
1485 )))
1486
1487 (((
1488 * (% style="color:red" %)**AS923**(%%): LoRaWAN AS923 band
1489 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
1490 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
1491 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
1492 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
1493 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
1494 * (% style="color:red" %)**IN865**(%%): LoRaWAN IN865 band
1495 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
1496 )))
1497
1498 (% style="color:blue" %)**YY: **(%%)The grand connector hole size
1499
1500 * M12: M12 hole
1501 * M16: M16 hole
1502
1503 = 9. Packing Info =
1504
1505
1506 (% style="color:#037691" %)**Package Includes**:
1507
1508 * SDI-12-LB or SDI-12-LS SDI-12 to LoRaWAN Converter x 1
1509
1510 (% style="color:#037691" %)**Dimension and weight**:
1511
1512 * Device Size: cm
1513 * Device Weight: g
1514 * Package Size / pcs : cm
1515 * Weight / pcs : g
1516
1517 = 10. ​Support =
1518
1519
1520 * 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.
1521
1522 * 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]]
Copyright ©2010-2024 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0