Version 99.24 by Xiaoling on 2023/05/31 17:00

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 (% 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.
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
65 == 1.3 Probe Specification ==
66
67
68 (% style="color:#4f81bd" %)**Soil pH:**
69
70 * Range: 3 ~~ 10 pH
71 * Resolution: 0.01 pH
72 * Accuracy: ±2% under (0~~50 ℃, Accuracy will poor under 0 due to frozen)
73 * Temperature Compensation Range: 0 ~~ 50℃
74 * IP68 Protection
75 * Length: 3.5 meters
76
77 (% style="color:#4f81bd" %)**Soil Temperature:**
78
79 * Range -40℃~85℃
80 * Resolution: 0.1℃
81 * Accuracy: <±0.5℃(-10℃~40℃),<±0.8℃ (others)
82 * IP68 Protection
83 * Length: 3.5 meters
84
85
86
87 == 1.4 ​Applications ==
88
89
90 * Smart Agriculture
91
92
93
94 == 1.5 Pin mapping and power on ==
95
96
97 [[image:1654592472094-134.png]]
98
99
100 = 2. Configure LSPH01 to connect to LoRaWAN network =
101
102 == 2.1 How it works ==
103
104
105 (((
106 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.
107 )))
108
109 (((
110 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.
111 )))
112
113
114 == 2.2 ​Quick guide to connect to LoRaWAN server (OTAA) ==
115
116
117 (((
118 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.
119 )))
120
121 (((
122 [[image:1654592492399-921.png]]
123
124
125 )))
126
127 (((
128 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.
129
130
131 )))
132
133 (((
134 (% style="color:blue" %)**Step 1**(%%): Create a device in TTN with the OTAA keys from LSPH01.
135 )))
136
137 (((
138 Each LSPH01 is shipped with a sticker with the default device EUI as below:
139 )))
140
141 [[image:image-20230426084737-1.png||height="246" width="530"]](% style="display:none" %)
142
143 (% style="display:none" %) (%%)
144
145 You can enter this key in the LoRaWAN Server portal. Below is TTN screen shot:
146
147
148 **Register the device**
149
150
151 [[image:1654592600093-601.png]]
152
153
154
155 **Add APP EUI and DEV EUI**
156
157 [[image:1654592619856-881.png]]
158
159
160
161 **Add APP EUI in the application**
162
163 [[image:1654592632656-512.png]]
164
165
166
167 **Add APP KEY**
168
169 [[image:1654592653453-934.png]]
170
171
172 (% style="color:blue" %)**Step 2**(%%): Power on LSPH01
173
174
175 Put a Jumper on JP2 to power on the device. ( The Switch must be in FLASH position).
176
177 [[image:image-20220607170442-2.png]]
178
179
180 (((
181 (% 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.
182
183
184 )))
185
186 [[image:1654592697690-910.png]]
187
188
189 == 2.3 ​Uplink Payload ==
190
191
192 (((
193 LSPH01 will uplink payload via LoRaWAN with below payload format: 
194 )))
195
196 (((
197 Uplink payload includes in total 11 bytes.
198 )))
199
200 (((
201 Normal uplink payload:
202 )))
203
204 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:470px" %)
205 |=(% style="width: 60px;background-color:#D9E2F3;color:#0070C0" %)(((
206 **Size(bytes)**
207 )))|=(% 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**
208 |(% style="width:62.5px" %)**Value**|(% style="width:62.5px" %)[[BAT>>||anchor="H2.3.1BatteryInfo"]]|(% style="width:62.5px" %)(((
209 [[Temperature (Optional)>>||anchor="H2.3.2DS18B20Temperaturesensor"]]
210 )))|[[Soil pH>>||anchor="H2.3.3SoilpH"]]|[[Soil Temperature>>||anchor="H2.3.4SoilTemperature"]]|(((
211 [[Digital Interrupt (Optional)>>||anchor="H2.3.5InterruptPin"]]
212 )))|Reserve|(((
213 [[Message Type>>||anchor="H2.3.6MessageType"]]
214 )))
215
216 [[image:1654592721645-318.png]]
217
218
219 === 2.3.1 Battery Info ===
220
221
222 Check the battery voltage for LSPH01.
223
224 Ex1: 0x0B45 = 2885mV
225
226 Ex2: 0x0B49 = 2889mV
227
228
229 === 2.3.2 DS18B20 Temperature sensor ===
230
231
232 This is optional, user can connect external DS18B20 sensor to the +3.3v, 1-wire and GND pin . and this field will report temperature.
233
234
235 **Example**:
236
237 If payload is: 0105H:  (0105 & FC00 == 0), temp = 0105H /10 = 26.1 degree
238
239 If payload is: FF3FH :  (FF3F & FC00 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
240
241
242 === 2.3.3 Soil pH ===
243
244
245 Range: 0 ~~ 14 pH
246
247 **Example:**
248
249 (% style="color:#037691" %)** 0x02B7(H) = 695(D) = 6.95pH**
250
251
252 === 2.3.4 Soil Temperature ===
253
254
255 Get Soil Temperature 
256
257
258 **Example**:
259
260 If payload is: **0105H**:  (0105 & FC00 == 0), temp = 0105H /10 = 26.1 degree
261
262 If payload is: **FF3FH** :  (FF3F & FC00 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
263
264
265 === 2.3.5 Interrupt Pin ===
266
267
268 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.
269
270
271 **Example:**
272
273 0x00: Normal uplink packet.
274
275 0x01: Interrupt Uplink Packet.
276
277
278 === 2.3.6 Message Type ===
279
280
281 (((
282 For a normal uplink payload, the message type is always 0x01.
283 )))
284
285 (((
286 Valid Message Type:
287 )))
288
289
290 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:496px" %)
291 |=(% 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**
292 |(% style="width:160px" %)0x01|(% style="width:163px" %)Normal Uplink|(% style="width:173px" %)[[Normal Uplink Payload>>||anchor="H2.3200BUplinkPayload"]]
293 |(% style="width:160px" %)0x02|(% style="width:163px" %)Reply configures info|(% style="width:173px" %)[[Configure Info Payload>>||anchor="H3.4GetFirmwareVersionInfo"]]
294 |(% style="width:160px" %)0x03|(% style="width:163px" %)Reply Calibration Info|(% style="width:173px" %)[[Calibration Payload>>||anchor="H2.7Calibration"]]
295
296
297
298 === 2.3.7 Decode payload in The Things Network ===
299
300
301 While using TTN network, you can add the payload format to decode the payload.
302
303
304 [[image:1654592762713-715.png]]
305
306 (((
307 The payload decoder function for TTN is here:
308 )))
309
310 (((
311 LSPH01 TTN Payload Decoder:  [[https:~~/~~/github.com/dragino/dragino-end-node-decoder>>https://github.com/dragino/dragino-end-node-decoder]]
312 )))
313
314
315 == 2.4 Uplink Interval ==
316
317
318 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"]]
319
320
321 == 2.5 ​Show Data in DataCake IoT Server ==
322
323
324 (((
325 [[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:
326 )))
327
328 (((
329
330 )))
331
332 (((
333 (% style="color:blue" %)**Step 1**(%%)**: Be sure that your device is programmed and properly connected to the network at this time.**
334 )))
335
336 (((
337 (% 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:**
338 )))
339
340
341 [[image:1654592790040-760.png]]
342
343
344 [[image:1654592800389-571.png]]
345
346
347 (% style="color:blue" %)**Step 3**(%%)**: Create an account or log in Datacake.**
348
349 (% style="color:blue" %)**Step 4**(%%)**: Create LSPH01 product.**
350
351 [[image:1654592819047-535.png]]
352
353
354 [[image:1654592833877-762.png]]
355
356
357 [[image:1654592856403-259.png]]
358
359
360 (((
361 (% style="color:blue" %)**Step 5**(%%)**: add payload decode**
362 )))
363
364 (((
365 Download Datacake decoder from: [[https:~~/~~/www.dropbox.com/sh/pj7cgmgqg3gx3ta/AABYFbg1DVOOR9Hmr1mLSBkga?dl=0>>url:https://www.dropbox.com/sh/pj7cgmgqg3gx3ta/AABYFbg1DVOOR9Hmr1mLSBkga?dl=0]]
366 )))
367
368
369 [[image:1654592878525-845.png]]
370
371 [[image:1654592892967-474.png]]
372
373
374 [[image:1654592905354-123.png]]
375
376
377 After added, the sensor data arrive TTN, it will also arrive and show in Mydevices.
378
379
380 [[image:1654592917530-261.png]]
381
382
383 == 2.6 Installation and Maintain ==
384
385 === 2.6.1 Before measurement ===
386
387
388 (((
389 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. 
390 )))
391
392
393 === 2.6.2 Measurement ===
394
395
396 (((
397 (% style="color:blue" %)**Measurement the soil surface:**
398 )))
399
400 (((
401 [[image:1654592946732-634.png]]
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:blue" %)**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 (((
441 ~1. pH probe electrode is fragile and no strong. User must avoid strong force or hitting it.
442 )))
443
444 (((
445 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.
446 )))
447
448 (((
449 3. Probe reference electrode is also no strong, need to avoid strong force or hitting.
450 )))
451
452 (((
453 4. User should keep reference electrode wet while not use.
454 )))
455
456 (((
457 5. Avoid the probes to touch oily matter. Which will cause issue in accuracy.
458 )))
459
460 (((
461 6. The probe is IP68 can be put in water.
462
463
464 )))
465
466 == 2.7 Calibration ==
467
468
469 (((
470 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).
471 )))
472
473 (((
474 After stable, user can use below command to calibrate.
475
476 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:520px" %)
477 |(% 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**
478 |(% style="width:149px" %)4.00|(% style="width:197px" %)AT+PHCAL=4|(% style="width:206px" %)(((
479 0x13 04
480 Reply with Calibrate payload
481 )))|(% style="width:136px" %)(((
482 AT+PHCAL=?
483 Example 41,61,91
484 )))
485 |(% style="width:149px" %)6.86|(% style="width:197px" %)AT+PHCAL=6|(% style="width:206px" %)(((
486 0x13 06
487 Reply with Calibrate payload
488 )))|(% style="width:136px" %)AT+PHCAL=?
489 |(% style="width:149px" %)9.18|(% style="width:197px" %)AT+PHCAL=9|(% style="width:206px" %)(((
490 0x13 09
491 Reply with Calibrate payload
492 )))|(% style="width:136px" %)AT+PHCAL=?
493 |(% style="width:149px" %)Factory Default|(% style="width:197px" %)AT+PHCAL=15|(% style="width:206px" %)(((
494 0x13 15
495 Reply with Calibrate payload
496 )))|(% style="width:136px" %)(((
497 AT+PHCAL=?
498 Example 151
499 )))
500 )))
501
502
503 (% style="color:#037691" %)**Calibration Payload**
504
505 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
506 |=(% style="width: 60px;background-color:#D9E2F3;color:#0070C0" %)(((
507 **Size(bytes)**
508 )))|=(% 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**
509 |Value|(((
510 PH4 Calibrate value
511 )))|PH6.86 Calibrate value|(((
512 PH9.18 Calibrate value
513 )))|Reserve|(((
514 [[Message Type>>||anchor="H2.3.6MessageType"]]
515 Always 0x03
516 )))
517
518 User can also send 0x14 downlink command to poll the current calibration payload.
519
520 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:480px" %)
521 |=(% 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)**
522 |(% style="width:183px" %)Get Calibration Version Info|(% style="width:55px" %)Any|(% style="width:93px" %)14|(% style="width:146px" %)2
523
524 * Reply to the confirmation package: 14 01
525
526 * Reply to non-confirmed packet: 14 00
527
528
529
530 == 2.8 Frequency Plans ==
531
532
533 (((
534 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.
535 )))
536
537
538 === 2.8.1 EU863-870 (EU868) ===
539
540
541 (((
542 (% style="color:blue" %)**Uplink:**
543 )))
544
545 (((
546 868.1 - SF7BW125 to SF12BW125
547 )))
548
549 (((
550 868.3 - SF7BW125 to SF12BW125 and SF7BW250
551 )))
552
553 (((
554 868.5 - SF7BW125 to SF12BW125
555 )))
556
557 (((
558 867.1 - SF7BW125 to SF12BW125
559 )))
560
561 (((
562 867.3 - SF7BW125 to SF12BW125
563 )))
564
565 (((
566 867.5 - SF7BW125 to SF12BW125
567 )))
568
569 (((
570 867.7 - SF7BW125 to SF12BW125
571 )))
572
573 (((
574 867.9 - SF7BW125 to SF12BW125
575 )))
576
577 (((
578 868.8 - FSK
579 )))
580
581 (((
582
583 )))
584
585 (((
586 (% style="color:blue" %)**Downlink:**
587 )))
588
589 (((
590 Uplink channels 1-9 (RX1)
591 )))
592
593 (((
594 869.525 - SF9BW125 (RX2 downlink only)
595 )))
596
597
598 === 2.8.2 US902-928(US915) ===
599
600
601 (((
602 Used in USA, Canada and South America. Frequency band as per definition in LoRaWAN 1.0.3 Regional document.
603 )))
604
605 (((
606 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.
607 )))
608
609 (((
610 After Join success, the end node will switch to the correct sub band by:
611 )))
612
613 * Check what sub-band the LoRaWAN server ask from the OTAA Join Accept message and switch to that sub-band
614
615 * 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)
616
617
618
619 === 2.8.3 CN470-510 (CN470) ===
620
621
622 (((
623 Used in China, Default use CHE=1
624 )))
625
626 (((
627 (% style="color:blue" %)**Uplink:**
628 )))
629
630 (((
631 486.3 - SF7BW125 to SF12BW125
632 )))
633
634 (((
635 486.5 - SF7BW125 to SF12BW125
636 )))
637
638 (((
639 486.7 - SF7BW125 to SF12BW125
640 )))
641
642 (((
643 486.9 - SF7BW125 to SF12BW125
644 )))
645
646 (((
647 487.1 - SF7BW125 to SF12BW125
648 )))
649
650 (((
651 487.3 - SF7BW125 to SF12BW125
652 )))
653
654 (((
655 487.5 - SF7BW125 to SF12BW125
656 )))
657
658 (((
659 487.7 - SF7BW125 to SF12BW125
660 )))
661
662 (((
663
664 )))
665
666 (((
667 (% style="color:blue" %)**Downlink:**
668 )))
669
670 (((
671 506.7 - SF7BW125 to SF12BW125
672 )))
673
674 (((
675 506.9 - SF7BW125 to SF12BW125
676 )))
677
678 (((
679 507.1 - SF7BW125 to SF12BW125
680 )))
681
682 (((
683 507.3 - SF7BW125 to SF12BW125
684 )))
685
686 (((
687 507.5 - SF7BW125 to SF12BW125
688 )))
689
690 (((
691 507.7 - SF7BW125 to SF12BW125
692 )))
693
694 (((
695 507.9 - SF7BW125 to SF12BW125
696 )))
697
698 (((
699 508.1 - SF7BW125 to SF12BW125
700 )))
701
702 (((
703 505.3 - SF12BW125 (RX2 downlink only)
704 )))
705
706
707 === 2.8.4 AU915-928(AU915) ===
708
709
710 (((
711 Frequency band as per definition in LoRaWAN 1.0.3 Regional document.
712 )))
713
714 (((
715 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.
716 )))
717
718 (((
719
720 )))
721
722 (((
723 After Join success, the end node will switch to the correct sub band by:
724 )))
725
726 * Check what sub-band the LoRaWAN server ask from the OTAA Join Accept message and switch to that sub-band
727
728 * 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)
729
730
731
732 === 2.8.5 AS920-923 & AS923-925 (AS923) ===
733
734
735 (((
736 (% style="color:blue" %)**Default Uplink channel:**
737 )))
738
739 (((
740 923.2 - SF7BW125 to SF10BW125
741 )))
742
743 (((
744 923.4 - SF7BW125 to SF10BW125
745 )))
746
747 (((
748
749 )))
750
751 (((
752 (% style="color:blue" %)**Additional Uplink Channel**:
753 )))
754
755 (((
756 (OTAA mode, channel added by JoinAccept message)
757 )))
758
759 (((
760
761 )))
762
763 (((
764 (% style="color:blue" %)**AS920~~AS923 for Japan, Malaysia, Singapore**:
765 )))
766
767 (((
768 922.2 - SF7BW125 to SF10BW125
769 )))
770
771 (((
772 922.4 - SF7BW125 to SF10BW125
773 )))
774
775 (((
776 922.6 - SF7BW125 to SF10BW125
777 )))
778
779 (((
780 922.8 - SF7BW125 to SF10BW125
781 )))
782
783 (((
784 923.0 - SF7BW125 to SF10BW125
785 )))
786
787 (((
788 922.0 - SF7BW125 to SF10BW125
789 )))
790
791 (((
792
793 )))
794
795 (((
796 (% style="color:blue" %)**AS923 ~~ AS925 for Brunei, Cambodia, Hong Kong, Indonesia, Laos, Taiwan, Thailand, Vietnam**:
797 )))
798
799 (((
800 923.6 - SF7BW125 to SF10BW125
801 )))
802
803 (((
804 923.8 - SF7BW125 to SF10BW125
805 )))
806
807 (((
808 924.0 - SF7BW125 to SF10BW125
809 )))
810
811 (((
812 924.2 - SF7BW125 to SF10BW125
813 )))
814
815 (((
816 924.4 - SF7BW125 to SF10BW125
817 )))
818
819 (((
820 924.6 - SF7BW125 to SF10BW125
821 )))
822
823 (((
824
825 )))
826
827 (((
828 (% style="color:blue" %)**Downlink:**
829 )))
830
831 (((
832 Uplink channels 1-8 (RX1)
833 )))
834
835 (((
836 923.2 - SF10BW125 (RX2)
837 )))
838
839
840 === 2.8.6 KR920-923 (KR920) ===
841
842
843 (((
844 (% style="color:blue" %)**Default channel:**
845 )))
846
847 (((
848 922.1 - SF7BW125 to SF12BW125
849 )))
850
851 (((
852 922.3 - SF7BW125 to SF12BW125
853 )))
854
855 (((
856 922.5 - SF7BW125 to SF12BW125
857 )))
858
859
860 (((
861 (% style="color:blue" %)**Uplink: (OTAA mode, channel added by JoinAccept message)**
862 )))
863
864 (((
865 922.1 - SF7BW125 to SF12BW125
866 )))
867
868 (((
869 922.3 - SF7BW125 to SF12BW125
870 )))
871
872 (((
873 922.5 - SF7BW125 to SF12BW125
874 )))
875
876 (((
877 922.7 - SF7BW125 to SF12BW125
878 )))
879
880 (((
881 922.9 - SF7BW125 to SF12BW125
882 )))
883
884 (((
885 923.1 - SF7BW125 to SF12BW125
886 )))
887
888 (((
889 923.3 - SF7BW125 to SF12BW125
890 )))
891
892
893 (((
894 (% style="color:blue" %)**Downlink:**
895 )))
896
897 (((
898 Uplink channels 1-7(RX1)
899 )))
900
901 (((
902 921.9 - SF12BW125 (RX2 downlink only; SF12BW125 might be changed to SF9BW125)
903 )))
904
905
906 === 2.8.7 IN865-867 (IN865) ===
907
908
909 (((
910 (% style="color:blue" %)**Uplink:**
911 )))
912
913 (((
914 865.0625 - SF7BW125 to SF12BW125
915 )))
916
917 (((
918 865.4025 - SF7BW125 to SF12BW125
919 )))
920
921 (((
922 865.9850 - SF7BW125 to SF12BW125
923 )))
924
925
926 (((
927 (% style="color:blue" %)**Downlink:**
928 )))
929
930 (((
931 Uplink channels 1-3 (RX1)
932 )))
933
934 (((
935 866.550 - SF10BW125 (RX2)
936 )))
937
938
939 == 2.9 LED Indicator ==
940
941
942 The LSPH01 has an internal LED which is to show the status of different state.
943
944 * The sensor is detected when the device is turned on, and it will flash 4 times quickly when it is detected.
945
946 * Blink once when device transmit a packet.
947
948
949
950 == 2.10 ​Firmware Change Log ==
951
952
953 **Firmware download link: **[[https:~~/~~/www.dropbox.com/sh/xtm5tw37mewaw99/AAD0uy06odmreQQ7vMzZYVIGa?dl=0>>https://www.dropbox.com/sh/xtm5tw37mewaw99/AAD0uy06odmreQQ7vMzZYVIGa?dl=0]]
954
955 **Firmware Upgrade Method: **[[Firmware Upgrade Instruction>>path:/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/]]
956
957
958 = 3. Configure LSPH01 via AT Command or LoRaWAN Downlink =
959
960
961 (((
962 Use can configure LSPH01 via AT Command or LoRaWAN Downlink.
963 )))
964
965 * (((
966 AT Command Connection: See [[FAQ>>||anchor="H6.FAQ"]].
967 )))
968 * (((
969 LoRaWAN Downlink instruction for different platforms: [[IoT LoRaWAN Server>>path:/xwiki/bin/view/Main/]]
970 )))
971
972 (((
973 There are two kinds of commands to configure LSPH01, they are:
974 )))
975
976 * (((
977 (% style="color:#4f81bd" %)** General Commands**.
978 )))
979
980 (((
981 These commands are to configure:
982 )))
983
984 * (((
985 General system settings like: uplink interval.
986 )))
987 * (((
988 LoRaWAN protocol & radio related command.
989 )))
990
991 (((
992 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/]]
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 == 3.3 Calibrate Sensor ==
1091
1092
1093 Detail See [[Calibration Guide>>||anchor="H2.7Calibration"]] for the user of 0x13 and 0x14 downlink commands
1094
1095
1096 == 3.4 Get Firmware Version Info ==
1097
1098
1099 Feature: use downlink to get firmware version.
1100
1101 (% style="color:#037691" %)**Downlink Command: 0x26**
1102
1103 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
1104 |(% 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)**
1105 |(% style="width:193px" %)Get Firmware Version Info|(% style="width:57px" %)Any|(% style="width:91px" %)26|(% style="width:149px" %)2
1106
1107 * Reply to the confirmation package: 26 01
1108
1109 * Reply to non-confirmed packet: 26 00
1110
1111 Device will send an uplink after got this downlink command. With below payload:
1112
1113 Configures info payload:
1114
1115 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:520px" %)
1116 |(% 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**
1117 |Value|Software Type|(((
1118 Frequency
1119 Band
1120 )))|Sub-band|(((
1121 Firmware
1122 Version
1123 )))|Sensor Type|Reserve|(((
1124 [[Message Type>>||anchor="H2.3.6MessageType"]]
1125 Always 0x02
1126 )))
1127
1128 (% style="color:#037691" %)**Software Type**(%%): Always 0x03 for LSPH01
1129
1130 (% style="color:#037691" %)**Frequency Band**:
1131
1132 *0x01: EU868
1133
1134 *0x02: US915
1135
1136 *0x03: IN865
1137
1138 *0x04: AU915
1139
1140 *0x05: KZ865
1141
1142 *0x06: RU864
1143
1144 *0x07: AS923
1145
1146 *0x08: AS923-1
1147
1148 *0x09: AS923-2
1149
1150 *0xa0: AS923-3
1151
1152
1153 (% style="color:#037691" %)**Sub-Band**(%%): value 0x00 ~~ 0x08
1154
1155 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
1156
1157 (% style="color:#037691" %)**Sensor Type**:
1158
1159 0x01: LSE01
1160
1161 0x02: LDDS75
1162
1163 0x03: LDDS20
1164
1165 0x04: LLMS01
1166
1167 0x05: LSPH01
1168
1169 0x06: LSNPK01
1170
1171 0x07: LDDS12
1172
1173
1174 = 4. Battery & Power Consumption =
1175
1176
1177 LSPH01 uses ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace.
1178
1179 [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
1180
1181
1182 = 5. Use AT Command =
1183
1184 == 5.1 Access AT Commands ==
1185
1186
1187 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.
1188
1189
1190 [[image:1654593668970-604.png]]
1191
1192
1193 **Connection:**
1194
1195 (% style="background-color:yellow" %)** USB TTL GND <~-~-~-~-> GND**
1196
1197 (% style="background-color:yellow" %)** USB TTL TXD  <~-~-~-~-> UART_RXD**
1198
1199 (% style="background-color:yellow" %)** USB TTL RXD  <~-~-~-~-> UART_TXD**
1200
1201
1202 (((
1203 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:
1204 )))
1205
1206
1207 [[image:1654593712276-618.png]]
1208
1209 Valid AT Command please check [[Configure Device>>||anchor="H3.ConfigureLSPH01viaATCommandorLoRaWANDownlink"]].
1210
1211
1212 = 6. FAQ =
1213
1214 == 6.1 How to change the LoRa Frequency Bands/Region ==
1215
1216
1217 You can follow the instructions for [[how to upgrade image>>||anchor="H2.10200BFirmwareChangeLog"]].
1218 When downloading the images, choose the required image file for download. ​
1219
1220
1221 = 7. Trouble Shooting =
1222
1223 == 7.1 AT Commands input doesn't work ==
1224
1225
1226 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.
1227
1228
1229 = 8. Order Info =
1230
1231
1232 Part Number: (% style="color:blue" %)**LSPH01-XX**
1233
1234
1235 (% style="color:blue" %)**XX**(%%): The default frequency band
1236
1237 * (% style="color:red" %)**AS923**(%%):  LoRaWAN AS923 band
1238 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
1239 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
1240 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
1241 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
1242 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
1243 * (% style="color:red" %)**IN865**(%%):  LoRaWAN IN865 band
1244 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
1245
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
1264 = 10. ​Support =
1265
1266
1267 * 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.
1268 * 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]].