Version 99.22 by Xiaoling on 2023/05/31 11:49

Show last authors
1 (% style="text-align:center" %)
2 [[image:1654592399090-860.png||height="521" width="483"]]
3
4
5
6
7
8 **Table of Contents:**
9
10 {{toc/}}
11
12
13
14
15
16
17 = 1. Introduction =
18
19 == 1.1 ​What is LoRaWAN Soil pH Sensor ==
20
21
22 (((
23 The Dragino LSPH01 is a (% style="color:blue" %)**LoRaWAN Soil pH Sensor**(%%) for IoT of Agriculture. It is designed to measure the soil PH and soil temperature, so to send to the platform to analyze the soil acid or alkali level. The probe is IP68 waterproof.
24 )))
25
26 (((
27 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.
28 )))
29
30 (((
31 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.
32 )))
33
34 (((
35 LSPH01 is powered by (% style="color:blue" %)**8500mAh Li-SOCI2 battery**(%%), it is designed for long term use up to 5 years.
36 )))
37
38 (((
39 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.
40 )))
41
42
43 [[image:1654592435432-887.png]]
44
45
46 == ​1.2 Features ==
47
48
49 * LoRaWAN 1.0.3 Class A
50 * Ultra-low power consumption
51 * Monitor soil pH with temperature compensation.
52 * Monitor soil temperature
53 * Monitor Battery Level
54 * Support pH calibration by end user
55 * Bands: CN470/EU433/KR920/US915/EU868/AS923/AU915/IN865
56 * AT Commands to change parameters
57 * Uplink on periodically
58 * Downlink to change configure
59 * IP66 Waterproof Enclosure
60 * IP68 rate for the Sensor Probe
61 * 8500mAh Battery for long term use
62
63
64 == 1.3 Probe Specification ==
65
66
67 (% style="color:#4f81bd" %)**Soil pH:**
68
69 * Range: 3 ~~ 10 pH
70 * Resolution: 0.01 pH
71 * Accuracy: ±2% under (0~~50 ℃, Accuracy will poor under 0 due to frozen)
72 * Temperature Compensation Range: 0 ~~ 50℃
73 * IP68 Protection
74 * Length: 3.5 meters
75
76 (% style="color:#4f81bd" %)**Soil Temperature:**
77
78 * Range -40℃~85℃
79 * Resolution: 0.1℃
80 * Accuracy: <±0.5℃(-10℃~40℃),<±0.8℃ (others)
81 * IP68 Protection
82 * Length: 3.5 meters
83
84
85 == 1.4 ​Applications ==
86
87
88 * Smart Agriculture
89
90
91 == 1.5 Pin mapping and power on ==
92
93
94 [[image:1654592472094-134.png]]
95
96
97 = 2. Configure LSPH01 to connect to LoRaWAN network =
98
99 == 2.1 How it works ==
100
101
102 (((
103 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.
104 )))
105
106 (((
107 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.
108 )))
109
110
111 == 2.2 ​Quick guide to connect to LoRaWAN server (OTAA) ==
112
113
114 (((
115 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.
116 )))
117
118 (((
119 [[image:1654592492399-921.png]]
120
121
122 )))
123
124 (((
125 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.
126
127
128 )))
129
130 (((
131 (% style="color:blue" %)**Step 1**(%%): Create a device in TTN with the OTAA keys from LSPH01.
132 )))
133
134 (((
135 Each LSPH01 is shipped with a sticker with the default device EUI as below:
136 )))
137
138 [[image:image-20230426084737-1.png||height="246" width="530"]](% style="display:none" %)
139
140 (% style="display:none" %) (%%)
141
142 You can enter this key in the LoRaWAN Server portal. Below is TTN screen shot:
143
144
145 **Register the device**
146
147
148 [[image:1654592600093-601.png]]
149
150
151
152 **Add APP EUI and DEV EUI**
153
154 [[image:1654592619856-881.png]]
155
156
157
158 **Add APP EUI in the application**
159
160 [[image:1654592632656-512.png]]
161
162
163
164 **Add APP KEY**
165
166 [[image:1654592653453-934.png]]
167
168
169 (% style="color:blue" %)**Step 2**(%%): Power on LSPH01
170
171
172 Put a Jumper on JP2 to power on the device. ( The Switch must be in FLASH position).
173
174 [[image:image-20220607170442-2.png]]
175
176
177 (((
178 (% 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.
179
180
181 )))
182
183 [[image:1654592697690-910.png]]
184
185
186 == 2.3 ​Uplink Payload ==
187
188
189 (((
190 LSPH01 will uplink payload via LoRaWAN with below payload format: 
191 )))
192
193 (((
194 Uplink payload includes in total 11 bytes.
195 )))
196
197 (((
198 Normal uplink payload:
199 )))
200
201 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:470px" %)
202 |=(% style="width: 60px;background-color:#D9E2F3;color:#0070C0" %)(((
203 **Size(bytes)**
204 )))|=(% style="width: 30px;background-color:#D9E2F3;color:#0070C0" %)**2**|=(% style="width: 70px;background-color:#D9E2F3;color:#0070C0" %)**2**|=(% style="width: 50px;background-color:#D9E2F3;color:#0070C0" %)**2**|=(% style="width: 60px;background-color:#D9E2F3;color:#0070C0" %)**2**|=(% style="width: 70px;background-color:#D9E2F3;color:#0070C0" %)**1**|=(% style="width: 50px;background-color:#D9E2F3;color:#0070C0" %)**1**|=(% style="width: 80px;background-color:#D9E2F3;color:#0070C0" %)**1**
205 |(% style="width:62.5px" %)**Value**|(% style="width:62.5px" %)[[BAT>>||anchor="H2.3.1BatteryInfo"]]|(% style="width:62.5px" %)(((
206 [[Temperature (Optional)>>||anchor="H2.3.2DS18B20Temperaturesensor"]]
207 )))|[[Soil pH>>||anchor="H2.3.3SoilpH"]]|[[Soil Temperature>>||anchor="H2.3.4SoilTemperature"]]|(((
208 [[Digital Interrupt (Optional)>>||anchor="H2.3.5InterruptPin"]]
209 )))|Reserve|(((
210 [[Message Type>>||anchor="H2.3.6MessageType"]]
211 )))
212
213 [[image:1654592721645-318.png]]
214
215
216 === 2.3.1 Battery Info ===
217
218
219 Check the battery voltage for LSPH01.
220
221 Ex1: 0x0B45 = 2885mV
222
223 Ex2: 0x0B49 = 2889mV
224
225
226 === 2.3.2 DS18B20 Temperature sensor ===
227
228
229 This is optional, user can connect external DS18B20 sensor to the +3.3v, 1-wire and GND pin . and this field will report temperature.
230
231
232 **Example**:
233
234 If payload is: 0105H:  (0105 & FC00 == 0), temp = 0105H /10 = 26.1 degree
235
236 If payload is: FF3FH :  (FF3F & FC00 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
237
238
239 === 2.3.3 Soil pH ===
240
241
242 Range: 0 ~~ 14 pH
243
244 **Example:**
245
246 (% style="color:#037691" %)** 0x02B7(H) = 695(D) = 6.95pH**
247
248
249 === 2.3.4 Soil Temperature ===
250
251
252 Get Soil Temperature 
253
254
255 **Example**:
256
257 If payload is: **0105H**:  (0105 & FC00 == 0), temp = 0105H /10 = 26.1 degree
258
259 If payload is: **FF3FH** :  (FF3F & FC00 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
260
261
262 === 2.3.5 Interrupt Pin ===
263
264
265 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.
266
267
268 **Example:**
269
270 0x00: Normal uplink packet.
271
272 0x01: Interrupt Uplink Packet.
273
274
275 === 2.3.6 Message Type ===
276
277
278 (((
279 For a normal uplink payload, the message type is always 0x01.
280 )))
281
282 (((
283 Valid Message Type:
284 )))
285
286
287 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:496px" %)
288 |=(% style="width: 160px;background-color:#D9E2F3;color:#0070C0" %)**Message Type Code**|=(% style="width: 163px;background-color:#D9E2F3;color:#0070C0" %)**Description**|=(% style="width: 173px;background-color:#D9E2F3;color:#0070C0" %)**Payload**
289 |(% style="width:160px" %)0x01|(% style="width:163px" %)Normal Uplink|(% style="width:173px" %)[[Normal Uplink Payload>>||anchor="H2.3200BUplinkPayload"]]
290 |(% style="width:160px" %)0x02|(% style="width:163px" %)Reply configures info|(% style="width:173px" %)[[Configure Info Payload>>||anchor="H3.4GetFirmwareVersionInfo"]]
291 |(% style="width:160px" %)0x03|(% style="width:163px" %)Reply Calibration Info|(% style="width:173px" %)[[Calibration Payload>>||anchor="H2.7Calibration"]]
292
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 (((
386 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. 
387 )))
388 )))
389
390
391 === 2.6.2 Measurement ===
392
393
394 (((
395 (% style="color:#4f81bd" %)**Measurement the soil surface:**
396 )))
397
398 (((
399 [[image:1654592946732-634.png]]
400
401
402 )))
403
404 (((
405 Choose the proper measuring position. Split the surface soil according to the measured deep.
406 )))
407
408 (((
409 Put pure water, or rainwater to make the soil of measurement point to moist mud. Remove rocks or hard things.
410 )))
411
412 (((
413 Slowly insert the probe to the measure point. Don't use large force which will break the probe. Make sure not shake when inserting.
414 )))
415
416 (((
417 Put soil over the probe after insert. And start to measure.
418 )))
419
420 (((
421
422 )))
423
424 (((
425 (% style="color:#4f81bd" %)**Measurement inside soil:**
426 )))
427
428 (((
429 Dig a hole with diameter > 20CM.
430 )))
431
432 (((
433 Insert the probe inside, method like measure the surface.
434 )))
435
436
437 === 2.6.3 Maintain Probe ===
438
439
440 1. (((
441 pH probe electrode is fragile and no strong. User must avoid strong force or hitting it.
442 )))
443 1. (((
444 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.
445 )))
446 1. (((
447 Probe reference electrode is also no strong, need to avoid strong force or hitting.
448 )))
449 1. (((
450 User should keep reference electrode wet while not use.
451 )))
452 1. (((
453 Avoid the probes to touch oily matter. Which will cause issue in accuracy.
454 )))
455 1. (((
456 The probe is IP68 can be put in water.
457
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="5" style="background-color:#f2f2f2; width:520px" %)
473 |(% style="background-color:#d9e2f3; color:#0070c0; width:120px" %)**pH buffer solution**|(% style="background-color:#d9e2f3; color:#0070c0; width:150px" %)**AT Command to calibrate**|(% style="background-color:#d9e2f3; color:#0070c0; width:150px" %)**Downlink Command**|(% style="background-color:#d9e2f3; color:#0070c0; 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="5" style="background-color:#f2f2f2; width:500px" %)
502 |=(% style="width: 60px;background-color:#D9E2F3;color:#0070C0" %)(((
503 **Size(bytes)**
504 )))|=(% style="width: 100px;background-color:#D9E2F3;color:#0070C0" %)**1**|=(% style="width: 100px;background-color:#D9E2F3;color:#0070C0" %)**1**|=(% style="width: 100px;background-color:#D9E2F3;color:#0070C0" %)**1**|=(% style="width: 50px;background-color:#D9E2F3;color:#0070C0" %)**7**|=(% style="width: 90px;background-color:#D9E2F3;color:#0070C0" %)**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="5" style="background-color:#f2f2f2; width:480px" %)
517 |=(% style="width: 183px; background-color:#D9E2F3;color:#0070C0" %)**Downlink Control Type**|=(% style="width: 55px; background-color:#D9E2F3;color:#0070C0" %)FPort|=(% style="width: 93px; background-color:#D9E2F3;color:#0070C0" %)**Type Code**|=(% style="width: 146px; background-color: rgb(217, 226, 243); color: rgb(0, 112, 192);" %)**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 * Reply to non-confirmed packet: 14 00
522
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 * 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)
609
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 * 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)
720
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 )))
852
853 (((
854 (% style="color:blue" %)**Uplink: (OTAA mode, channel added by JoinAccept message)**
855 )))
856
857 (((
858 922.1 - SF7BW125 to SF12BW125
859 )))
860
861 (((
862 922.3 - SF7BW125 to SF12BW125
863 )))
864
865 (((
866 922.5 - SF7BW125 to SF12BW125
867 )))
868
869 (((
870 922.7 - SF7BW125 to SF12BW125
871 )))
872
873 (((
874 922.9 - SF7BW125 to SF12BW125
875 )))
876
877 (((
878 923.1 - SF7BW125 to SF12BW125
879 )))
880
881 (((
882 923.3 - SF7BW125 to SF12BW125
883 )))
884
885 (((
886
887 )))
888
889 (((
890 (% style="color:blue" %)**Downlink:**
891 )))
892
893 (((
894 Uplink channels 1-7(RX1)
895 )))
896
897 (((
898 921.9 - SF12BW125 (RX2 downlink only; SF12BW125 might be changed to SF9BW125)
899 )))
900
901
902 === 2.8.7 IN865-867 (IN865) ===
903
904
905 (((
906 (% style="color:blue" %)**Uplink:**
907 )))
908
909 (((
910 865.0625 - SF7BW125 to SF12BW125
911 )))
912
913 (((
914 865.4025 - SF7BW125 to SF12BW125
915 )))
916
917 (((
918 865.9850 - SF7BW125 to SF12BW125
919 )))
920
921 (((
922
923 )))
924
925 (((
926 (% style="color:blue" %)**Downlink:**
927 )))
928
929 (((
930 Uplink channels 1-3 (RX1)
931 )))
932
933 (((
934 866.550 - SF10BW125 (RX2)
935 )))
936
937
938 == 2.9 LED Indicator ==
939
940
941 The LSPH01 has an internal LED which is to show the status of different state.
942
943 * The sensor is detected when the device is turned on, and it will flash 4 times quickly when it is detected.
944 * Blink once when device transmit a packet.
945
946
947 == 2.10 ​Firmware Change Log ==
948
949
950 **Firmware download link: **[[https:~~/~~/www.dropbox.com/sh/xtm5tw37mewaw99/AAD0uy06odmreQQ7vMzZYVIGa?dl=0>>https://www.dropbox.com/sh/xtm5tw37mewaw99/AAD0uy06odmreQQ7vMzZYVIGa?dl=0]]
951
952 **Firmware Upgrade Method: **[[Firmware Upgrade Instruction>>path:/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/]]
953
954
955 = 3. Configure LSPH01 via AT Command or LoRaWAN Downlink =
956
957
958 (((
959 Use can configure LSPH01 via AT Command or LoRaWAN Downlink.
960 )))
961
962 * (((
963 AT Command Connection: See [[FAQ>>||anchor="H6.FAQ"]].
964 )))
965 * (((
966 LoRaWAN Downlink instruction for different platforms: [[IoT LoRaWAN Server>>path:/xwiki/bin/view/Main/]]
967 )))
968
969 (((
970 There are two kinds of commands to configure LSPH01, they are:
971 )))
972
973 * (((
974 (% style="color:#4f81bd" %)** General Commands**.
975 )))
976
977 (((
978 These commands are to configure:
979 )))
980
981 * (((
982 General system settings like: uplink interval.
983 )))
984 * (((
985 LoRaWAN protocol & radio related command.
986 )))
987
988 (((
989 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/]]
990 )))
991
992 (((
993
994 )))
995
996 * (((
997 (% style="color:#4f81bd" %)** Commands special design for LSPH01**
998 )))
999
1000 (((
1001 These commands only valid for LSPH01, as below:
1002 )))
1003
1004
1005 == 3.1 Set Transmit Interval Time ==
1006
1007
1008 Feature: Change LoRaWAN End Node Transmit Interval.
1009
1010 (% style="color:#037691" %)**AT Command: AT+TDC**
1011
1012 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
1013 |=(% style="width: 156px;background-color:#D9E2F3;color:#0070C0" %)**Command Example**|=(% style="width: 137px;background-color:#D9E2F3;color:#0070C0" %)**Function**|=(% style="background-color:#D9E2F3;color:#0070C0" %)**Response**
1014 |(% style="width:156px" %)AT+TDC=?|(% style="width:137px" %)Show current transmit Interval|(((
1015 30000
1016 OK
1017 the interval is 30000ms = 30s
1018 )))
1019 |(% style="width:156px" %)AT+TDC=60000|(% style="width:137px" %)Set Transmit Interval|(((
1020 OK
1021 Set transmit interval to 60000ms = 60 seconds​
1022 )))
1023
1024 (((
1025 (% style="color:#037691" %)**Downlink Command: 0x01**
1026 )))
1027
1028 (((
1029 Format: Command Code (0x01) followed by 3 bytes time value.
1030 )))
1031
1032 (((
1033 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
1034 )))
1035
1036 * (((
1037 Example 1: Downlink Payload: 0100001E  ~/~/ Set Transmit Interval (TDC) = 30 seconds
1038 )))
1039 * (((
1040 Example 2: Downlink Payload: 0100003C  ~/~/ Set Transmit Interval (TDC) = 60 seconds
1041
1042
1043
1044 )))
1045
1046 == 3.2 Set Interrupt Mode ==
1047
1048
1049 Feature, Set Interrupt mode for GPIO_EXIT.
1050
1051 (% style="color:#037691" %)**AT Command: AT+INTMOD**
1052
1053 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
1054 |=(% style="width: 154px;background-color:#D9E2F3;color:#0070C0" %)**Command Example**|=(% style="width: 196px;background-color:#D9E2F3;color:#0070C0" %)**Function**|=(% style="width: 157px;background-color:#D9E2F3;color:#0070C0" %)**Response**
1055 |(% style="width:154px" %)AT+INTMOD=?|(% style="width:196px" %)Show current interrupt mode|(% style="width:157px" %)(((
1056 0
1057 OK
1058 the mode is 0 =No interruption
1059 )))
1060 |(% style="width:154px" %)AT+INTMOD=2|(% style="width:196px" %)(((
1061 Set Transmit Interval
1062 0. (Disable Interrupt),
1063 ~1. (Trigger by rising and falling edge)
1064 2. (Trigger by falling edge)
1065 3. (Trigger by rising edge)
1066 )))|(% style="width:157px" %)OK
1067
1068 (((
1069 (% style="color:#037691" %)**Downlink Command: 0x06**
1070 )))
1071
1072 (((
1073 Format: Command Code (0x06) followed by 3 bytes.
1074 )))
1075
1076 (((
1077 This means that the interrupt mode of the end node is set to 0x000003=3 (rising edge trigger), and the type code is 06.
1078 )))
1079
1080 * (((
1081 Example 1: Downlink Payload: 06000000  ~/~/ Turn off interrupt mode
1082 )))
1083 * (((
1084 Example 2: Downlink Payload: 06000003  ~/~/  Set the interrupt mode to rising edge trigger
1085 )))
1086
1087 (((
1088
1089 )))
1090
1091
1092 == 3.3 Calibrate Sensor ==
1093
1094
1095 Detail See [[Calibration Guide>>||anchor="H2.7Calibration"]] for the user of 0x13 and 0x14 downlink commands
1096
1097
1098 == 3.4 Get Firmware Version Info ==
1099
1100
1101 Feature: use downlink to get firmware version.
1102
1103 (% style="color:#037691" %)**Downlink Command: 0x26**
1104
1105 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
1106 |(% style="background-color:#d9e2f3; color:#0070c0; width:193px" %)**Downlink Control Type**|(% style="background-color:#d9e2f3; color:#0070c0; width:57px" %)**FPort**|(% style="background-color:#d9e2f3; color:#0070c0; width:91px" %)**Type Code**|(% style="background-color:#d9e2f3; color:#0070c0; width:159px" %)**Downlink payload size(bytes)**
1107 |(% style="width:193px" %)Get Firmware Version Info|(% style="width:57px" %)Any|(% style="width:91px" %)26|(% style="width:149px" %)2
1108
1109 * Reply to the confirmation package: 26 01
1110 * Reply to non-confirmed packet: 26 00
1111
1112 Device will send an uplink after got this downlink command. With below payload:
1113
1114 Configures info payload:
1115
1116 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:520px" %)
1117 |(% style="background-color:#d9e2f3; color:#0070c0; width:50px" %)**Size(bytes)**|(% style="background-color:#d9e2f3; color:#0070c0; width:70px" %)**1**|(% style="background-color:#d9e2f3; color:#0070c0; width:70px" %)**1**|(% style="background-color:#d9e2f3; color:#0070c0; width:50px" %)**1**|(% style="background-color:#d9e2f3; color:#0070c0; width:70px" %)**1**|(% style="background-color:#d9e2f3; color:#0070c0; width:60px" %)**1**|(% style="background-color:#d9e2f3; color:#0070c0; width:50px" %)**5**|(% style="background-color:#d9e2f3; color:#0070c0; width:100px" %)**1**
1118 |Value|Software Type|(((
1119 Frequency
1120 Band
1121 )))|Sub-band|(((
1122 Firmware
1123 Version
1124 )))|Sensor Type|Reserve|(((
1125 [[Message Type>>||anchor="H2.3.6MessageType"]]
1126 Always 0x02
1127 )))
1128
1129 (% style="color:#037691" %)**Software Type**(%%): Always 0x03 for LSPH01
1130
1131 (% style="color:#037691" %)**Frequency Band**:
1132
1133 *0x01: EU868
1134
1135 *0x02: US915
1136
1137 *0x03: IN865
1138
1139 *0x04: AU915
1140
1141 *0x05: KZ865
1142
1143 *0x06: RU864
1144
1145 *0x07: AS923
1146
1147 *0x08: AS923-1
1148
1149 *0x09: AS923-2
1150
1151 *0xa0: AS923-3
1152
1153
1154 (% style="color:#037691" %)**Sub-Band**(%%): value 0x00 ~~ 0x08
1155
1156 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
1157
1158 (% style="color:#037691" %)**Sensor Type**:
1159
1160 0x01: LSE01
1161
1162 0x02: LDDS75
1163
1164 0x03: LDDS20
1165
1166 0x04: LLMS01
1167
1168 0x05: LSPH01
1169
1170 0x06: LSNPK01
1171
1172 0x07: LDDS12
1173
1174
1175 = 4. Battery & Power Consumption =
1176
1177
1178 LSPH01 uses ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace.
1179
1180 [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
1181
1182
1183 = 5. Use AT Command =
1184
1185 == 5.1 Access AT Commands ==
1186
1187
1188 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.
1189
1190
1191 [[image:1654593668970-604.png]]
1192
1193
1194 **Connection:**
1195
1196 (% style="background-color:yellow" %)** USB TTL GND <~-~-~-~-> GND**
1197
1198 (% style="background-color:yellow" %)** USB TTL TXD  <~-~-~-~-> UART_RXD**
1199
1200 (% style="background-color:yellow" %)** USB TTL RXD  <~-~-~-~-> UART_TXD**
1201
1202
1203 (((
1204 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:
1205 )))
1206
1207
1208 [[image:1654593712276-618.png]]
1209
1210 Valid AT Command please check [[Configure Device>>||anchor="H3.ConfigureLSPH01viaATCommandorLoRaWANDownlink"]].
1211
1212
1213 = 6. FAQ =
1214
1215 == 6.1 How to change the LoRa Frequency Bands/Region ==
1216
1217
1218 You can follow the instructions for [[how to upgrade image>>||anchor="H2.10200BFirmwareChangeLog"]].
1219 When downloading the images, choose the required image file for download. ​
1220
1221
1222 = 7. Trouble Shooting =
1223
1224 == 7.1 AT Commands input doesn't work ==
1225
1226
1227 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.
1228
1229
1230 = 8. Order Info =
1231
1232
1233 Part Number: (% style="color:blue" %)**LSPH01-XX**
1234
1235
1236 (% style="color:blue" %)**XX**(%%): The default frequency band
1237
1238 * (% style="color:red" %)**AS923**(%%):  LoRaWAN AS923 band
1239 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
1240 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
1241 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
1242 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
1243 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
1244 * (% style="color:red" %)**IN865**(%%):  LoRaWAN IN865 band
1245 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
1246
1247
1248 = 9. ​Packing Info =
1249
1250
1251 **Package Includes**:
1252
1253 * LSPH01 LoRaWAN Soil Ph Sensor x 1
1254
1255 **Dimension and weight**:
1256
1257 * Device Size: cm
1258 * Device Weight: g
1259 * Package Size / pcs : cm
1260 * Weight / pcs : g
1261
1262
1263 = 10. ​Support =
1264
1265
1266 * 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.
1267 * 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]].