Show last authors
1 (% style="text-align:center" %)
2 [[image:1654592399090-860.png||height="521" width="483"]]
3
4
5
6
7
8
9
10
11
12 **Table of Contents:**
13
14 {{toc/}}
15
16
17
18
19
20
21 = 1. Introduction =
22
23 == 1.1 ​What is LoRaWAN Soil pH Sensor ==
24
25
26 (((
27 The Dragino LSPH01 is a (% style="color:blue" %)**LoRaWAN Soil pH Sensor**(%%) for IoT of Agriculture. It is designed to measure the (% style="color:blue" %)**soil PH and soil temperature**(%%), so to send to the platform to analyze the soil acid or alkali level. The probe is IP68 waterproof.
28 )))
29
30 (((
31 LSPH01 probe is made by Solid AgCl reference electrode and Pure metal pH sensitive electrode. It can detect (% style="color:blue" %)**soil's pH **(%%)with high accuracy and stable value. The LSPH01 probe can be buried into soil for long time use.
32 )))
33
34 (((
35 The LoRa wireless technology used in LSPH01 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.
36 )))
37
38 (((
39 LSPH01 is powered by (% style="color:blue" %)**8500mAh Li-SOCI2 battery**(%%), it is designed for long term use up to 5 years.
40 )))
41
42 (((
43 Each LSPH01 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.
44 )))
45
46
47 [[image:1654592435432-887.png]]
48
49
50 == ​1.2 Features ==
51
52
53 * LoRaWAN 1.0.3 Class A
54 * Ultra-low power consumption
55 * Monitor soil pH with temperature compensation.
56 * Monitor soil temperature
57 * Monitor Battery Level
58 * Support pH calibration by end user
59 * Bands: CN470/EU433/KR920/US915/EU868/AS923/AU915/IN865
60 * AT Commands to change parameters
61 * Uplink on periodically
62 * Downlink to change configure
63 * IP66 Waterproof Enclosure
64 * IP68 rate for the Sensor Probe
65 * 8500mAh Battery for long term use
66
67 == 1.3 Probe Specification ==
68
69
70 (% style="color:#4f81bd" %)**Soil pH:**
71
72 * Range: 3 ~~ 10 pH
73 * Resolution: 0.01 pH
74 * Accuracy: ±2% under (0~~50 ℃, Accuracy will poor under 0 due to frozen)
75 * Temperature Compensation Range: 0 ~~ 50℃
76 * IP68 Protection
77 * Length: 3.5 meters
78
79 (% style="color:#4f81bd" %)**Soil Temperature:**
80
81 * Range -40℃~85℃
82 * Resolution: 0.1℃
83 * Accuracy: <±0.5℃(-10℃~40℃),<±0.8℃ (others)
84 * IP68 Protection
85 * Length: 3.5 meters
86
87 == 1.4 ​Applications ==
88
89
90 * Smart Agriculture
91
92 == 1.5 Pin mapping and power on ==
93
94
95 [[image:1654592472094-134.png]]
96
97
98 = 2. Configure LSPH01 to connect to LoRaWAN network =
99
100 == 2.1 How it works ==
101
102
103 (((
104 The LSPH01 is configured as 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 power on the LSPH01. It will automatically join the network via OTAA and start to send the sensor value. The default uplink interval is 20 minutes.
105 )))
106
107 (((
108 In case you can't set the OTAA keys in the LoRaWAN OTAA server, and you have to use the keys from the server, you can [[use AT Commands >>||anchor="H5.UseATCommand"]]to set the keys in the LSPH01.
109 )))
110
111
112 == 2.2 ​Quick guide to connect to LoRaWAN server (OTAA) ==
113
114
115 (((
116 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 [[LG308>>url:http://www.dragino.com/products/lora/item/140-lg308.html]] as a LoRaWAN gateway in this example.
117 )))
118
119 (((
120 [[image:1654592492399-921.png]]
121
122
123 )))
124
125 (((
126 The LG308 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.
127
128
129 )))
130
131 (((
132 (% style="color:blue" %)**Step 1**(%%): Create a device in TTN with the OTAA keys from LSPH01.
133 )))
134
135 (((
136 Each LSPH01 is shipped with a sticker with the default device EUI as below:
137 )))
138
139 [[image:image-20230426084737-1.png||height="246" width="530"]](% style="display:none" %)
140
141 (% style="display:none" %) (%%)
142
143 You can enter this key in the LoRaWAN Server portal. Below is TTN screen shot:
144
145
146 **Register the device**
147
148
149 [[image:1654592600093-601.png]]
150
151
152
153 **Add APP EUI and DEV EUI**
154
155 [[image:1654592619856-881.png]]
156
157
158
159 **Add APP EUI in the application**
160
161 [[image:1654592632656-512.png]]
162
163
164
165 **Add APP KEY**
166
167 [[image:1654592653453-934.png]]
168
169
170 (% style="color:blue" %)**Step 2**(%%): Power on LSPH01
171
172
173 Put a Jumper on JP2 to power on the device. ( The Switch must be in FLASH position).
174
175 [[image:image-20220607170442-2.png]]
176
177
178 (((
179 (% style="color:blue" %)**Step 3**(%%)**:** The LSPH01 will auto join to the TTN network. After join success, it will start to upload messages to TTN and you can see the messages in the panel.
180
181
182 )))
183
184 [[image:1654592697690-910.png]]
185
186
187 == 2.3 ​Uplink Payload ==
188
189
190 (((
191 LSPH01 will uplink payload via LoRaWAN with below payload format: 
192 )))
193
194 (((
195 Uplink payload includes in total 11 bytes.
196 )))
197
198 (((
199 Normal uplink payload:
200 )))
201
202 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:470px" %)
203 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
204 **Size(bytes)**
205 )))|=(% style="width: 30px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 70px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 60px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 70px;background-color:#4F81BD;color:white" %)**1**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)**1**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**1**
206 |(% style="width:62.5px" %)Value|(% style="width:62.5px" %)[[BAT>>||anchor="H2.3.1BatteryInfo"]]|(% style="width:62.5px" %)(((
207 [[Temperature (Optional)>>||anchor="H2.3.2DS18B20Temperaturesensor"]]
208 )))|[[Soil pH>>||anchor="H2.3.3SoilpH"]]|[[Soil Temperature>>||anchor="H2.3.4SoilTemperature"]]|(((
209 [[Digital Interrupt (Optional)>>||anchor="H2.3.5InterruptPin"]]
210 )))|Reserve|(((
211 [[Message Type>>||anchor="H2.3.6MessageType"]]
212 )))
213
214 [[image:1654592721645-318.png]]
215
216
217 === 2.3.1 Battery Info ===
218
219
220 Check the battery voltage for LSPH01.
221
222 Ex1: 0x0B45 = 2885mV
223
224 Ex2: 0x0B49 = 2889mV
225
226
227 === 2.3.2 DS18B20 Temperature sensor ===
228
229
230 This is optional, user can connect external DS18B20 sensor to the +3.3v, 1-wire and GND pin . and this field will report temperature.
231
232
233 **Example**:
234
235 If payload is: 0105H:  (0105 & FC00 == 0), temp = 0105H /10 = 26.1 degree
236
237 If payload is: FF3FH :  (FF3F & FC00 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
238
239
240 === 2.3.3 Soil pH ===
241
242
243 Range: 0 ~~ 14 pH
244
245 **Example:**
246
247 (% style="color:#037691" %)** 0x02B7(H) = 695(D) = 6.95pH**
248
249
250 === 2.3.4 Soil Temperature ===
251
252
253 Get Soil Temperature 
254
255
256 **Example**:
257
258 If payload is: **0105H**:  (0105 & FC00 == 0), temp = 0105H /10 = 26.1 degree
259
260 If payload is: **FF3FH** :  (FF3F & FC00 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
261
262
263 === 2.3.5 Interrupt Pin ===
264
265
266 This data field shows if this packet is generated by interrupt or not. [[Click here>>||anchor="H3.2SetInterruptMode"]] for the hardware and software set up.
267
268
269 **Example:**
270
271 0x00: Normal uplink packet.
272
273 0x01: Interrupt Uplink Packet.
274
275
276 === 2.3.6 Message Type ===
277
278
279 (((
280 For a normal uplink payload, the message type is always 0x01.
281 )))
282
283 (((
284 Valid Message Type:
285 )))
286
287
288 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:496px" %)
289 |=(% style="width: 160px;background-color:#4F81BD;color:white" %)**Message Type Code**|=(% style="width: 163px;background-color:#4F81BD;color:white" %)**Description**|=(% style="width: 173px;background-color:#4F81BD;color:white" %)**Payload**
290 |(% style="width:160px" %)0x01|(% style="width:163px" %)Normal Uplink|(% style="width:173px" %)[[Normal Uplink Payload>>||anchor="H2.3200BUplinkPayload"]]
291 |(% style="width:160px" %)0x02|(% style="width:163px" %)Reply configures info|(% style="width:173px" %)[[Configure Info Payload>>||anchor="H3.4GetFirmwareVersionInfo"]]
292 |(% style="width:160px" %)0x03|(% style="width:163px" %)Reply Calibration Info|(% style="width:173px" %)[[Calibration Payload>>||anchor="H2.7Calibration"]]
293
294 === 2.3.7 Decode payload in The Things Network ===
295
296
297 While using TTN network, you can add the payload format to decode the payload.
298
299
300 [[image:1654592762713-715.png]]
301
302 (((
303 The payload decoder function for TTN is here:
304 )))
305
306 (((
307 LSPH01 TTN Payload Decoder:  [[https:~~/~~/github.com/dragino/dragino-end-node-decoder>>https://github.com/dragino/dragino-end-node-decoder]]
308 )))
309
310
311 == 2.4 Uplink Interval ==
312
313
314 The LSPH01 by default uplink the sensor data every 20 minutes. User can change this interval by AT Command or LoRaWAN Downlink Command. See this link: [[Change Uplink Interval>>doc:Main.End Device AT Commands and Downlink Command.WebHome||anchor="H4.1ChangeUplinkInterval"]]
315
316
317 == 2.5 ​Show Data in DataCake IoT Server ==
318
319
320 (((
321 [[DATACAKE>>url:https://datacake.co/]] provides a human friendly interface to show the sensor data, once we have data in TTN, we can use [[DATACAKE>>url:https://datacake.co/]] to connect to TTN and see the data in DATACAKE. Below are the steps:
322 )))
323
324 (((
325
326 )))
327
328 (((
329 (% style="color:blue" %)**Step 1**(%%)**: Be sure that your device is programmed and properly connected to the network at this time.**
330 )))
331
332 (((
333 (% style="color:blue" %)**Step 2**(%%)**: To configure the Application to forward data to DATACAKE you will need to add integration. To add the DATACAKE integration, perform the following steps:**
334 )))
335
336
337 [[image:1654592790040-760.png]]
338
339
340 [[image:1654592800389-571.png]]
341
342
343 (% style="color:blue" %)**Step 3**(%%)**: Create an account or log in Datacake.**
344
345 (% style="color:blue" %)**Step 4**(%%)**: Create LSPH01 product.**
346
347 [[image:1654592819047-535.png]]
348
349
350 [[image:1654592833877-762.png]]
351
352
353 [[image:1654592856403-259.png]]
354
355
356 (((
357 (% style="color:blue" %)**Step 5**(%%)**: add payload decode**
358 )))
359
360 (((
361 Download Datacake decoder from: [[https:~~/~~/www.dropbox.com/sh/pj7cgmgqg3gx3ta/AABYFbg1DVOOR9Hmr1mLSBkga?dl=0>>url:https://www.dropbox.com/sh/pj7cgmgqg3gx3ta/AABYFbg1DVOOR9Hmr1mLSBkga?dl=0]]
362 )))
363
364
365 [[image:1654592878525-845.png]]
366
367 [[image:1654592892967-474.png]]
368
369
370 [[image:1654592905354-123.png]]
371
372
373 After added, the sensor data arrive TTN, it will also arrive and show in Mydevices.
374
375
376 [[image:1654592917530-261.png]]
377
378
379 == 2.6 Installation and Maintain ==
380
381 === 2.6.1 Before measurement ===
382
383
384 (((
385 If the LSPH01 has more than 7 days not use or just clean the pH probe. User should put the probe inside pure water for more than 24 hours for activation. If no put in water, user need to put inside soil for more than 24 hours to ensure the measurement accuracy. 
386 )))
387
388
389 === 2.6.2 Measurement ===
390
391
392 (((
393 (% style="color:blue" %)**Measurement the soil surface:**
394 )))
395
396 (((
397 [[image:1654592946732-634.png]]
398 )))
399
400 (((
401 Choose the proper measuring position. Split the surface soil according to the measured deep.
402 )))
403
404 (((
405 Put pure water, or rainwater to make the soil of measurement point to moist mud. Remove rocks or hard things.
406 )))
407
408 (((
409 Slowly insert the probe to the measure point. Don't use large force which will break the probe. Make sure not shake when inserting.
410 )))
411
412 (((
413 Put soil over the probe after insert. And start to measure.
414 )))
415
416 (((
417
418 )))
419
420 (((
421 (% style="color:blue" %)**Measurement inside soil:**
422 )))
423
424 (((
425 Dig a hole with diameter > 20CM.
426 )))
427
428 (((
429 Insert the probe inside, method like measure the surface.
430 )))
431
432
433 === 2.6.3 Maintain Probe ===
434
435
436 (((
437 ~1. pH probe electrode is fragile and no strong. User must avoid strong force or hitting it.
438 )))
439
440 (((
441 2. After long time use (3~~ 6  months). The probe electrode needs to be clean; user can use high grade sandpaper to polish it or put in 5% hydrochloric acid for several minutes. After the metal probe looks like new, user can use pure water to wash it.
442 )))
443
444 (((
445 3. Probe reference electrode is also no strong, need to avoid strong force or hitting.
446 )))
447
448 (((
449 4. User should keep reference electrode wet while not use.
450 )))
451
452 (((
453 5. Avoid the probes to touch oily matter. Which will cause issue in accuracy.
454 )))
455
456 (((
457 6. The probe is IP68 can be put in water.
458
459
460 )))
461
462 == 2.7 Calibration ==
463
464
465 (((
466 User can do calibration for the probe. It is limited to use below pH buffer solution to calibrate: 4.00, 6.86, 9.18. When calibration, user need to clean the electrode and put the probe in the pH buffer solution to wait the value stable ( a new clean electrode might need max 24 hours to be stable).
467 )))
468
469 (((
470 After stable, user can use below command to calibrate.
471
472 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
473 |(% style="background-color:#4f81bd; color:white; width:115px" %)**pH buffer solution**|(% style="background-color:#4f81bd; color:white; width:145px" %)**AT Command to calibrate**|(% style="background-color:#4f81bd; color:white; width:150px" %)**Downlink Command**|(% style="background-color:#4f81bd; color:white; width:100px" %)**Read Cal Value**
474 |(% style="width:149px" %)4.00|(% style="width:197px" %)AT+PHCAL=4|(% style="width:206px" %)(((
475 0x13 04
476 Reply with Calibrate payload
477 )))|(% style="width:136px" %)(((
478 AT+PHCAL=?
479 Example 41,61,91
480 )))
481 |(% style="width:149px" %)6.86|(% style="width:197px" %)AT+PHCAL=6|(% style="width:206px" %)(((
482 0x13 06
483 Reply with Calibrate payload
484 )))|(% style="width:136px" %)AT+PHCAL=?
485 |(% style="width:149px" %)9.18|(% style="width:197px" %)AT+PHCAL=9|(% style="width:206px" %)(((
486 0x13 09
487 Reply with Calibrate payload
488 )))|(% style="width:136px" %)AT+PHCAL=?
489 |(% style="width:149px" %)Factory Default|(% style="width:197px" %)AT+PHCAL=15|(% style="width:206px" %)(((
490 0x13 15
491 Reply with Calibrate payload
492 )))|(% style="width:136px" %)(((
493 AT+PHCAL=?
494 Example 151
495 )))
496 )))
497
498
499 (% style="color:#037691" %)**Calibration Payload**
500
501 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:500px" %)
502 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
503 **Size(bytes)**
504 )))|=(% style="width: 100px;background-color:#4F81BD;color:white" %)**1**|=(% style="width: 100px;background-color:#4F81BD;color:white" %)**1**|=(% style="width: 100px;background-color:#4F81BD;color:white" %)**1**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)**7**|=(% style="width:90px;background-color:#4F81BD;color:white" %)**1**
505 |Value|(((
506 PH4 Calibrate value
507 )))|PH6.86 Calibrate value|(((
508 PH9.18 Calibrate value
509 )))|Reserve|(((
510 [[Message Type>>||anchor="H2.3.6MessageType"]]
511 Always 0x03
512 )))
513
514 User can also send 0x14 downlink command to poll the current calibration payload.
515
516 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:480px" %)
517 |=(% style="width: 183px; background-color:#4F81BD;color:white" %)**Downlink Control Type**|=(% style="width: 55px; background-color:#4F81BD;color:white" %)FPort|=(% style="width: 93px; background-color:#4F81BD;color:white" %)**Type Code**|=(% style="width: 149px; background-color:#4F81BD;color:white" %)**Downlink payload size(bytes)**
518 |(% style="width:183px" %)Get Calibration Version Info|(% style="width:55px" %)Any|(% style="width:93px" %)14|(% style="width:146px" %)2
519
520 * Reply to the confirmation package: 14 01
521
522 * Reply to non-confirmed packet: 14 00
523
524 == 2.8 Frequency Plans ==
525
526
527 (((
528 The LSPH01 uses OTAA mode and below frequency plans by default. If user want to use it with different frequency plan, please refer the AT command sets.
529 )))
530
531
532 === 2.8.1 EU863-870 (EU868) ===
533
534
535 (((
536 (% style="color:blue" %)**Uplink:**
537 )))
538
539 (((
540 868.1 - SF7BW125 to SF12BW125
541 )))
542
543 (((
544 868.3 - SF7BW125 to SF12BW125 and SF7BW250
545 )))
546
547 (((
548 868.5 - SF7BW125 to SF12BW125
549 )))
550
551 (((
552 867.1 - SF7BW125 to SF12BW125
553 )))
554
555 (((
556 867.3 - SF7BW125 to SF12BW125
557 )))
558
559 (((
560 867.5 - SF7BW125 to SF12BW125
561 )))
562
563 (((
564 867.7 - SF7BW125 to SF12BW125
565 )))
566
567 (((
568 867.9 - SF7BW125 to SF12BW125
569 )))
570
571 (((
572 868.8 - FSK
573 )))
574
575 (((
576
577 )))
578
579 (((
580 (% style="color:blue" %)**Downlink:**
581 )))
582
583 (((
584 Uplink channels 1-9 (RX1)
585 )))
586
587 (((
588 869.525 - SF9BW125 (RX2 downlink only)
589 )))
590
591
592 === 2.8.2 US902-928(US915) ===
593
594
595 (((
596 Used in USA, Canada and South America. Frequency band as per definition in LoRaWAN 1.0.3 Regional document.
597 )))
598
599 (((
600 To make sure the end node supports all sub band by default. In the OTAA Join process, the end node will use frequency 1 from sub-band1, then frequency 1 from sub-band2, then frequency 1 from sub-band3, etc to process the OTAA join.
601 )))
602
603 (((
604 After Join success, the end node will switch to the correct sub band by:
605 )))
606
607 * Check what sub-band the LoRaWAN server ask from the OTAA Join Accept message and switch to that sub-band
608
609 * Use the Join successful sub-band if the server doesn't include sub-band info in the OTAA Join Accept message ( TTN v2 doesn't include)
610
611 === 2.8.3 CN470-510 (CN470) ===
612
613
614 (((
615 Used in China, Default use CHE=1
616 )))
617
618 (((
619 (% style="color:blue" %)**Uplink:**
620 )))
621
622 (((
623 486.3 - SF7BW125 to SF12BW125
624 )))
625
626 (((
627 486.5 - SF7BW125 to SF12BW125
628 )))
629
630 (((
631 486.7 - SF7BW125 to SF12BW125
632 )))
633
634 (((
635 486.9 - SF7BW125 to SF12BW125
636 )))
637
638 (((
639 487.1 - SF7BW125 to SF12BW125
640 )))
641
642 (((
643 487.3 - SF7BW125 to SF12BW125
644 )))
645
646 (((
647 487.5 - SF7BW125 to SF12BW125
648 )))
649
650 (((
651 487.7 - SF7BW125 to SF12BW125
652 )))
653
654 (((
655
656 )))
657
658 (((
659 (% style="color:blue" %)**Downlink:**
660 )))
661
662 (((
663 506.7 - SF7BW125 to SF12BW125
664 )))
665
666 (((
667 506.9 - SF7BW125 to SF12BW125
668 )))
669
670 (((
671 507.1 - SF7BW125 to SF12BW125
672 )))
673
674 (((
675 507.3 - SF7BW125 to SF12BW125
676 )))
677
678 (((
679 507.5 - SF7BW125 to SF12BW125
680 )))
681
682 (((
683 507.7 - SF7BW125 to SF12BW125
684 )))
685
686 (((
687 507.9 - SF7BW125 to SF12BW125
688 )))
689
690 (((
691 508.1 - SF7BW125 to SF12BW125
692 )))
693
694 (((
695 505.3 - SF12BW125 (RX2 downlink only)
696 )))
697
698
699 === 2.8.4 AU915-928(AU915) ===
700
701
702 (((
703 Frequency band as per definition in LoRaWAN 1.0.3 Regional document.
704 )))
705
706 (((
707 To make sure the end node supports all sub band by default. In the OTAA Join process, the end node will use frequency 1 from sub-band1, then frequency 1 from sub-band2, then frequency 1 from sub-band3, etc to process the OTAA join.
708 )))
709
710 (((
711
712 )))
713
714 (((
715 After Join success, the end node will switch to the correct sub band by:
716 )))
717
718 * Check what sub-band the LoRaWAN server ask from the OTAA Join Accept message and switch to that sub-band
719
720 * Use the Join successful sub-band if the server doesn't include sub-band info in the OTAA Join Accept message ( TTN v2 doesn't include)
721
722 === 2.8.5 AS920-923 & AS923-925 (AS923) ===
723
724
725 (((
726 (% style="color:blue" %)**Default Uplink channel:**
727 )))
728
729 (((
730 923.2 - SF7BW125 to SF10BW125
731 )))
732
733 (((
734 923.4 - SF7BW125 to SF10BW125
735 )))
736
737 (((
738
739 )))
740
741 (((
742 (% style="color:blue" %)**Additional Uplink Channel**:
743 )))
744
745 (((
746 (OTAA mode, channel added by JoinAccept message)
747 )))
748
749 (((
750
751 )))
752
753 (((
754 (% style="color:blue" %)**AS920~~AS923 for Japan, Malaysia, Singapore**:
755 )))
756
757 (((
758 922.2 - SF7BW125 to SF10BW125
759 )))
760
761 (((
762 922.4 - SF7BW125 to SF10BW125
763 )))
764
765 (((
766 922.6 - SF7BW125 to SF10BW125
767 )))
768
769 (((
770 922.8 - SF7BW125 to SF10BW125
771 )))
772
773 (((
774 923.0 - SF7BW125 to SF10BW125
775 )))
776
777 (((
778 922.0 - SF7BW125 to SF10BW125
779 )))
780
781 (((
782
783 )))
784
785 (((
786 (% style="color:blue" %)**AS923 ~~ AS925 for Brunei, Cambodia, Hong Kong, Indonesia, Laos, Taiwan, Thailand, Vietnam**:
787 )))
788
789 (((
790 923.6 - SF7BW125 to SF10BW125
791 )))
792
793 (((
794 923.8 - SF7BW125 to SF10BW125
795 )))
796
797 (((
798 924.0 - SF7BW125 to SF10BW125
799 )))
800
801 (((
802 924.2 - SF7BW125 to SF10BW125
803 )))
804
805 (((
806 924.4 - SF7BW125 to SF10BW125
807 )))
808
809 (((
810 924.6 - SF7BW125 to SF10BW125
811 )))
812
813 (((
814
815 )))
816
817 (((
818 (% style="color:blue" %)**Downlink:**
819 )))
820
821 (((
822 Uplink channels 1-8 (RX1)
823 )))
824
825 (((
826 923.2 - SF10BW125 (RX2)
827 )))
828
829
830 === 2.8.6 KR920-923 (KR920) ===
831
832
833 (((
834 (% style="color:blue" %)**Default channel:**
835 )))
836
837 (((
838 922.1 - SF7BW125 to SF12BW125
839 )))
840
841 (((
842 922.3 - SF7BW125 to SF12BW125
843 )))
844
845 (((
846 922.5 - SF7BW125 to SF12BW125
847 )))
848
849
850 (((
851 (% style="color:blue" %)**Uplink: (OTAA mode, channel added by JoinAccept message)**
852 )))
853
854 (((
855 922.1 - SF7BW125 to SF12BW125
856 )))
857
858 (((
859 922.3 - SF7BW125 to SF12BW125
860 )))
861
862 (((
863 922.5 - SF7BW125 to SF12BW125
864 )))
865
866 (((
867 922.7 - SF7BW125 to SF12BW125
868 )))
869
870 (((
871 922.9 - SF7BW125 to SF12BW125
872 )))
873
874 (((
875 923.1 - SF7BW125 to SF12BW125
876 )))
877
878 (((
879 923.3 - SF7BW125 to SF12BW125
880 )))
881
882
883 (((
884 (% style="color:blue" %)**Downlink:**
885 )))
886
887 (((
888 Uplink channels 1-7(RX1)
889 )))
890
891 (((
892 921.9 - SF12BW125 (RX2 downlink only; SF12BW125 might be changed to SF9BW125)
893 )))
894
895
896 === 2.8.7 IN865-867 (IN865) ===
897
898
899 (((
900 (% style="color:blue" %)**Uplink:**
901 )))
902
903 (((
904 865.0625 - SF7BW125 to SF12BW125
905 )))
906
907 (((
908 865.4025 - SF7BW125 to SF12BW125
909 )))
910
911 (((
912 865.9850 - SF7BW125 to SF12BW125
913 )))
914
915
916 (((
917 (% style="color:blue" %)**Downlink:**
918 )))
919
920 (((
921 Uplink channels 1-3 (RX1)
922 )))
923
924 (((
925 866.550 - SF10BW125 (RX2)
926 )))
927
928
929 == 2.9 LED Indicator ==
930
931
932 The LSPH01 has an internal LED which is to show the status of different state.
933
934 * The sensor is detected when the device is turned on, and it will flash 4 times quickly when it is detected.
935
936 * Blink once when device transmit a packet.
937
938 == 2.10 ​Firmware Change Log ==
939
940
941 **Firmware download link: **[[https:~~/~~/www.dropbox.com/sh/xtm5tw37mewaw99/AAD0uy06odmreQQ7vMzZYVIGa?dl=0>>https://www.dropbox.com/sh/xtm5tw37mewaw99/AAD0uy06odmreQQ7vMzZYVIGa?dl=0]]
942
943 **Firmware Upgrade Method: **[[Firmware Upgrade Instruction>>path:/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/]]
944
945
946 = 3. Configure LSPH01 via AT Command or LoRaWAN Downlink =
947
948
949 (((
950 Use can configure LSPH01 via AT Command or LoRaWAN Downlink.
951 )))
952
953 * (((
954 AT Command Connection: See [[FAQ>>||anchor="H6.FAQ"]].
955 )))
956 * (((
957 LoRaWAN Downlink instruction for different platforms: [[IoT LoRaWAN Server>>path:/xwiki/bin/view/Main/]]
958 )))
959
960 (((
961 There are two kinds of commands to configure LSPH01, they are:
962 )))
963
964 * (((
965 (% style="color:#4f81bd" %)** General Commands**.
966 )))
967
968 (((
969 These commands are to configure:
970 )))
971
972 * (((
973 General system settings like: uplink interval.
974 )))
975 * (((
976 LoRaWAN protocol & radio related command.
977 )))
978
979 (((
980 They are same for all Dragino Device which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki: [[End Device AT Commands and Downlink Command>>path:/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/]]
981 )))
982
983
984 * (((
985 (% style="color:#4f81bd" %)** Commands special design for LSPH01**
986 )))
987
988 (((
989 These commands only valid for LSPH01, as below:
990 )))
991
992
993 == 3.1 Set Transmit Interval Time ==
994
995
996 Feature: Change LoRaWAN End Node Transmit Interval.
997
998 (% style="color:#037691" %)**AT Command: AT+TDC**
999
1000 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
1001 |=(% style="width: 156px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 137px;background-color:#4F81BD;color:white" %)**Function**|=(% style="background-color:#4F81BD;color:white" %)**Response**
1002 |(% style="width:156px" %)AT+TDC=?|(% style="width:137px" %)Show current transmit Interval|(((
1003 30000
1004 OK
1005 the interval is 30000ms = 30s
1006 )))
1007 |(% style="width:156px" %)AT+TDC=60000|(% style="width:137px" %)Set Transmit Interval|(((
1008 OK
1009 Set transmit interval to 60000ms = 60 seconds​
1010 )))
1011
1012 (((
1013 (% style="color:#037691" %)**Downlink Command: 0x01**
1014 )))
1015
1016 (((
1017 Format: Command Code (0x01) followed by 3 bytes time value.
1018 )))
1019
1020 (((
1021 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
1022 )))
1023
1024 * (((
1025 Example 1: Downlink Payload: 0100001E  ~/~/ Set Transmit Interval (TDC) = 30 seconds
1026 )))
1027 * (((
1028 Example 2: Downlink Payload: 0100003C  ~/~/ Set Transmit Interval (TDC) = 60 seconds
1029
1030
1031
1032 )))
1033
1034 == 3.2 Set Interrupt Mode ==
1035
1036
1037 Feature, Set Interrupt mode for GPIO_EXIT.
1038
1039 (% style="color:#037691" %)**AT Command: AT+INTMOD**
1040
1041 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
1042 |=(% style="width: 155px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 197px;background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 158px;background-color:#4F81BD;color:white" %)**Response**
1043 |(% style="width:154px" %)AT+INTMOD=?|(% style="width:196px" %)Show current interrupt mode|(% style="width:157px" %)(((
1044 0
1045 OK
1046 the mode is 0 =No interruption
1047 )))
1048 |(% style="width:154px" %)AT+INTMOD=2|(% style="width:196px" %)(((
1049 Set Transmit Interval
1050 0. (Disable Interrupt),
1051 ~1. (Trigger by rising and falling edge)
1052 2. (Trigger by falling edge)
1053 3. (Trigger by rising edge)
1054 )))|(% style="width:157px" %)OK
1055
1056 (((
1057 (% style="color:#037691" %)**Downlink Command: 0x06**
1058 )))
1059
1060 (((
1061 Format: Command Code (0x06) followed by 3 bytes.
1062 )))
1063
1064 (((
1065 This means that the interrupt mode of the end node is set to 0x000003=3 (rising edge trigger), and the type code is 06.
1066 )))
1067
1068 * (((
1069 Example 1: Downlink Payload: 06000000  ~/~/ Turn off interrupt mode
1070 )))
1071 * (((
1072 Example 2: Downlink Payload: 06000003  ~/~/  Set the interrupt mode to rising edge trigger
1073
1074
1075
1076 )))
1077
1078 == 3.3 Calibrate Sensor ==
1079
1080
1081 Detail See [[Calibration Guide>>||anchor="H2.7Calibration"]] for the user of 0x13 and 0x14 downlink commands
1082
1083
1084 == 3.4 Get Firmware Version Info ==
1085
1086
1087 Feature: use downlink to get firmware version.
1088
1089 (% style="color:#037691" %)**Downlink Command: 0x26**
1090
1091 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:500px" %)
1092 |(% style="background-color:#4f81bd; color:white; width:193px" %)**Downlink Control Type**|(% style="background-color:#4f81bd; color:white; width:57px" %)**FPort**|(% style="background-color:#4f81bd; color:white; width:91px" %)**Type Code**|(% style="background-color:#4f81bd; color:white; width:159px" %)**Downlink payload size(bytes)**
1093 |(% style="width:193px" %)Get Firmware Version Info|(% style="width:57px" %)Any|(% style="width:91px" %)26|(% style="width:149px" %)2
1094
1095 * Reply to the confirmation package: 26 01
1096
1097 * Reply to non-confirmed packet: 26 00
1098
1099 Device will send an uplink after got this downlink command. With below payload:
1100
1101 Configures info payload:
1102
1103 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %)
1104 |(% style="background-color:#4f81bd; color:white; width:50px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:white; width:70px" %)**1**|(% style="background-color:#4f81bd; color:white; width:70px" %)**1**|(% style="background-color:#4f81bd; color:white; width:50px" %)**1**|(% style="background-color:#4f81bd; color:white; width:70px" %)**1**|(% style="background-color:#4f81bd; color:white; width:60px" %)**1**|(% style="background-color:#4f81bd; color:white; width:50px" %)**5**|(% style="background-color:#4f81bd; color:white; width:90px" %)**1**
1105 |Value|Software Type|(((
1106 Frequency
1107 Band
1108 )))|Sub-band|(((
1109 Firmware
1110 Version
1111 )))|Sensor Type|Reserve|(((
1112 [[Message Type>>||anchor="H2.3.6MessageType"]]
1113 Always 0x02
1114 )))
1115
1116 (% style="color:#037691" %)**Software Type**(%%): Always 0x03 for LSPH01
1117
1118 (% style="color:#037691" %)**Frequency Band**:
1119
1120 *0x01: EU868
1121
1122 *0x02: US915
1123
1124 *0x03: IN865
1125
1126 *0x04: AU915
1127
1128 *0x05: KZ865
1129
1130 *0x06: RU864
1131
1132 *0x07: AS923
1133
1134 *0x08: AS923-1
1135
1136 *0x09: AS923-2
1137
1138 *0xa0: AS923-3
1139
1140
1141 (% style="color:#037691" %)**Sub-Band**(%%): value 0x00 ~~ 0x08
1142
1143 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
1144
1145 (% style="color:#037691" %)**Sensor Type**:
1146
1147 0x01: LSE01
1148
1149 0x02: LDDS75
1150
1151 0x03: LDDS20
1152
1153 0x04: LLMS01
1154
1155 0x05: LSPH01
1156
1157 0x06: LSNPK01
1158
1159 0x07: LDDS12
1160
1161
1162 = 4. Battery & Power Consumption =
1163
1164
1165 LSPH01 uses ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace.
1166
1167 [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
1168
1169
1170 = 5. Use AT Command =
1171
1172 == 5.1 Access AT Commands ==
1173
1174
1175 LSPH01 supports AT Command set in the stock firmware. You can use a USB to TTL adapter to connect to LSPH01 for using AT command, as below.
1176
1177
1178 [[image:1654593668970-604.png]]
1179
1180
1181 **Connection:**
1182
1183 (% style="background-color:yellow" %)** USB TTL GND <~-~-~-~-> GND**
1184
1185 (% style="background-color:yellow" %)** USB TTL TXD  <~-~-~-~-> UART_RXD**
1186
1187 (% style="background-color:yellow" %)** USB TTL RXD  <~-~-~-~-> UART_TXD**
1188
1189
1190 (((
1191 In the PC, you need to set the serial baud rate to (% style="color:green" %)**9600**(%%) to access the serial console for LSPH01. LSPH01 will output system info once power on as below:
1192 )))
1193
1194
1195 [[image:1654593712276-618.png]]
1196
1197 Valid AT Command please check [[Configure Device>>||anchor="H3.ConfigureLSPH01viaATCommandorLoRaWANDownlink"]].
1198
1199
1200 = 6. FAQ =
1201
1202 == 6.1 How to change the LoRa Frequency Bands/Region ==
1203
1204
1205 You can follow the instructions for [[how to upgrade image>>||anchor="H2.10200BFirmwareChangeLog"]].
1206 When downloading the images, choose the required image file for download. ​
1207
1208
1209 = 7. Trouble Shooting =
1210
1211 == 7.1 AT Commands input doesn't work ==
1212
1213
1214 In the case if user can see the console output but can't type input to the device. Please check if you already include the (% style="color:green" %)**ENTER**(%%) while sending out the command. Some serial tool doesn't send (% style="color:green" %)**ENTER**(%%) while press the send key, user need to add ENTER in their string.
1215
1216
1217 = 8. Order Info =
1218
1219
1220 Part Number: (% style="color:blue" %)**LSPH01-XX**
1221
1222
1223 (% style="color:blue" %)**XX**(%%): The default frequency band
1224
1225 * (% style="color:red" %)**AS923**(%%):  LoRaWAN AS923 band
1226 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
1227 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
1228 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
1229 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
1230 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
1231 * (% style="color:red" %)**IN865**(%%):  LoRaWAN IN865 band
1232 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
1233
1234 = 9. ​Packing Info =
1235
1236
1237 **Package Includes**:
1238
1239 * LSPH01 LoRaWAN Soil Ph Sensor x 1
1240
1241 **Dimension and weight**:
1242
1243 * Device Size: cm
1244 * Device Weight: g
1245 * Package Size / pcs : cm
1246 * Weight / pcs : g
1247
1248 = 10. ​Support =
1249
1250
1251 * 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.
1252 * 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-2022 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0