Version 99.20 by Xiaoling on 2023/05/23 18:09

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:#4f81bd" %)**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 soil's** (% style="color:#4f81bd" %)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:#4f81bd" %)**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 (((
390 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. 
391 )))
392 )))
393
394
395 === 2.6.2 Measurement ===
396
397
398 (((
399 (% style="color:#4f81bd" %)**Measurement the soil surface:**
400 )))
401
402 (((
403 [[image:1654592946732-634.png]]
404
405
406 )))
407
408 (((
409 Choose the proper measuring position. Split the surface soil according to the measured deep.
410 )))
411
412 (((
413 Put pure water, or rainwater to make the soil of measurement point to moist mud. Remove rocks or hard things.
414 )))
415
416 (((
417 Slowly insert the probe to the measure point. Don't use large force which will break the probe. Make sure not shake when inserting.
418 )))
419
420 (((
421 Put soil over the probe after insert. And start to measure.
422 )))
423
424 (((
425
426 )))
427
428 (((
429 (% style="color:#4f81bd" %)**Measurement inside soil:**
430 )))
431
432 (((
433 Dig a hole with diameter > 20CM.
434 )))
435
436 (((
437 Insert the probe inside, method like measure the surface.
438 )))
439
440
441 === 2.6.3 Maintain Probe ===
442
443
444 1. (((
445 pH probe electrode is fragile and no strong. User must avoid strong force or hitting it.
446 )))
447 1. (((
448 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.
449 )))
450 1. (((
451 Probe reference electrode is also no strong, need to avoid strong force or hitting.
452 )))
453 1. (((
454 User should keep reference electrode wet while not use.
455 )))
456 1. (((
457 Avoid the probes to touch oily matter. Which will cause issue in accuracy.
458 )))
459 1. (((
460 The probe is IP68 can be put in water.
461
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
519 User can also send 0x14 downlink command to poll the current calibration payload.
520
521 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:480px" %)
522 |=(% 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)**
523 |(% style="width:183px" %)Get Calibration Version Info|(% style="width:55px" %)Any|(% style="width:93px" %)14|(% style="width:146px" %)2
524
525 * Reply to the confirmation package: 14 01
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 * 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)
615
616
617
618 === 2.8.3 CN470-510 (CN470) ===
619
620
621 (((
622 Used in China, Default use CHE=1
623 )))
624
625 (((
626 (% style="color:blue" %)**Uplink:**
627 )))
628
629 (((
630 486.3 - SF7BW125 to SF12BW125
631 )))
632
633 (((
634 486.5 - SF7BW125 to SF12BW125
635 )))
636
637 (((
638 486.7 - SF7BW125 to SF12BW125
639 )))
640
641 (((
642 486.9 - SF7BW125 to SF12BW125
643 )))
644
645 (((
646 487.1 - SF7BW125 to SF12BW125
647 )))
648
649 (((
650 487.3 - SF7BW125 to SF12BW125
651 )))
652
653 (((
654 487.5 - SF7BW125 to SF12BW125
655 )))
656
657 (((
658 487.7 - SF7BW125 to SF12BW125
659 )))
660
661 (((
662
663 )))
664
665 (((
666 (% style="color:blue" %)**Downlink:**
667 )))
668
669 (((
670 506.7 - SF7BW125 to SF12BW125
671 )))
672
673 (((
674 506.9 - SF7BW125 to SF12BW125
675 )))
676
677 (((
678 507.1 - SF7BW125 to SF12BW125
679 )))
680
681 (((
682 507.3 - SF7BW125 to SF12BW125
683 )))
684
685 (((
686 507.5 - SF7BW125 to SF12BW125
687 )))
688
689 (((
690 507.7 - SF7BW125 to SF12BW125
691 )))
692
693 (((
694 507.9 - SF7BW125 to SF12BW125
695 )))
696
697 (((
698 508.1 - SF7BW125 to SF12BW125
699 )))
700
701 (((
702 505.3 - SF12BW125 (RX2 downlink only)
703 )))
704
705
706 === 2.8.4 AU915-928(AU915) ===
707
708
709 (((
710 Frequency band as per definition in LoRaWAN 1.0.3 Regional document.
711 )))
712
713 (((
714 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.
715 )))
716
717 (((
718
719 )))
720
721 (((
722 After Join success, the end node will switch to the correct sub band by:
723 )))
724
725 * Check what sub-band the LoRaWAN server ask from the OTAA Join Accept message and switch to that sub-band
726 * 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)
727
728
729
730 === 2.8.5 AS920-923 & AS923-925 (AS923) ===
731
732
733 (((
734 (% style="color:blue" %)**Default Uplink channel:**
735 )))
736
737 (((
738 923.2 - SF7BW125 to SF10BW125
739 )))
740
741 (((
742 923.4 - SF7BW125 to SF10BW125
743 )))
744
745 (((
746
747 )))
748
749 (((
750 (% style="color:blue" %)**Additional Uplink Channel**:
751 )))
752
753 (((
754 (OTAA mode, channel added by JoinAccept message)
755 )))
756
757 (((
758
759 )))
760
761 (((
762 (% style="color:blue" %)**AS920~~AS923 for Japan, Malaysia, Singapore**:
763 )))
764
765 (((
766 922.2 - SF7BW125 to SF10BW125
767 )))
768
769 (((
770 922.4 - SF7BW125 to SF10BW125
771 )))
772
773 (((
774 922.6 - SF7BW125 to SF10BW125
775 )))
776
777 (((
778 922.8 - SF7BW125 to SF10BW125
779 )))
780
781 (((
782 923.0 - SF7BW125 to SF10BW125
783 )))
784
785 (((
786 922.0 - SF7BW125 to SF10BW125
787 )))
788
789 (((
790
791 )))
792
793 (((
794 (% style="color:blue" %)**AS923 ~~ AS925 for Brunei, Cambodia, Hong Kong, Indonesia, Laos, Taiwan, Thailand, Vietnam**:
795 )))
796
797 (((
798 923.6 - SF7BW125 to SF10BW125
799 )))
800
801 (((
802 923.8 - SF7BW125 to SF10BW125
803 )))
804
805 (((
806 924.0 - SF7BW125 to SF10BW125
807 )))
808
809 (((
810 924.2 - SF7BW125 to SF10BW125
811 )))
812
813 (((
814 924.4 - SF7BW125 to SF10BW125
815 )))
816
817 (((
818 924.6 - SF7BW125 to SF10BW125
819 )))
820
821 (((
822
823 )))
824
825 (((
826 (% style="color:blue" %)**Downlink:**
827 )))
828
829 (((
830 Uplink channels 1-8 (RX1)
831 )))
832
833 (((
834 923.2 - SF10BW125 (RX2)
835 )))
836
837
838 === 2.8.6 KR920-923 (KR920) ===
839
840
841 (((
842 (% style="color:blue" %)**Default channel:**
843 )))
844
845 (((
846 922.1 - SF7BW125 to SF12BW125
847 )))
848
849 (((
850 922.3 - SF7BW125 to SF12BW125
851 )))
852
853 (((
854 922.5 - SF7BW125 to SF12BW125
855 )))
856
857 (((
858
859 )))
860
861 (((
862 (% style="color:blue" %)**Uplink: (OTAA mode, channel added by JoinAccept message)**
863 )))
864
865 (((
866 922.1 - SF7BW125 to SF12BW125
867 )))
868
869 (((
870 922.3 - SF7BW125 to SF12BW125
871 )))
872
873 (((
874 922.5 - SF7BW125 to SF12BW125
875 )))
876
877 (((
878 922.7 - SF7BW125 to SF12BW125
879 )))
880
881 (((
882 922.9 - SF7BW125 to SF12BW125
883 )))
884
885 (((
886 923.1 - SF7BW125 to SF12BW125
887 )))
888
889 (((
890 923.3 - SF7BW125 to SF12BW125
891 )))
892
893 (((
894
895 )))
896
897 (((
898 (% style="color:blue" %)**Downlink:**
899 )))
900
901 (((
902 Uplink channels 1-7(RX1)
903 )))
904
905 (((
906 921.9 - SF12BW125 (RX2 downlink only; SF12BW125 might be changed to SF9BW125)
907 )))
908
909
910 === 2.8.7 IN865-867 (IN865) ===
911
912
913 (((
914 (% style="color:blue" %)**Uplink:**
915 )))
916
917 (((
918 865.0625 - SF7BW125 to SF12BW125
919 )))
920
921 (((
922 865.4025 - SF7BW125 to SF12BW125
923 )))
924
925 (((
926 865.9850 - SF7BW125 to SF12BW125
927 )))
928
929 (((
930
931 )))
932
933 (((
934 (% style="color:blue" %)**Downlink:**
935 )))
936
937 (((
938 Uplink channels 1-3 (RX1)
939 )))
940
941 (((
942 866.550 - SF10BW125 (RX2)
943 )))
944
945
946 == 2.9 LED Indicator ==
947
948
949 The LSPH01 has an internal LED which is to show the status of different state.
950
951 * The sensor is detected when the device is turned on, and it will flash 4 times quickly when it is detected.
952 * Blink once when device transmit a packet.
953
954
955
956 == 2.10 ​Firmware Change Log ==
957
958
959 **Firmware download link: **[[https:~~/~~/www.dropbox.com/sh/xtm5tw37mewaw99/AAD0uy06odmreQQ7vMzZYVIGa?dl=0>>https://www.dropbox.com/sh/xtm5tw37mewaw99/AAD0uy06odmreQQ7vMzZYVIGa?dl=0]]
960
961 **Firmware Upgrade Method: **[[Firmware Upgrade Instruction>>path:/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/]]
962
963
964 = 3. Configure LSPH01 via AT Command or LoRaWAN Downlink =
965
966
967 (((
968 Use can configure LSPH01 via AT Command or LoRaWAN Downlink.
969 )))
970
971 * (((
972 AT Command Connection: See [[FAQ>>||anchor="H6.FAQ"]].
973 )))
974 * (((
975 LoRaWAN Downlink instruction for different platforms: [[IoT LoRaWAN Server>>path:/xwiki/bin/view/Main/]]
976 )))
977
978 (((
979 There are two kinds of commands to configure LSPH01, they are:
980 )))
981
982 * (((
983 (% style="color:#4f81bd" %)** General Commands**.
984 )))
985
986 (((
987 These commands are to configure:
988 )))
989
990 * (((
991 General system settings like: uplink interval.
992 )))
993 * (((
994 LoRaWAN protocol & radio related command.
995 )))
996
997 (((
998 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/]]
999 )))
1000
1001 (((
1002
1003 )))
1004
1005 * (((
1006 (% style="color:#4f81bd" %)** Commands special design for LSPH01**
1007 )))
1008
1009 (((
1010 These commands only valid for LSPH01, as below:
1011 )))
1012
1013
1014 == 3.1 Set Transmit Interval Time ==
1015
1016
1017 Feature: Change LoRaWAN End Node Transmit Interval.
1018
1019 (% style="color:#037691" %)**AT Command: AT+TDC**
1020
1021 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
1022 |=(% 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**
1023 |(% style="width:156px" %)AT+TDC=?|(% style="width:137px" %)Show current transmit Interval|(((
1024 30000
1025 OK
1026 the interval is 30000ms = 30s
1027 )))
1028 |(% style="width:156px" %)AT+TDC=60000|(% style="width:137px" %)Set Transmit Interval|(((
1029 OK
1030 Set transmit interval to 60000ms = 60 seconds​
1031 )))
1032
1033 (((
1034 (% style="color:#037691" %)**Downlink Command: 0x01**
1035 )))
1036
1037 (((
1038 Format: Command Code (0x01) followed by 3 bytes time value.
1039 )))
1040
1041 (((
1042 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
1043 )))
1044
1045 * (((
1046 Example 1: Downlink Payload: 0100001E  ~/~/ Set Transmit Interval (TDC) = 30 seconds
1047 )))
1048 * (((
1049 Example 2: Downlink Payload: 0100003C  ~/~/ Set Transmit Interval (TDC) = 60 seconds
1050
1051
1052
1053 )))
1054
1055 == 3.2 Set Interrupt Mode ==
1056
1057
1058 Feature, Set Interrupt mode for GPIO_EXIT.
1059
1060 (% style="color:#037691" %)**AT Command: AT+INTMOD**
1061
1062 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
1063 |=(% 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**
1064 |(% style="width:154px" %)AT+INTMOD=?|(% style="width:196px" %)Show current interrupt mode|(% style="width:157px" %)(((
1065 0
1066 OK
1067 the mode is 0 =No interruption
1068 )))
1069 |(% style="width:154px" %)AT+INTMOD=2|(% style="width:196px" %)(((
1070 Set Transmit Interval
1071 0. (Disable Interrupt),
1072 ~1. (Trigger by rising and falling edge)
1073 2. (Trigger by falling edge)
1074 3. (Trigger by rising edge)
1075 )))|(% style="width:157px" %)OK
1076
1077 (((
1078 (% style="color:#037691" %)**Downlink Command: 0x06**
1079 )))
1080
1081 (((
1082 Format: Command Code (0x06) followed by 3 bytes.
1083 )))
1084
1085 (((
1086 This means that the interrupt mode of the end node is set to 0x000003=3 (rising edge trigger), and the type code is 06.
1087 )))
1088
1089 * (((
1090 Example 1: Downlink Payload: 06000000  ~/~/ Turn off interrupt mode
1091 )))
1092 * (((
1093 Example 2: Downlink Payload: 06000003  ~/~/  Set the interrupt mode to rising edge trigger
1094 )))
1095
1096 (((
1097
1098 )))
1099
1100
1101 == 3.3 Calibrate Sensor ==
1102
1103
1104 Detail See [[Calibration Guide>>||anchor="H2.7Calibration"]] for the user of 0x13 and 0x14 downlink commands
1105
1106
1107 == 3.4 Get Firmware Version Info ==
1108
1109
1110 Feature: use downlink to get firmware version.
1111
1112 (% style="color:#037691" %)**Downlink Command: 0x26**
1113
1114 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
1115 |(% 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)**
1116 |(% style="width:193px" %)Get Firmware Version Info|(% style="width:57px" %)Any|(% style="width:91px" %)26|(% style="width:149px" %)2
1117
1118 * Reply to the confirmation package: 26 01
1119 * Reply to non-confirmed packet: 26 00
1120
1121 Device will send an uplink after got this downlink command. With below payload:
1122
1123 Configures info payload:
1124
1125 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:520px" %)
1126 |(% 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**
1127 |Value|Software Type|(((
1128 Frequency
1129 Band
1130 )))|Sub-band|(((
1131 Firmware
1132 Version
1133 )))|Sensor Type|Reserve|(((
1134 [[Message Type>>||anchor="H2.3.6MessageType"]]
1135 Always 0x02
1136 )))
1137
1138 (% style="color:#037691" %)**Software Type**(%%): Always 0x03 for LSPH01
1139
1140 (% style="color:#037691" %)**Frequency Band**:
1141
1142 *0x01: EU868
1143
1144 *0x02: US915
1145
1146 *0x03: IN865
1147
1148 *0x04: AU915
1149
1150 *0x05: KZ865
1151
1152 *0x06: RU864
1153
1154 *0x07: AS923
1155
1156 *0x08: AS923-1
1157
1158 *0x09: AS923-2
1159
1160 *0xa0: AS923-3
1161
1162
1163 (% style="color:#037691" %)**Sub-Band**(%%): value 0x00 ~~ 0x08
1164
1165 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
1166
1167 (% style="color:#037691" %)**Sensor Type**:
1168
1169 0x01: LSE01
1170
1171 0x02: LDDS75
1172
1173 0x03: LDDS20
1174
1175 0x04: LLMS01
1176
1177 0x05: LSPH01
1178
1179 0x06: LSNPK01
1180
1181 0x07: LDDS12
1182
1183
1184 = 4. Battery & Power Consumption =
1185
1186
1187 LSPH01 uses ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace.
1188
1189 [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
1190
1191
1192 = 5. Use AT Command =
1193
1194 == 5.1 Access AT Commands ==
1195
1196
1197 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.
1198
1199
1200 [[image:1654593668970-604.png]]
1201
1202
1203 **Connection:**
1204
1205 (% style="background-color:yellow" %)** USB TTL GND <~-~-~-~-> GND**
1206
1207 (% style="background-color:yellow" %)** USB TTL TXD  <~-~-~-~-> UART_RXD**
1208
1209 (% style="background-color:yellow" %)** USB TTL RXD  <~-~-~-~-> UART_TXD**
1210
1211
1212 (((
1213 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:
1214 )))
1215
1216
1217 [[image:1654593712276-618.png]]
1218
1219 Valid AT Command please check [[Configure Device>>||anchor="H3.ConfigureLSPH01viaATCommandorLoRaWANDownlink"]].
1220
1221
1222 = 6. FAQ =
1223
1224 == 6.1 How to change the LoRa Frequency Bands/Region ==
1225
1226
1227 You can follow the instructions for [[how to upgrade image>>||anchor="H2.10200BFirmwareChangeLog"]].
1228 When downloading the images, choose the required image file for download. ​
1229
1230
1231 = 7. Trouble Shooting =
1232
1233 == 7.1 AT Commands input doesn't work ==
1234
1235
1236 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.
1237
1238
1239 = 8. Order Info =
1240
1241
1242 Part Number: (% style="color:blue" %)**LSPH01-XX**
1243
1244
1245 (% style="color:blue" %)**XX**(%%): The default frequency band
1246
1247 * (% style="color:red" %)**AS923**(%%):  LoRaWAN AS923 band
1248 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
1249 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
1250 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
1251 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
1252 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
1253 * (% style="color:red" %)**IN865**(%%):  LoRaWAN IN865 band
1254 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
1255
1256
1257
1258 = 9. ​Packing Info =
1259
1260
1261 **Package Includes**:
1262
1263 * LSPH01 LoRaWAN Soil Ph Sensor x 1
1264
1265 **Dimension and weight**:
1266
1267 * Device Size: cm
1268 * Device Weight: g
1269 * Package Size / pcs : cm
1270 * Weight / pcs : g
1271
1272
1273
1274 = 10. ​Support =
1275
1276
1277 * 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.
1278 * 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]].