Last modified by Mengting Qiu on 2023/12/14 11:15

From version 124.1
edited by Xiaoling
on 2023/11/28 15:11
Change comment: Uploaded new attachment "image-20231128151132-2.png", version {1}
To version 180.1
edited by Mengting Qiu
on 2023/12/14 11:15
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,1 +1,1 @@
1 -DS20L -- LoRaWAN Smart Distance Detector User Manual
1 +DS20L -- LoRaWAN Smart Distance Detector User Manual 01
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.Xiaoling
1 +XWiki.ting
Content
... ... @@ -8,7 +8,7 @@
8 8  
9 9  
10 10  
11 -**Table of Contents**
11 +**Table of Contents:(% style="display:none" %) (%%)**
12 12  
13 13  {{toc/}}
14 14  
... ... @@ -49,7 +49,6 @@
49 49  
50 50  == 1.3 Specification ==
51 51  
52 -
53 53  (% style="color:#037691" %)**LiDAR Sensor:**
54 54  
55 55  * Operation Temperature: -40 ~~ 80 °C
... ... @@ -65,7 +65,7 @@
65 65  
66 66  (% style="color:#037691" %)**Battery Power Mode:**
67 67  
68 -* Idle: 0.003 mA @ 3.3v
67 +* Idle: 3uA @ 3.3v
69 69  * Max : 360 mA
70 70  
71 71  (% style="color:#037691" %)**Continuously mode**:
... ... @@ -73,6 +73,21 @@
73 73  * Idle: 21 mA @ 3.3v
74 74  * Max : 360 mA
75 75  
75 +== 1.5 Use Case ==
76 +
77 +(% class="mark" %)**Regular Distance Detect**
78 +
79 +[[image:image-20231211220922-1.png||height="352" width="605"]]
80 +
81 +
82 +(% class="mark" %)**Counting / Alarm**
83 +
84 +[[image:image-20231211221253-2.png]]
85 +
86 +
87 +[[image:image-20231211221436-3.png]]
88 +
89 +
76 76  = 2. Configure DS20L to connect to LoRaWAN network =
77 77  
78 78  == 2.1 How it works ==
... ... @@ -91,7 +91,7 @@
91 91  
92 92  [[image:image-20231110102635-5.png||height="402" width="807"]](% style="display:none" %)
93 93  
94 -(% style="color:blue" %)**Step 1:**(%%) Create a device in TTN with the OTAA keys from DS20L.
108 +=== Step 1: Create a device in TTN with the OTAA keys from DS20L. ===
95 95  
96 96  Each DS20L is shipped with a sticker with the default device EUI as below:
97 97  
... ... @@ -98,41 +98,36 @@
98 98  [[image:image-20230426084152-1.png||alt="图片-20230426084152-1.png" height="233" width="502"]]
99 99  
100 100  
101 -You can enter this key in the LoRaWAN Server portal. Below is TTN screen shot:
115 +You can enter this key in the LoRaWAN Server portal. Below is TTN V3 screenshot:
102 102  
103 103  
104 104  (% style="color:blue" %)**Register the device**
105 105  
106 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/1654935135620-998.png?rev=1.1||alt="1654935135620-998.png"]]
120 +[[image:image-20231207144600-2.png||height="703" width="756"]]
107 107  
108 108  
109 -(% style="color:blue" %)**Add APP EUI and DEV EUI**
123 +(% style="color:blue" %)**Add DevEUI and AppKey**
110 110  
111 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/image-20220611161308-4.png?width=753&height=551&rev=1.1||alt="图片-20220611161308-4.png"]]
125 +[[image:image-20231207145121-5.png||height="540" width="756"]]
112 112  
113 113  
114 -(% style="color:blue" %)**Add APP EUI in the application**
115 115  
129 +=== Step 2: Activate DS20L ===
116 116  
117 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/image-20220611161308-5.png?width=742&height=601&rev=1.1||alt="图片-20220611161308-5.png"]]
118 -
119 -
120 -(% style="color:blue" %)**Add APP KEY**
121 -
122 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/image-20220611161308-6.png?width=744&height=485&rev=1.1||alt="图片-20220611161308-6.png"]]
123 -
124 -
125 -(% style="color:blue" %)**Step 2:**(%%) Activate on DS20L
126 -
127 127  [[image:image-20231128133704-1.png||height="189" width="441"]]
128 128  
129 129  Press the button for 5 seconds to activate the DS20L.
130 130  
135 +The switch is switched to (% style="color:blue" %)**E** (%%)and the external power supply is used.
136 +
137 +The switch is switched to (% style="color:blue" %)**I** (%%)and DS20L will be power by the built-in battery.
138 +
131 131  (% style="color:green" %)**Green led**(%%) will fast blink 5 times, device will enter (% style="color:blue" %)**OTA mode**(%%) for 3 seconds. And then start to JOIN LoRaWAN network. (% style="color:green" %)**Green led**(%%) will solidly turn on for 5 seconds after joined in network.
132 132  
133 133  After join success, it will start to upload messages to TTN and you can see the messages in the panel.
134 134  
135 135  
144 +
136 136  == 2.3 ​Uplink Payload ==
137 137  
138 138  === 2.3.1 Device Status, FPORT~=5 ===
... ... @@ -150,7 +150,7 @@
150 150  
151 151  Example parse in TTNv3
152 152  
153 -[[image:1701149922873-259.png]]
162 +[[image:image-20231206151412-3.png||height="179" width="1070"]]
154 154  
155 155  (% style="color:blue" %)**Sensor Model**(%%): For DS20L, this value is 0x21
156 156  
... ... @@ -206,45 +206,40 @@
206 206  === 2.3.2 Uplink Payload, FPORT~=2 ===
207 207  
208 208  
209 -(((
210 -DS20L will send this uplink **after** Device Status once join the LoRaWAN network successfully. And DS20L will:
218 +==== (% style="color:red" %)**AT+MOD~=1**(%%) ====
211 211  
212 -periodically send this uplink every 20 minutes, this interval [[can be changed>>||anchor="H3.3.1SetTransmitIntervalTime"]].
220 +Regularly detect distance and report. When the distance exceeds the limit, the alarm flag is set to 1, and the report can be triggered by external interrupts.
213 213  
214 -Uplink Payload totals 11 bytes.
215 -)))
222 +**Uplink Payload totals 10 bytes.**
216 216  
217 217  (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
218 -|=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
219 -**Size(bytes)**
220 -)))|=(% style="width: 30px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 70px;background-color:#4F81BD;color:white" %)**2**|=(% style="background-color:#4F81BD;color:white; width: 80px;" %)**1**|=(% style="background-color: #4F81BD;color:white; width: 70px;" %)**1**|=(% style="background-color: #4F81BD;color:white; width: 70px;" %)**1**
221 -|(% style="width:62.5px" %)Value|(% style="width:62.5px" %)[[BAT>>||anchor="HBatteryInfo"]]|(% style="width:62.5px" %)(((
222 -[[Temperature DS18B20>>||anchor="HDS18B20Temperaturesensor"]]
223 -)))|[[Distance>>||anchor="HDistance"]]|[[Distance signal strength>>||anchor="HDistancesignalstrength"]]|(% style="width:122px" %)(((
224 -[[Interrupt flag & Interrupt_level>>||anchor="HInterruptPin26A0InterruptLevel"]]
225 -)))|(% style="width:54px" %)[[LiDAR temp>>||anchor="HLiDARtemp"]]|(% style="width:96px" %)(((
226 -[[Message Type>>||anchor="HMessageType"]]
227 -)))
225 +|(% style="background-color:#4f81bd; color:White; width:60px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:White; width:30px" %)**2**|(% style="background-color:#4f81bd; color:White; width:130px" %)**1**|(% style="background-color:#4f81bd; color:White; width:70px" %)**2**|(% style="background-color:#4f81bd; color:White; width:100px" %)**1**|(% style="background-color:#4f81bd; color:White; width:120px" %)**4**
226 +|(% style="width:91px" %)Value|(% style="width:41px" %)BAT|(% style="width:176px" %)MOD+ Alarm+ Interrupt|(% style="width:74px" %)Distance|(% style="width:100px" %)Sensor State|(% style="width:119px" %)Interrupt Count
228 228  
229 -==== (% style="color:red" %)**MOD~=1** ====
228 +**MOD+ Alarm+ Interrupt:**
230 230  
231 -Regularly detect distance and report. When the distance exceeds the limit, the alarm flag is set to 1, and the report can be triggered by external interrupts.
230 +(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:400px" %)
231 +|(% style="background-color:#4f81bd; color:White; width:50px" %)**Size(bit)**|(% style="background-color:#4f81bd; color:White; width:60px" %)**[bit7:bit6]**|(% style="background-color:#4f81bd; color:White; width:70px" %)**bit5**|(% style="background-color:#4f81bd; color:White; width:120px" %)**bit4**
232 +|(% style="width:80px" %)Value|(% style="width:80px" %)MOD|(% style="width:89px" %)Digital Interrupt
233 + |(% style="width:167px" %)(((
234 +Distance Alarm
232 232  
233 -Uplink Payload totals 10 bytes.
236 +0: No Alarm;
234 234  
235 -(% border="1" cellspacing="4" style="width:510px;background-color:#f2f2f2" %)
236 -|(% style="width:60px;background-color:#4F81BD;color:white" %)**Size(bytes)**|(% style="width:30px;background-color:#4F81BD;color:white" %)**2**|(% style="width:130px;background-color:#4F81BD;color:white" %)**1**|(% style="width:70px;background-color:#4F81BD;color:white" %)**2**|(% style="width:100px;background-color:#4F81BD;color:white" %)**1**|(% style="width:120px;background-color:#4F81BD;color:white" %)**4**
237 -|(% style="width:91px" %)Value|(% style="width:41px" %)[[BAT>>||anchor="HBatteryInfo"]]|(% style="width:176px" %)MOD+ Alarm+Interrupt|(% style="width:74px" %)Distance|(% style="width:100px" %)Sensor State|(% style="width:119px" %)Interrupt Count
238 +1: Alarm
239 +)))
238 238  
241 +Example parse in TTNv3
239 239  
240 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png]]
243 +[[image:image-20231209152917-1.png||height="300" width="1172"]]
241 241  
242 -(% style="color:blue" %)**Battery Info**
245 +(% style="color:blue" %)**Battery Info:**
243 243  
244 244  Check the battery voltage for DS20L
245 245  
246 246  Ex1: 0x0E10 = 3600mV
247 247  
251 +
248 248  (% style="color:blue" %)**MOD & Alarm & Interrupt:**
249 249  
250 250  (% style="color:red" %)**MOD:**
... ... @@ -262,36 +262,80 @@
262 262  
263 263  Whether it is an external interrupt.
264 264  
265 -(% style="color:blue" %)**Distance info**
266 266  
270 +(% style="color:blue" %)**Distance info:**
271 +
267 267  **Example**:
268 268  
269 269  If payload is: 0708H: distance = 0708H = 1800 mm
270 270  
271 -(% style="color:blue" %)**Sensor State**
272 272  
273 -Ex1: 0x00: Normal collection distance
277 +(% style="color:blue" %)**Sensor State:**
274 274  
275 -Ex2 0x0x: Distance collection is wrong
279 +Ex1: 0x00: Distance Reading is valid
276 276  
277 -(% style="color:blue" %)**Interript Count**
281 +Ex2: 0x0x: Distance Reading is invalid
278 278  
283 +
284 +(% style="color:blue" %)**Interrupt Count:**
285 +
279 279  If payload is:000007D0H: count = 07D0H =2000
280 280  
281 281  
282 282  
290 +==== (% style="color:red" %)**AT+MOD~=2**(%%)** ** ====
283 283  
284 -==== (% style="color:red" %)**MOD=2** ====
285 285  
286 -Uninterrupted measurement. When the distance exceeds the limit, the output IO is set high and reports are reported every five minutes. The time can be set and powered by an external power supply.Uplink Payload totals 11bytes.
293 +The power consumption of uninterrupted measurement is high, and the device needs to use external power supply.(The switch is switched to E and the external power supply is used.)
287 287  
288 -(% border="1" cellspacing="4" style="width:510px;background-color:#f2f2f2" %)
289 -|(% style="width:70px;background-color:#4F81BD;color:white" %)**Size(bytes)**|(% style="width:40px;background-color:#4F81BD;color:white" %)**2**|(% style="width:130px;background-color:#4F81BD;color:white" %)**1**|(% style="width:130px;background-color:#4F81BD;color:white" %)**4**|(% style="width:70px;background-color:#4F81BD;color:white" %)**2**|(% style="width:70px;background-color:#4F81BD;color:white" %)**2**
290 -|(% style="width:91px" %)Value|(% style="width:41px" %)[[BAT>>||anchor="HBatteryInfo"]]|(% style="width:176px" %)MOD+Alarm+Do+Limit flag|(% style="width:74px" %)Distance Limit Alarm count|(% style="width:100px" %)Upper limit|(% style="width:119px" %)Lower limit
295 +[[image:image-20231128133704-1.png||height="189" width="441"]]
291 291  
292 292  
293 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png]]
298 +* **Set over-limit alarm mode: AT+DOL=3,500,244,**(% style="color:red" %)0(%%)**,120**
294 294  
300 +(% class="wikigeneratedid" id="HUninterruptedmeasurement.Whenthedistanceexceedsthelimit2CtheoutputIOissethighandreportsarereportedeveryfiveminutes.Thetimecanbesetandpoweredbyanexternalpowersupply.UplinkPayloadtotals11bytes." %)
301 +Continuously measurement with Alarm. When the distance exceeds the limit, the output IO high, instant alarm.
302 +
303 +(% class="wikigeneratedid" %)
304 +**Uplink Payload totals 9 bytes.**
305 +
306 +(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:515px" %)
307 +|(% style="background-color:#4f81bd; color:white; width:60px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:white; width:35px" %)**2**|(% style="background-color:#4f81bd; color:white; width:86px" %)**1**|(% style="background-color:#4f81bd; color:white; width:86px" %)**2**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**
308 +|(% style="width:60px" %)Value|(% style="width:41px" %)BAT|(% style="width:156px" %)MOD+ DO+ Alarm+ DO flag+ Limit flag|(% style="width:60px" %)Distance |(% style="width:86px" %)Upper limit|(% style="width:86px" %)Lower limit
309 +
310 +**MOD+DO+ Alarm+ Do flag+ Limit flag:**
311 +
312 +(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:515px" %)
313 +|(% style="background-color:#4f81bd; color:white; width:30px" %)**Size(bit)**|(% style="background-color:#4f81bd; color:white; width:35px" %)**[bit7:bit6]**|(% style="background-color:#4f81bd; color:white; width:90px" %)**bit5**|(% style="background-color:#4f81bd; color:white; width:90px" %)**bit4**|(% style="background-color:#4f81bd; color:white; width:120px" %)**bit3**|(% style="background-color:#4f81bd; color:white; width:100px" %)**[bit2:bit1:bit0]**
314 +|(% style="width:30px" %)Value|(% style="width:30px" %)MOD|(% style="width:60px" %)(((
315 +(((
316 +DO
317 +)))
318 +
319 +(((
320 +0:Within limit
321 +
322 +1:Out of limit
323 +)))
324 +)))|(% style="width:73px" %)(((
325 +Alarm
326 +
327 +0: No Alarm;
328 +
329 +1: Alarm
330 +)))|(% style="width:150px" %)(((
331 +DO flag
332 +
333 +0:the over-limit alarm mode
334 +
335 +1:the person or object count mode
336 +)))|(% style="width:103px" %)Limit flag
337 +(0~~3)
338 +
339 +Example parse in TTNv3
340 +
341 +[[image:image-20231209171127-3.png||height="374" width="1209"]]
342 +
295 295  (% style="color:blue" %)**MOD & Alarm & Do & Limit flag:**
296 296  
297 297  (% style="color:red" %)**MOD:**
... ... @@ -305,124 +305,162 @@
305 305  
306 306  When the detection distance exceeds the limit, the alarm flag is set to 1.
307 307  
308 -(% style="color:red" %)**Do:**
356 +(% style="color:red" %)**DO:**
309 309  
310 -When the distance exceeds the set threshold, pull the Do pin high.
358 +Shows the DO pin status, while there is alarm trigger, The DO pin will be set to high (3.3v), It will be set to 0 low level when there is no alarm.
311 311  
312 -(% style="color:red" %)**Limit flag:**
360 +(% style="color:red" %)**Threshold Flag for Alarm:**
313 313  
314 -Mode for setting threshold: 0~~5
362 +Mode for setting threshold: **0~~3**
315 315  
316 -0: does not use upper and lower limits
364 +**0:** Distance limit range is not enabled, alarm:0.
317 317  
318 -1: Use upper and lower limits
366 +**1:** Trigger Alarm if distance exceed the range between lower and upper.
319 319  
320 -2: is less than the lower limit value
368 +**2:** Trigger Alarm if distance smaller than the upper limit.
321 321  
322 -3: is greater than the lower limit value
370 +**3: **Trigger Alarm if distance bigger than the lower limit .
323 323  
324 -4: is less than the upper limit
325 325  
326 -5: is greater than the upper limit
373 +(% style="color:blue" %)**Distance:**
327 327  
375 + Actual sampling distance values.
328 328  
377 +**Example:**
378 +
379 +**AT+DOL=1,500,244,**(% style="color:red" %)0(%%)**,120  **
380 +
381 +The distance is detected every 120ms.
382 +
383 +When the actual detection value is within the range of [244mm,500mm], the data is uploaded in the normal TDC time.
384 +
385 +When the actual detection value is outside the range of [244mm,500mm], the uplink data will be immediately alerted.
386 +
387 +If payload is: 0708H: distance = 0708H = 1800 mm
388 +
389 +
329 329  (% style="color:blue" %)**Upper limit:**
330 330  
331 -The upper limit of the threshold cannot exceed 2000mm.
392 +Show the pre-set upper limit in Hex, Unit: mm.
332 332  
394 +Ex: 01F4(H)=500mm
395 +
396 +
333 333  (% style="color:blue" %)**Lower limit:**
334 334  
335 -The lower limit of the threshold cannot be less than 3mm.
399 +Show the pre-set lower limit in Hex, Unit: mm.
336 336  
401 +Ex: 0xF4(H)=244mm
337 337  
338 -=== 2.3.3 Historical measuring distance, FPORT~=3 ===
339 339  
404 +* **Set the person or object count mode: AT+DOL=1,500,244,**(% style="color:red" %)1(%%)**,120**
340 340  
341 -DS20L stores sensor values and users can retrieve these history values via the [[downlink command>>||anchor="H2.5.4Pollsensorvalue"]].
406 +Continuously measurement with Alarm, detect and count people or things passing by in distance limit mode.
342 342  
343 -The historical payload includes one or multiplies entries and every entry has the same payload as Real-Time measuring distance.
408 +**Uplink Payload totals 11 bytes.**
344 344  
345 -(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
346 -|=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
347 -**Size(bytes)**
348 -)))|=(% style="width: 80px;background-color:#4F81BD;color:white" %)1|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**1**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 70px;background-color:#4F81BD;color:white" %)**2**|=(% style="background-color:#4F81BD; color: white; width: 85px;" %)**1**|=(% style="background-color: #4F81BD; color: white; width: 85px;" %)4
349 -|(% style="width:62.5px" %)Value|(% style="width:62.5px" %)Interrupt flag & Interrupt_level|(% style="width:62.5px" %)(((
350 -Reserve(0xFF)
351 -)))|Distance|Distance signal strength|(% style="width:88px" %)(((
352 -LiDAR temp
353 -)))|(% style="width:85px" %)Unix TimeStamp
410 +(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:515px" %)
411 +|(% style="background-color:#4f81bd; color:white; width:70px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:white; width:40px" %)**2**|(% style="background-color:#4f81bd; color:white; width:130px" %)**1**|(% style="background-color:#4f81bd; color:white; width:130px" %)**4**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**
412 +|(% style="width:91px" %)Value|(% style="width:41px" %)BAT|(% style="width:210px" %)MOD+ DO+ Alarm+ DO flag+ Limit flag|(% style="width:176px" %)Distance limit alarm count|(% style="width:100px" %)Upper limit|(% style="width:119px" %)Lower limit
354 354  
355 -**Interrupt flag & Interrupt level:**
414 +**MOD+DO+ Alarm+ Do flag+ Limit flag:**
356 356  
357 -(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:480px" %)
358 -|=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
359 -**Size(bit)**
360 -)))|=(% style="width: 90px;background-color:#4F81BD;color:white" %)**bit7**|=(% style="width: 90px;background-color:#4F81BD;color:white" %)**bit6**|=(% style="width: 60px;background-color:#4F81BD;color:white" %)**[bit5:bit2]**|=(% style="width: 90px; background-color: #4F81BD; color: white;" %)**bit1**|=(% style="background-color: #4F81BD; color: white; width: 90px;" %)**bit0**
361 -|(% style="width:62.5px" %)Value|(% style="width:62.5px" %)No ACK message|(% style="width:62.5px" %)Poll Message Flag|Reserve|(% style="width:91px" %)Interrupt level|(% style="width:88px" %)(((
362 -Interrupt flag
416 +(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:515px" %)
417 +|(% style="background-color:#4f81bd; color:white; width:50px" %)**Size(bit)**|(% style="background-color:#4f81bd; color:white; width:60px" %)**[bit7:bit6]**|(% style="background-color:#4f81bd; color:white; width:90px" %)**bit5**|(% style="background-color:#4f81bd; color:white; width:90px" %)**bit4**|(% style="background-color:#4f81bd; color:white; width:120px" %)**bit3**|(% style="background-color:#4f81bd; color:white; width:100px" %)**[bit2:bit1:bit0]**
418 +|(% style="width:50px" %)Value|(% style="width:60px" %)MOD|(% style="width:89px" %)(((
419 +(((
420 +DO
363 363  )))
364 364  
365 -* (((
366 -Each data entry is 11 bytes and has the same structure as [[Uplink Payload>>||anchor="H2.3.2UplinkPayload2CFPORT3D2"]], to save airtime and battery, DS20L will send max bytes according to the current DR and Frequency bands.
423 +(((
424 +0:Within limit
425 +
426 +1:Out of limit
367 367  )))
428 +)))|(% style="width:73px" %)(((
429 +Alarm
368 368  
369 -For example, in the US915 band, the max payload for different DR is:
431 +0: No Alarm;
370 370  
371 -**a) DR0:** max is 11 bytes so one entry of data
433 +1: Alarm
434 +)))|(% style="width:150px" %)(((
435 +DO flag
372 372  
373 -**b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
437 +0:the over-limit alarm mode
374 374  
375 -**c) DR2:** total payload includes 11 entries of data
439 +1:the person or object count mode
440 +)))|(% style="width:103px" %)Limit flag
441 +(0~~3)
376 376  
377 -**d) DR3:** total payload includes 22 entries of data.
443 +Example parse in TTNv3
378 378  
379 -If DS20L doesn't have any data in the polling time. It will uplink 11 bytes of 0
445 +[[image:image-20231209173457-5.png||height="277" width="1098"]]
380 380  
447 +(% style="color:blue" %)**MOD & Alarm & Do & Limit flag:**
381 381  
382 -**Downlink:**
449 +(% style="color:red" %)**MOD:**
383 383  
384 -0x31 64 CC 68 0C 64 CC 69 74 05
451 +**Example: ** (0x60>>6) & 0x3f =1
385 385  
386 -[[image:image-20230805144936-2.png||height="113" width="746"]]
453 +**0x01:**  Regularly detect distance and report.
454 +**0x02: ** Uninterrupted measurement (external power supply).
387 387  
388 -**Uplink:**
456 +(% style="color:red" %)**Alarm:**
389 389  
390 -43 FF 0E 10 00 B0 1E 64 CC 68 0C 40 FF 0D DE 00 A8 1E 64 CC 68 29 40 FF 09 92 00 D3 1E 64 CC 68 65 40 FF 02 3A 02 BC 1E 64 CC 68 A1 41 FF 0E 1A 00 A4 1E 64 CC 68 C0 40 FF 0D 2A 00 B8 1E 64 CC 68 E8 40 FF 00 C8 11 6A 1E 64 CC 69 24 40 FF 0E 24 00 AD 1E 64 CC 69 6D
458 +When the detection distance exceeds the limit, the alarm flag is set to 1.
391 391  
460 +(% style="color:red" %)**Do:**
392 392  
393 -**Parsed Value:**
462 +Shows the DO pin status, while there is alarm trigger, The DO pin will be set to high (3.3v), It will be set to 0 low level when there is no alarm.
394 394  
395 -[DISTANCE , DISTANCE_SIGNAL_STRENGTH,LIDAR_TEMP,EXTI_STATUS , EXTI_FLAG , TIME]
464 +(% style="color:red" %)**Threshold Flag for Alarm:**
396 396  
466 +Mode for setting threshold: **0~~3**
397 397  
398 -[360,176,30,High,True,2023-08-04 02:53:00],
468 +**0:** does not use upper and lower limits
399 399  
400 -[355,168,30,Low,False,2023-08-04 02:53:29],
470 +**1:** Use upper and lower limits
401 401  
402 -[245,211,30,Low,False,2023-08-04 02:54:29],
472 +**2:** Less than the upper limit
403 403  
404 -[57,700,30,Low,False,2023-08-04 02:55:29],
474 +**3: **Greater than the lower limit
405 405  
406 -[361,164,30,Low,True,2023-08-04 02:56:00],
407 407  
408 -[337,184,30,Low,False,2023-08-04 02:56:40],
477 +(% style="color:blue" %)**Distance limit alarm count:**
409 409  
410 -[20,4458,30,Low,False,2023-08-04 02:57:40],
479 +People or objects are collected and counted within a limited distance.
411 411  
412 -[362,173,30,Low,False,2023-08-04 02:58:53],
481 +The detection of a stationary person or object at each sampling time will be repeated three times, and the fourth sampling count will be added by 1.
413 413  
483 +**Example:**
414 414  
415 -**History read from serial port:**
485 +**AT+DOL=1,500,244,**(% style="color:red" %)1(%%)**,120   **
416 416  
417 -[[image:image-20230805145056-3.png]]
487 +People or objects passing within the distance range of [244mm,500mm] are detected and counted every 120ms.
418 418  
489 +If payload is: 0x56H, interrupt count =0x56H =86
419 419  
420 -=== 2.3.4 Decode payload in The Things Network ===
421 421  
492 +(% style="color:blue" %)**Upper limit:**
422 422  
494 +Show the pre-set upper limit in Hex, Unit: mm.
495 +
496 +Ex: 01F4(H)=500mm
497 +
498 +
499 +(% style="color:blue" %)**Lower limit:**
500 +
501 +Show the pre-set lower limit in Hex, Unit: mm.
502 +
503 +Ex: 0xF4(H)=244mm
504 +
505 +
506 +== 2.4 Decode payload in The Things Network ==
507 +
508 +
423 423  While using TTN network, you can add the payload format to decode the payload.
424 424  
425 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LLDS12-LoRaWAN%20LiDAR%20ToF%20Distance%20Sensor%20User%20Manual/WebHome/1654592762713-715.png?rev=1.1||alt="1654592762713-715.png"]]
511 +[[image:image-20231206143515-1.png||height="534" width="759"]]
426 426  
427 427  
428 428  (((
... ... @@ -434,11 +434,11 @@
434 434  )))
435 435  
436 436  
437 -== 2.4 ​Show Data in DataCake IoT Server ==
523 +== 2.5 ​Show Data in DataCake IoT Server ==
438 438  
439 439  
440 440  (((
441 -[[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:
527 +[[DATACAKE>>url:https://datacake.co/]] provides a human friendly interface to show the sensor data, onhuman-friendlya in TTN, we can use [[DATACAKE>>url:https://datacake.co/]] to connect to TTN and see the data in DATACAKE. Below are the steps:
442 442  )))
443 443  
444 444  
... ... @@ -451,25 +451,29 @@
451 451  )))
452 452  
453 453  
454 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LDDS75%20-%20LoRaWAN%20Distance%20Detection%20Sensor%20User%20Manual/WebHome/1654592790040-760.png?rev=1.1||alt="1654592790040-760.png"]]
540 +[[image:image-20231207153532-6.png||height="562" width="861"]]
455 455  
456 456  
457 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LDDS75%20-%20LoRaWAN%20Distance%20Detection%20Sensor%20User%20Manual/WebHome/1654592800389-571.png?rev=1.1||alt="1654592800389-571.png"]]
543 +[[image:image-20231207155940-8.png]]
458 458  
545 +For more detailed instructions, refer to the following instructions: [[Welcome - Datacake Docs>>url:https://docs.datacake.de/]]
459 459  
547 +[[image:image-20231207160733-11.png||height="429" width="759"]]
548 +
549 +
460 460  (% style="color:blue" %)**Step 3**(%%)**: Create an account or log in Datacake.**
461 461  
462 462  (% style="color:blue" %)**Step 4**(%%)**: Search the DS20L and add DevEUI.**
463 463  
464 -[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LDDS75%20-%20LoRaWAN%20Distance%20Detection%20Sensor%20User%20Manual/WebHome/1654851029373-510.png?rev=1.1||alt="1654851029373-510.png"]]
554 +[[image:image-20231207160343-10.png||height="665" width="705"]]
465 465  
466 466  
467 467  After added, the sensor data arrive TTN V3, it will also arrive and show in Datacake.
468 468  
469 -[[image:1701152946067-561.png]]
559 +[[image:image-20231129100454-2.png||height="501" width="928"]]
470 470  
471 471  
472 -== 2.5 Frequency Plans ==
562 +== 2.6 Frequency Plans ==
473 473  
474 474  
475 475  The DS20L 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.
... ... @@ -484,10 +484,8 @@
484 484  
485 485  DS20L supports below configure method:
486 486  
487 -* AT Command via Bluetooth Connection (**Recommended**): [[BLE Configure Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/BLE%20Bluetooth%20Remote%20Configure/]].
577 +* AT Command via UART Connection : See [[UART Connection>>http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H2.5UARTConnectionforDS20Lmotherboard]].
488 488  
489 -* AT Command via UART Connection : See [[UART Connection>>http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H2.3UARTConnectionforSN50v3basemotherboard]].
490 -
491 491  * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
492 492  
493 493  == 3.2 General Commands ==
... ... @@ -507,7 +507,7 @@
507 507  == 3.3 Commands special design for DS20L ==
508 508  
509 509  
510 -These commands only valid for DS20L, as below:
598 +Below commands only valid for DS20L, as below:
511 511  
512 512  
513 513  === 3.3.1 Set Transmit Interval Time ===
... ... @@ -550,6 +550,9 @@
550 550  )))
551 551  * (((
552 552  Example 2: Downlink Payload: 0100003C  ~/~/ Set Transmit Interval (TDC) = 60 seconds
641 +
642 +
643 +
553 553  )))
554 554  
555 555  === 3.3.2 Set Interrupt Mode ===
... ... @@ -590,10 +590,9 @@
590 590  
591 591  * Example 2: Downlink Payload: 06000003  ~/~/  Set the interrupt mode to rising edge trigger
592 592  
684 +=== 3.3.3 Set work mode ===
593 593  
594 -== 3.3.3 Set work mode ==
595 595  
596 -
597 597  Feature: Switch working mode
598 598  
599 599  (% style="color:blue" %)**AT Command: AT+MOD**
... ... @@ -603,14 +603,20 @@
603 603  |(% style="width:162px" %)AT+MOD=?|(% style="width:191px" %)Get the current working mode.|(% style="width:106px" %)OK
604 604  |(% style="width:162px" %)AT+MOD=1|(% style="width:191px" %)Set the working mode to Regular measurements.|(% style="width:106px" %)(((
605 605  OK
606 -Attention:Take effect after ATZ
696 +Attention: Take effect after ATZ
607 607  )))
698 +|(% style="width:162px" %)AT+MOD=2|(% style="width:191px" %)Set the working mode to(((
699 +Continuously measurement with Alarm.
700 +)))|(% style="width:191px" %)(((
701 +OK
702 +Attention: Take effect after ATZ
703 +)))
608 608  
609 609  (% style="color:blue" %)**Downlink Command:**
610 610  
611 -* **Example: **0x0A0 ~/~/  Same as AT+MOD=0
707 +* **Example: **0x0A01 ~/~/  Same as AT+MOD=1
612 612  
613 -* **Example:** 0x0A01  ~/~/  Same as AT+MOD=1
709 +* **Example:** 0x0A02  ~/~/  Same as AT+MOD=2
614 614  
615 615  === 3.3.4 Set threshold and threshold mode ===
616 616  
... ... @@ -629,21 +629,37 @@
629 629  )))
630 630  |(% style="width:172px" %)AT+ DOL =1,1800,100,0,400|(% style="width:279px" %)Set only the upper and lower thresholds|(% style="width:118px" %)OK
631 631  
728 +(% border="1" cellspacing="5" style="background-color:#f2f2f2; width:510px" %)
729 +|=(% style="width: 162px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 193px;background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 155px;background-color:#4F81BD;color:white" %) Parameter
730 +|(% rowspan="11" style="color:blue; width:120px" %)(((
731 +
632 632  
633 633  
634 -(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
635 -|(% rowspan="11" style="color:blue; width:120px" %)**AT+DOL=5,1800,0,0,400**|(% rowspan="6" style="width:240px" %)The first bit sets the limit mode|(% style="width:150px" %)0: Do not use upper and lower limits
734 +
735 +
736 +
737 +
738 +
739 +
740 +
741 +
742 +**AT+DOL=1,1800,3,0,400**
743 +)))|(% rowspan="4" style="width:240px" %)(((
744 +
745 +
746 +
747 +
748 +The first bit sets the limit mode
749 +)))|(% style="width:150px" %)0: Do not use upper and lower limits
636 636  |(% style="width:251px" %)1: Use upper and lower limits
637 -|(% style="width:251px" %)2: Less than the lower limit
751 +|(% style="width:251px" %)2:Less than the upper limit
638 638  |(% style="width:251px" %)3: Greater than the lower limit
639 -|(% style="width:251px" %)4: Less than the upper limit
640 -|(% style="width:251px" %)5: Greater than the upper limit
641 641  |(% style="width:226px" %)The second bit sets the upper limit value|(% style="width:251px" %)3~~2000MM
642 642  |(% style="width:226px" %)The third bit sets the lower limit value|(% style="width:251px" %)3~~2000MM
643 643  |(% rowspan="2" style="width:226px" %)The fourth bit sets the over-limit alarm or person or object count.|(% style="width:251px" %)0 Over-limit alarm, DO output is high
644 644  |(% style="width:251px" %)1 Person or object counting statistics
645 645  |(% style="width:226px" %)The fifth bit sets the sampling time|(% style="width:251px" %)(((
646 -0~~10000ms
758 +100~~10000ms
647 647  
648 648  
649 649  )))
... ... @@ -650,14 +650,42 @@
650 650  
651 651  (% style="color:blue" %)**Downlink Command: 0x07**
652 652  
653 -Format: Command Code (0x07) followed by 9bytes.
765 +Format: Command Code (0x07) followed by 9 bytes.
654 654  
655 -* Example 0: Downlink Payload070000000000000190  **~-~-->**  AT+MOD=0,0,0,0,400
767 +If the downlink payload=**07 01 0708 0064 00 0190**, it means set the END Node's limit mode to 0x01,upper limit value to 0x0708=1800(mm), lower limit value to 0x0064=100(mm), to over-limit alarm(0x00) ,the sampling time to 0x0190=400(ms), while type code is 0x07.
656 656  
769 +* Example 0: Downlink Payload: 07 00 0000 0000 00 0190  **~-~-->**  AT+MOD=0,0,0,0,400
770 +
657 657  * Example 1: Downlink Payload: 070107080064000190  **~-~-->**  AT+MOD=1,1800,100,0,400
658 658  
773 +* Example 2: Downlink Payload: 070200000064000190  **~-~-->**  AT+MOD=2,1800,100,0,400
659 659  
775 +* Example 3: Downlink Payload: 070300000064000190  **~-~-->**  AT+MOD=3,0,100,0,400
660 660  
777 +(% style="color:Red" %)**Note: The over-limit alarm is applied to MOD1 and MOD2.**
778 +
779 +**For example:**
780 +
781 +* **AT+MOD=1**
782 +
783 + **AT+DOL=1,500,244,**(% style="color:blue" %)0(%%)**,300**
784 +
785 +Send data according to the normal TDC time. If the mode limit is exceeded, the alarm flag is set to 1:
786 +
787 +[[image:image-20231211113204-2.png||height="292" width="1093"]]
788 +
789 +* **AT+MOD=2  **
790 +
791 + **AT+DOL=1,500,244,**(% style="color:blue" %)0(%%)**,300**
792 +
793 +If the mode limit is exceeded, the data is immediately uplink and the alarm flag is set to 1:
794 +
795 +[[image:image-20231211114932-3.png||height="277" width="1248"]]
796 +
797 +
798 +
799 +
800 +
661 661  = 4. Battery & Power Consumption =
662 662  
663 663  
... ... @@ -684,7 +684,7 @@
684 684  
685 685  * (Recommanded way) OTA firmware update via wireless:  **[[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/]]**
686 686  
687 -* Update through UART TTL interface: **[[Instruction>>url:http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H1.LoRaSTv4baseHardware]]**.
827 +* Update through UART TTL interface: **[[Instruction>>url:http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H2.5UARTConnectionforDS20Lmotherboard]]**.
688 688  
689 689  = 6. FAQ =
690 690  
... ... @@ -694,6 +694,33 @@
694 694  DS20L use the same frequency as other Dragino products. User can see the detail from this link:  [[Introduction>>doc:Main.End Device Frequency Band.WebHome||anchor="H1.Introduction"]]
695 695  
696 696  
837 +== 6.2 DS20L programming line ==
838 +
839 +
840 +[[image:image-20231212150243-1.jpeg||height="448" width="1009"]]
841 +
842 +feature:
843 +
844 +for AT commands
845 +
846 +Update the firmware of DS20L
847 +
848 +Support interrupt mode
849 +
850 +
851 +== 6.3 LiDAR probe position ==
852 +
853 +
854 +[[image:1701155390576-216.png||height="285" width="307"]]
855 +
856 +The black oval hole in the picture is the LiDAR probe.
857 +
858 +
859 +== 6.4 Interface definition ==
860 +
861 +[[image:image-20231128151132-2.png||height="305" width="557"]]
862 +
863 +
697 697  = 7. Trouble Shooting =
698 698  
699 699  == 7.1 AT Command input doesn't work ==
image-20231129085201-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +70.6 KB
Content
image-20231129100454-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +70.1 KB
Content
image-20231206143515-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +89.5 KB
Content
image-20231206144950-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +41.0 KB
Content
image-20231206151412-3.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +58.8 KB
Content
image-20231206154621-4.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +71.2 KB
Content
image-20231206194804-5.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +53.7 KB
Content
image-20231206195704-6.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +64.1 KB
Content
image-20231207142208-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +27.2 KB
Content
image-20231207144600-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +55.4 KB
Content
image-20231207144837-3.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +31.1 KB
Content
image-20231207144856-4.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +31.1 KB
Content
image-20231207145121-5.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +33.3 KB
Content
image-20231207153532-6.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +164.7 KB
Content
image-20231207154046-7.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +23.0 KB
Content
image-20231207155940-8.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +41.7 KB
Content
image-20231207160053-9.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +95.5 KB
Content
image-20231207160343-10.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +80.5 KB
Content
image-20231207160733-11.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +136.0 KB
Content
image-20231209152917-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +65.9 KB
Content
image-20231209155616-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +57.1 KB
Content
image-20231209171127-3.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +80.8 KB
Content
image-20231209171549-4.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +45.7 KB
Content
image-20231209173457-5.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +66.3 KB
Content
image-20231211113113-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +64.5 KB
Content
image-20231211113204-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +59.7 KB
Content
image-20231211114932-3.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +57.3 KB
Content
image-20231211220922-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +411.2 KB
Content
image-20231211221253-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +90.8 KB
Content
image-20231211221436-3.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +64.9 KB
Content
image-20231212150243-1.jpeg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.ting
Size
... ... @@ -1,0 +1,1 @@
1 +593.9 KB
Content