Last modified by Xiaoling on 2025/04/23 15:57

From version 29.15
edited by Xiaoling
on 2022/06/01 18:05
Change comment: There is no comment for this version
To version 15.2
edited by Xiaoling
on 2022/05/19 17:47
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -7,15 +7,12 @@
7 7  **RS485-BL – Waterproof RS485 to LoRaWAN Converter User Manual**
8 8  
9 9  
10 -
11 11  **Table of Contents:**
12 12  
13 -{{toc/}}
14 14  
15 15  
16 16  
17 17  
18 -
19 19  = 1.Introduction =
20 20  
21 21  == 1.1 What is RS485-BL RS485 to LoRaWAN Converter ==
... ... @@ -25,19 +25,19 @@
25 25  )))
26 26  
27 27  (((
28 -The Dragino RS485-BL is a (% style="color:blue" %)**RS485 / UART to LoRaWAN Converter**(%%) for Internet of Things solutions. User can connect RS485 or UART sensor to RS485-BL converter, and configure RS485-BL to periodically read sensor data and upload via LoRaWAN network to IoT server.
25 +The Dragino RS485-BL is a **RS485 / UART to LoRaWAN Converter** for Internet of Things solutions. User can connect RS485 or UART sensor to RS485-BL converter, and configure RS485-BL to periodically read sensor data and upload via LoRaWAN network to IoT server.
29 29  )))
30 30  
31 31  (((
32 -RS485-BL can interface to RS485 sensor, 3.3v/5v UART sensor or interrupt sensor. RS485-BL provides (% style="color:blue" %)**a 3.3v output**(%%) and** (% style="color:blue" %)a 5v output(%%)** to power external sensors. Both output voltages are controllable to minimize the total system power consumption.
29 +RS485-BL can interface to RS485 sensor, 3.3v/5v UART sensor or interrupt sensor. RS485-BL provides **a 3.3v output** and** a 5v output** to power external sensors. Both output voltages are controllable to minimize the total system power consumption.
33 33  )))
34 34  
35 35  (((
36 -RS485-BL is IP67 (% style="color:blue" %)**waterproof**(%%) and powered by (% style="color:blue" %)**8500mAh Li-SOCI2 battery**(%%), it is designed for long term use for several years.
33 +RS485-BL is IP67 **waterproof** and powered by **8500mAh Li-SOCI2 battery**, it is designed for long term use for several years.
37 37  )))
38 38  
39 39  (((
40 -RS485-BL runs standard (% style="color:blue" %)**LoRaWAN 1.0.3 in Class A**(%%). It can reach long transfer range and easy to integrate with LoRaWAN compatible gateway and IoT server.
37 +RS485-BL runs standard **LoRaWAN 1.0.3 in Class A**. It can reach long transfer range and easy to integrate with LoRaWAN compatible gateway and IoT server.
41 41  )))
42 42  
43 43  (((
... ... @@ -54,8 +54,6 @@
54 54  
55 55  [[image:1652953304999-717.png||height="424" width="733"]]
56 56  
57 -
58 -
59 59  == 1.2 Specifications ==
60 60  
61 61  **Hardware System:**
... ... @@ -65,7 +65,7 @@
65 65  * Power Consumption (exclude RS485 device):
66 66  ** Idle: 6uA@3.3v
67 67  
68 -*
63 +*
69 69  ** 20dB Transmit: 130mA@3.3v
70 70  
71 71  **Interface for Model:**
... ... @@ -95,7 +95,6 @@
95 95  * 127 dB Dynamic Range RSSI.
96 96  * Automatic RF Sense and CAD with ultra-fast AFC. ​​​
97 97  
98 -
99 99  == 1.3 Features ==
100 100  
101 101  * LoRaWAN Class A & Class C protocol (default Class A)
... ... @@ -107,7 +107,6 @@
107 107  * Support Modbus protocol
108 108  * Support Interrupt uplink
109 109  
110 -
111 111  == 1.4 Applications ==
112 112  
113 113  * Smart Buildings & Home Automation
... ... @@ -117,12 +117,10 @@
117 117  * Smart Cities
118 118  * Smart Factory
119 119  
120 -
121 121  == 1.5 Firmware Change log ==
122 122  
123 123  [[RS485-BL Image files – Download link and Change log>>url:http://www.dragino.com/downloads/index.php?dir=LoRa_End_Node/RS485-BL/Firmware/||style="background-color: rgb(255, 255, 255);"]]
124 124  
125 -
126 126  == 1.6 Hardware Change log ==
127 127  
128 128  (((
... ... @@ -149,8 +149,6 @@
149 149  
150 150  (((
151 151  Release version ​​​​​
152 -
153 -
154 154  )))
155 155  
156 156  = 2. Pin mapping and Power ON Device =
... ... @@ -164,7 +164,6 @@
164 164  
165 165  The Left TXD and RXD are TTL interface for external sensor. TTL level is controlled by 3.3/5v Jumper.
166 166  
167 -
168 168  = 3. Operation Mode =
169 169  
170 170  == 3.1 How it works? ==
... ... @@ -171,8 +171,6 @@
171 171  
172 172  (((
173 173  The RS485-BL is configured as LoRaWAN OTAA Class A mode by default. It has OTAA keys to join network. To connect a local LoRaWAN network, user just need to input the OTAA keys in the network server and power on the RS485-BL. It will auto join the network via OTAA.
174 -
175 -
176 176  )))
177 177  
178 178  == 3.2 Example to join LoRaWAN network ==
... ... @@ -181,31 +181,19 @@
181 181  
182 182  [[image:1652953414711-647.png||height="337" width="723"]]
183 183  
184 -(((
185 185  The RS485-BL in this example connected to two RS485 devices for demonstration, user can connect to other RS485 devices via the same method.
186 -)))
187 187  
188 -(((
189 189  The LG308 is already set to connect to [[TTN V3 network >>url:https://www.thethingsnetwork.org/]]. So what we need to now is only configure the TTN V3:
190 -)))
191 191  
192 -(((
193 193  **Step 1**: Create a device in TTN V3 with the OTAA keys from RS485-BL.
194 -)))
195 195  
196 -(((
197 197  Each RS485-BL is shipped with a sticker with unique device EUI:
198 -)))
199 199  
200 200  [[image:1652953462722-299.png]]
201 201  
202 -(((
203 203  User can enter this key in their LoRaWAN Server portal. Below is TTN V3 screen shot:
204 -)))
205 205  
206 -(((
207 207  Add APP EUI in the application.
208 -)))
209 209  
210 210  
211 211  
... ... @@ -233,188 +233,143 @@
233 233  
234 234  [[image:1652953568895-172.png||height="232" width="724"]]
235 235  
236 -== 3.3 Configure Commands to read data ==
237 237  
238 -(((
239 -There are plenty of RS485 and TTL level devices in the market and each device has different command to read the valid data. To support these devices in flexible, RS485-BL supports flexible command set. User can use [[AT Commands or LoRaWAN Downlink>>||anchor="H3.5ConfigureRS485-BLviaATorDownlink"]] Command to configure how RS485-BL should read the sensor and how to handle the return from RS485 or TTL sensors.
240 240  
241 -
242 -)))
243 243  
244 -=== 3.3.1 onfigure UART settings for RS485 or TTL communication ===
213 +1.
214 +11. Configure Commands to read data
245 245  
216 +There are plenty of RS485 and TTL level devices in the market and each device has different command to read the valid data. To support these devices in flexible, RS485-BL supports flexible command set. User can use [[AT Commands or LoRaWAN Downlink>>path:#AT_COMMAND]] Command to configure how RS485-BL should read the sensor and how to handle the return from RS485 or TTL sensors.
217 +
218 +
219 +1.
220 +11.
221 +111. Configure UART settings for RS485 or TTL communication
222 +
246 246  RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
247 247  
248 -**~1. RS485-MODBUS mode:**
225 +1. RS485-MODBUS mode:
249 249  
250 250  AT+MOD=1 ~/~/ Support RS485-MODBUS type sensors. User can connect multiply RS485 , Modbus sensors to the A / B pins.
251 251  
252 -**2. TTL mode:**
253 253  
230 +1. TTL mode:
231 +
254 254  AT+MOD=2 ~/~/ Support TTL Level sensors, User can connect one TTL Sensor to the TXD/RXD/GND pins.
255 255  
234 +
256 256  RS485-BL default UART settings is **9600, no parity, stop bit 1**. If the sensor has a different settings, user can change the RS485-BL setting to match.
257 257  
258 -(% border="1" style="background-color:#ffffcc; color:green; width:795px" %)
259 -|(((
260 -**AT Commands**
261 -)))|(% style="width:285px" %)(((
262 -**Description**
263 -)))|(% style="width:347px" %)(((
264 -**Example**
265 -)))
266 -|(((
267 -AT+BAUDR
268 -)))|(% style="width:285px" %)(((
269 -Set the baud rate (for RS485 connection). Default Value is: 9600.
270 -)))|(% style="width:347px" %)(((
271 -(((
237 +
238 +|**AT Commands**|**Description**|**Example**
239 +|AT+BAUDR|Set the baud rate (for RS485 connection). Default Value is: 9600.|(((
272 272  AT+BAUDR=9600
273 -)))
274 274  
275 -(((
276 276  Options: (1200,2400,4800,14400,19200,115200)
277 277  )))
278 -)))
279 -|(((
280 -AT+PARITY
281 -)))|(% style="width:285px" %)(((
282 -(((
244 +|AT+PARITY|(((
283 283  Set UART parity (for RS485 connection)
284 -)))
285 285  
286 -(((
287 287  Default Value is: no parity.
288 -)))
289 -)))|(% style="width:347px" %)(((
290 -(((
248 +)))|(((
291 291  AT+PARITY=0
292 -)))
293 293  
294 -(((
295 295  Option: 0: no parity, 1: odd parity, 2: even parity
296 296  )))
297 -)))
298 -|(((
299 -AT+STOPBIT
300 -)))|(% style="width:285px" %)(((
301 -(((
253 +|AT+STOPBIT|(((
302 302  Set serial stopbit (for RS485 connection)
303 -)))
304 304  
305 -(((
306 306  Default Value is: 1bit.
307 -)))
308 -)))|(% style="width:347px" %)(((
309 -(((
257 +)))|(((
310 310  AT+STOPBIT=0 for 1bit
311 -)))
312 312  
313 -(((
314 314  AT+STOPBIT=1 for 1.5 bit
315 -)))
316 316  
317 -(((
318 318  AT+STOPBIT=2 for 2 bits
319 319  )))
320 -)))
321 321  
322 -=== 3.3.2 Configure sensors ===
323 323  
324 -(((
325 -Some sensors might need to configure before normal operation. User can configure such sensor via PC or through RS485-BL AT Commands (% style="color:#4f81bd" %)**AT+CFGDEV**.
326 -)))
327 327  
328 -(((
329 -When user issue an (% style="color:#4f81bd" %)**AT+CFGDEV**(%%) command, Each (% style="color:#4f81bd" %)**AT+CFGDEV**(%%) equals to send a command to the RS485 or TTL sensors. This command will only run when user input it and won’t run during each sampling.
330 -)))
331 331  
332 -(% border="1" style="background-color:#ffffcc; color:green; width:806px" %)
333 -|**AT Commands**|(% style="width:418px" %)**Description**|(% style="width:256px" %)**Example**
334 -|AT+CFGDEV|(% style="width:418px" %)(((
268 +1.
269 +11.
270 +111. Configure sensors
271 +
272 +Some sensors might need to configure before normal operation. User can configure such sensor via PC or through RS485-BL AT Commands AT+CFGDEV.
273 +
274 +
275 +When user issue an AT+CFGDEV command, Each AT+CFGDEV equals to send a command to the RS485 or TTL sensors. This command will only run when user input it and won’t run during each sampling.
276 +
277 +|**AT Commands**|**Description**|**Example**
278 +|AT+CFGDEV|(((
335 335  This command is used to configure the RS485/TTL devices; they won’t be used during sampling.
336 336  
337 -AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,
281 +AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
338 338  
339 -mm: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
340 -)))|(% style="width:256px" %)AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
283 +m: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
284 +)))|AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
341 341  
342 342  Detail of AT+CFGDEV command see [[AT+CFGDEV detail>>path:#AT_CFGDEV]].
343 343  
344 -=== 3.3.3 Configure read commands for each sampling ===
345 345  
346 -(((
289 +
290 +
291 +
292 +1.
293 +11.
294 +111. Configure read commands for each sampling
295 +
347 347  RS485-BL is a battery powered device; it will sleep most of time. And wake up on each period and read RS485 / TTL sensor data and uplink.
348 -)))
349 349  
350 -(((
298 +
351 351  During each sampling, we need to confirm what commands we need to send to the sensors to read data. After the RS485/TTL sensors send back the value, it normally includes some bytes and we only need a few from them for a shorten payload.
352 -)))
353 353  
354 -(((
301 +
355 355  To save the LoRaWAN network bandwidth, we might need to read data from different sensors and combine their valid value into a short payload.
356 -)))
357 357  
358 -(((
304 +
359 359  This section describes how to achieve above goals.
360 -)))
361 361  
362 -(((
307 +
363 363  During each sampling, the RS485-BL can support 15 commands to read sensors. And combine the return to one or several uplink payloads.
364 -)))
365 365  
366 -(((
310 +
367 367  **Command from RS485-BL to Sensor:**
368 -)))
369 369  
370 -(((
371 371  RS485-BL can send out pre-set max 15 strings via **AT+COMMAD1**, **ATCOMMAND2**,…, to **AT+COMMANDF** . All commands are of same grammar.
372 -)))
373 373  
374 -(((
315 +
375 375  **Handle return from sensors to RS485-BL**:
376 -)))
377 377  
378 -(((
379 379  After RS485-BL send out a string to sensor, RS485-BL will wait for the return from RS485 or TTL sensor. And user can specify how to handle the return, by **AT+DATACUT or AT+SEARCH commands**
380 -)))
381 381  
382 -* (((
383 -**AT+DATACUT**
384 -)))
385 385  
386 -(((
321 +* **AT+DATACUT**
322 +
387 387  When the return value from sensor have fix length and we know which position the valid value we should get, we can use AT+DATACUT command.
388 -)))
389 389  
390 -* (((
391 -**AT+SEARCH**
392 -)))
393 393  
394 -(((
326 +* **AT+SEARCH**
327 +
395 395  When the return value from sensor is dynamic length and we are not sure which bytes the valid data is, instead, we know what value the valid value following. We can use AT+SEARCH to search the valid value in the return string.
396 -)))
397 397  
398 -(((
330 +
399 399  **Define wait timeout:**
400 -)))
401 401  
402 -(((
403 403  Some RS485 device might has longer delay on reply, so user can use AT+CMDDL to set the timeout for getting reply after the RS485 command is sent. For example, AT+CMDDL1=1000 to send the open time to 1000ms
404 -)))
405 405  
406 -(((
335 +
407 407  After we got the valid value from each RS485 commands, we need to combine them together with the command **AT+DATAUP**.
408 -)))
409 409  
338 +
410 410  **Examples:**
411 411  
412 412  Below are examples for the how above AT Commands works.
413 413  
343 +
414 414  **AT+COMMANDx : **This command will be sent to RS485/TTL devices during each sampling, Max command length is 14 bytes. The grammar is:
415 415  
416 -(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:501px" %)
417 -|(% style="width:498px" %)(((
346 +|(((
418 418  **AT+COMMANDx=xx xx xx xx xx xx xx xx xx xx xx xx,m**
419 419  
420 420  **xx xx xx xx xx xx xx xx xx xx xx xx: The RS485 command to be sent**
... ... @@ -426,38 +426,41 @@
426 426  
427 427  In the RS485-BL, we should use this command AT+COMMAND1=01 03 0B B8 00 02,1 for the same.
428 428  
358 +
429 429  **AT+SEARCHx**: This command defines how to handle the return from AT+COMMANDx.
430 430  
431 -(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:580px" %)
432 -|(% style="width:577px" %)(((
361 +|(((
433 433  **AT+SEARCHx=aa,xx xx xx xx xx**
434 434  
435 435  * **aa: 1: prefix match mode; 2: prefix and suffix match mode**
436 436  * **xx xx xx xx xx: match string. Max 5 bytes for prefix and 5 bytes for suffix**
366 +
367 +
437 437  )))
438 438  
439 -**Examples:**
370 +Examples:
440 440  
441 441  1. For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
442 442  
443 443  If we set AT+SEARCH1=1,1E 56 34.      (max 5 bytes for prefix)
444 444  
445 -The valid data will be all bytes after 1E 56 34 , so it is (% style="background-color:yellow" %)**2e 30 58 5f 36 41 30 31 00 49**
376 +The valid data will be all bytes after 1E 56 34 , so it is 2e 30 58 5f 36 41 30 31 00 49
446 446  
447 -[[image:1653271044481-711.png]]
378 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image013.png]]
448 448  
380 +
449 449  1. For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
450 450  
451 451  If we set AT+SEARCH1=2, 1E 56 34+31 00 49
452 452  
453 -Device will search the bytes between 1E 56 34 and 31 00 49. So it is(% style="background-color:yellow" %) **2e 30 58 5f 36 41 30**
385 +Device will search the bytes between 1E 56 34 and 31 00 49. So it is 2e 30 58 5f 36 41 30
454 454  
455 -[[image:1653271276735-972.png]]
387 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png]]
456 456  
389 +
457 457  **AT+DATACUTx : **This command defines how to handle the return from AT+COMMANDx, max return length is 45 bytes.
458 458  
459 -(% style="background-color:#4f81bd; color:white; width:729px" %)
460 -|(% style="width:726px" %)(((
392 +|(((
461 461  **AT+DATACUTx=a,b,c**
462 462  
463 463  * **a: length for the return of AT+COMMAND**
... ... @@ -469,130 +469,95 @@
469 469  
470 470  * Grab bytes:
471 471  
472 -[[image:1653271581490-837.png||height="313" width="722"]]
404 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image015.png]]
473 473  
474 474  * Grab a section.
475 475  
476 -[[image:1653271648378-342.png||height="326" width="720"]]
408 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image016.png]]
477 477  
478 478  * Grab different sections.
479 479  
480 -[[image:1653271657255-576.png||height="305" width="730"]]
412 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png]]
481 481  
482 -(((
483 -(% style="color:red" %)**Note:**
484 -)))
485 485  
486 -(((
415 +Note:
416 +
487 487  AT+SEARCHx and AT+DATACUTx can be used together, if both commands are set, RS485-BL will first process AT+SEARCHx on the return string and get a temporary string, and then process AT+DATACUTx on this temporary string to get the final payload. In this case, AT+DATACUTx need to set to format AT+DATACUTx=0,xx,xx where the return bytes set to 0.
488 -)))
489 489  
490 -(((
491 -**Example:**
492 -)))
419 +Example:
493 493  
494 -(((
495 -(% style="color:red" %)AT+COMMAND1=11 01 1E D0,0
496 -)))
421 +AT+COMMAND1=11 01 1E D0,0
497 497  
498 -(((
499 -(% style="color:red" %)AT+SEARCH1=1,1E 56 34
500 -)))
423 +AT+SEARCH1=1,1E 56 34
501 501  
502 -(((
503 -(% style="color:red" %)AT+DATACUT1=0,2,1~~5
504 -)))
425 +AT+DATACUT1=0,2,1~~5
505 505  
506 -(((
507 -(% style="color:red" %)Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
508 -)))
427 +Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
509 509  
510 -(((
511 -(% style="color:red" %)String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
512 -)))
429 +String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
513 513  
514 -(((
515 -(% style="color:red" %)Valid payload after DataCUT command: 2e 30 58 5f 36
516 -)))
431 +Valid payload after DataCUT command: 2e 30 58 5f 36
517 517  
518 -[[image:1653271763403-806.png]]
433 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png]]
519 519  
520 -=== 3.3.4 Compose the uplink payload ===
521 521  
522 -(((
436 +
437 +
438 +1.
439 +11.
440 +111. Compose the uplink payload
441 +
523 523  Through AT+COMMANDx and AT+DATACUTx we got valid value from each RS485 commands, Assume these valid value are RETURN1, RETURN2, .., to RETURNx. The next step is how to compose the LoRa Uplink Payload by these RETURNs. The command is **AT+DATAUP.**
524 -)))
525 525  
526 -(((
527 -(% style="color:#4f81bd" %)**Examples: AT+DATAUP=0**
528 -)))
529 529  
530 -(((
531 -Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**A SIGNLE UPLINK**.
532 -)))
445 +**Examples: AT+DATAUP=0**
533 533  
534 -(((
447 +Compose the uplink payload with value returns in sequence and send with **A SIGNLE UPLINK**.
448 +
535 535  Final Payload is
536 -)))
537 537  
538 -(((
539 -(% style="color:#4f81bd" %)Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
540 -)))
451 +Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
541 541  
542 -(((
543 543  Where PAYVER is defined by AT+PAYVER, below is an example screen shot.
544 -)))
545 545  
546 -[[image:1653272787040-634.png||height="515" width="719"]]
455 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png]]
547 547  
548 -(((
549 -(% style="color:#4f81bd" %)**Examples: AT+DATAUP=1**
550 -)))
551 551  
552 -(((
553 -Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**Multiply UPLINKs**.
554 -)))
555 555  
556 -(((
459 +**Examples: AT+DATAUP=1**
460 +
461 +Compose the uplink payload with value returns in sequence and send with **Multiply UPLINKs**.
462 +
557 557  Final Payload is
558 -)))
559 559  
560 -(((
561 -(% style="color:#4f81bd" %)Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
562 -)))
465 +Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
563 563  
564 -1. (((
565 -Battery Info (2 bytes): Battery voltage
566 -)))
567 -1. (((
568 -PAYVER (1 byte): Defined by AT+PAYVER
569 -)))
570 -1. (((
571 -PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
572 -)))
573 -1. (((
574 -PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
575 -)))
576 -1. (((
577 -DATA: Valid value: max 6 bytes(US915 version here, Notice*!) for each uplink so each uplink <= 11 bytes. For the last uplink, DATA will might less than 6 bytes
578 -)))
467 +1. Battery Info (2 bytes): Battery voltage
468 +1. PAYVER (1 byte): Defined by AT+PAYVER
469 +1. PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
470 +1. PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
471 +1. DATA: Valid value: max 6 bytes(US915 version here, [[Notice*!>>path:#max_byte]]) for each uplink so each uplink <= 11 bytes. For the last uplink, DATA will might less than 6 bytes
579 579  
580 -[[image:1653272817147-600.png||height="437" width="717"]]
473 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png]]
581 581  
475 +
582 582  So totally there will be 3 uplinks for this sampling, each uplink includes 6 bytes DATA
583 583  
584 -DATA1=RETURN1 Valid Value = (% style="background-color:#4f81bd; color:white" %) 20 20 0a 33 90 41
478 +DATA1=RETURN1 Valid Value = 20 20 0a 33 90 41
585 585  
586 -DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= (% style="background-color:#4f81bd; color:white" %)02 aa 05 81 0a 20
480 +DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= 02 aa 05 81 0a 20
587 587  
588 -DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 =(% style="background-color:#4f81bd; color:white" %) 20 20 20 2d 30
482 +DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 = 20 20 20 2d 30
589 589  
484 +
485 +
590 590  Below are the uplink payloads:
591 591  
592 -[[image:1653272901032-107.png]]
488 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image021.png]]
593 593  
594 -(% style="color:red" %)Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:
595 595  
491 +Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:
492 +
596 596   ~* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
597 597  
598 598   * For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
... ... @@ -601,121 +601,90 @@
601 601  
602 602   ~* For all other bands: max 51 bytes for each uplink  ( so 51 -5 = 46 max valid date).
603 603  
604 -=== 3.3.5 Uplink on demand ===
605 605  
606 -(((
502 +
503 +1.
504 +11.
505 +111. Uplink on demand
506 +
607 607  Except uplink periodically, RS485-BL is able to uplink on demand. The server sends downlink command to RS485-BL and RS485 will uplink data base on the command.
608 -)))
609 609  
610 -(((
611 611  Downlink control command:
612 -)))
613 613  
614 -(((
615 -**0x08 command**: Poll an uplink with current command set in RS485-BL.
616 -)))
511 +[[0x08 command>>path:#downlink_08]]: Poll an uplink with current command set in RS485-BL.
617 617  
618 -(((
619 -**0xA8 command**: Send a command to RS485-BL and uplink the output from sensors.
620 -)))
513 +[[0xA8 command>>path:#downlink_A8]]: Send a command to RS485-BL and uplink the output from sensors.
621 621  
622 -=== 3.3.6 Uplink on Interrupt ===
623 623  
624 -Put the interrupt sensor between 3.3v_out and GPIO ext.
625 625  
626 -[[image:1653273818896-432.png]]
517 +1.
518 +11.
519 +111. Uplink on Interrupt
627 627  
628 -(((
521 +Put the interrupt sensor between 3.3v_out and GPIO ext.[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png]]
522 +
629 629  AT+INTMOD=0  Disable Interrupt
630 -)))
631 631  
632 -(((
633 633  AT+INTMOD=1  Interrupt trigger by rising or falling edge.
634 -)))
635 635  
636 -(((
637 637  AT+INTMOD=2  Interrupt trigger by falling edge. ( Default Value)
638 -)))
639 639  
640 -(((
641 641  AT+INTMOD=3  Interrupt trigger by rising edge.
642 -)))
643 643  
644 -== 3.4 Uplink Payload ==
645 645  
646 -(% border="1" style="background-color:#4f81bd; color:white; width:850px" %)
647 -|**Size(bytes)**|(% style="width:130px" %)**2**|(% style="width:93px" %)**1**|(% style="width:509px" %)**Length depends on the return from the commands**
648 -|Value|(% style="width:130px" %)(((
649 -(((
532 +1.
533 +11. Uplink Payload
534 +
535 +|**Size(bytes)**|**2**|**1**|**Length depends on the return from the commands**
536 +|Value|(((
650 650  Battery(mV)
651 -)))
652 652  
653 -(((
654 654  &
655 -)))
656 656  
657 -(((
658 658  Interrupt _Flag
659 -)))
660 -)))|(% style="width:93px" %)(((
542 +)))|(((
661 661  PAYLOAD_VER
662 662  
663 663  
664 -)))|(% style="width:509px" %)If the valid payload is too long and exceed the maximum support payload length in server, server will show payload not provided in the LoRaWAN server.
546 +)))|If the valid payload is too long and exceed the maximum support payload length in server, server will show payload not provided in the LoRaWAN server.
665 665  
666 666  Below is the decoder for the first 3 bytes. The rest bytes are dynamic depends on different RS485 sensors.
667 667  
668 -(((
550 +
669 669  function Decoder(bytes, port) {
670 -)))
671 671  
672 -(((
673 673  ~/~/Payload Formats of RS485-BL Deceive
674 -)))
675 675  
676 -(((
677 677  return {
678 -)))
679 679  
680 -(((
681 681   ~/~/Battery,units:V
682 -)))
683 683  
684 -(((
685 685   BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,
686 -)))
687 687  
688 -(((
689 689   ~/~/GPIO_EXTI 
690 -)))
691 691  
692 -(((
693 693   EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",
694 -)))
695 695  
696 -(((
697 697   ~/~/payload of version
698 -)))
699 699  
700 -(((
701 701   Pay_ver:bytes[2],
702 -)))
703 703  
704 -(((
705 705   };
706 -)))
707 707  
708 -(((
709 709   }
710 -)))
711 711  
712 -(((
573 +
574 +
575 +
576 +
577 +
578 +
713 713  TTN V3 uplink screen shot.
714 -)))
715 715  
716 -[[image:1653274001211-372.png||height="192" width="732"]]
581 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image023.png]]
717 717  
718 -== 3.5 Configure RS485-BL via AT or Downlink ==
583 +1.
584 +11. Configure RS485-BL via AT or Downlink
719 719  
720 720  User can configure RS485-BL via [[AT Commands >>path:#_​Using_the_AT]]or LoRaWAN Downlink Commands
721 721  
... ... @@ -725,15 +725,15 @@
725 725  
726 726  * **Sensor Related Commands**: These commands are special designed for RS485-BL.  User can see these commands below:
727 727  
728 -1.
729 -11.
594 +1.
595 +11.
730 730  111. Common Commands:
731 731  
732 732  They should be available for each of Dragino Sensors, such as: change uplink interval, reset device. For firmware v1.3, user can find what common commands it supports: [[http:~~/~~/wiki.dragino.com/index.php?title=End_Device_AT_Commands_and_Downlink_Commands>>url:http://wiki.dragino.com/index.php?title=End_Device_AT_Commands_and_Downlink_Commands]]
733 733  
734 734  
735 -1.
736 -11.
601 +1.
602 +11.
737 737  111. Sensor related commands:
738 738  
739 739  ==== Choose Device Type (RS485 or TTL) ====
... ... @@ -1039,13 +1039,13 @@
1039 1039  
1040 1040  
1041 1041  
1042 -1.
908 +1.
1043 1043  11. Buttons
1044 1044  
1045 1045  |**Button**|**Feature**
1046 1046  |**RST**|Reboot RS485-BL
1047 1047  
1048 -1.
914 +1.
1049 1049  11. +3V3 Output
1050 1050  
1051 1051  RS485-BL has a Controllable +3V3 output, user can use this output to power external sensor.
... ... @@ -1063,7 +1063,7 @@
1063 1063  By default, the AT+3V3T=0. This is a special case, means the +3V3 output is always on at any time
1064 1064  
1065 1065  
1066 -1.
932 +1.
1067 1067  11. +5V Output
1068 1068  
1069 1069  RS485-BL has a Controllable +5V output, user can use this output to power external sensor.
... ... @@ -1083,13 +1083,13 @@
1083 1083  
1084 1084  
1085 1085  
1086 -1.
952 +1.
1087 1087  11. LEDs
1088 1088  
1089 1089  |**LEDs**|**Feature**
1090 1090  |**LED1**|Blink when device transmit a packet.
1091 1091  
1092 -1.
958 +1.
1093 1093  11. Switch Jumper
1094 1094  
1095 1095  |**Switch Jumper**|**Feature**
... ... @@ -1135,7 +1135,7 @@
1135 1135  
1136 1136  
1137 1137  
1138 -1.
1004 +1.
1139 1139  11. Common AT Command Sequence
1140 1140  111. Multi-channel ABP mode (Use with SX1301/LG308)
1141 1141  
... ... @@ -1154,8 +1154,8 @@
1154 1154  
1155 1155  ATZ
1156 1156  
1157 -1.
1158 -11.
1023 +1.
1024 +11.
1159 1159  111. Single-channel ABP mode (Use with LG01/LG02)
1160 1160  
1161 1161  AT+FDR   Reset Parameters to Factory Default, Keys Reserve
... ... @@ -1230,7 +1230,7 @@
1230 1230  [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image035.png]] [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image036.png]]
1231 1231  
1232 1232  
1233 -1.
1099 +1.
1234 1234  11. How to change the LoRa Frequency Bands/Region?
1235 1235  
1236 1236  User can follow the introduction for [[how to upgrade image>>path:#upgrade_image]]. When download the images, choose the required image file for download.
... ... @@ -1237,7 +1237,7 @@
1237 1237  
1238 1238  
1239 1239  
1240 -1.
1106 +1.
1241 1241  11. How many RS485-Slave can RS485-BL connects?
1242 1242  
1243 1243  The RS485-BL can support max 32 RS485 devices. Each uplink command of RS485-BL can support max 16 different RS485 command. So RS485-BL can support max 16 RS485 devices pre-program in the device for uplink. For other devices no pre-program, user can use the [[downlink message (type code 0xA8) to poll their info>>path:#downlink_A8]].
... ... @@ -1254,7 +1254,7 @@
1254 1254  
1255 1255  
1256 1256  
1257 -1.
1123 +1.
1258 1258  11. Why I can’t join TTN V3 in US915 /AU915 bands?
1259 1259  
1260 1260  It might about the channels mapping. Please see for detail.
1652954654347-831.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -138.7 KB
Content
1653271044481-711.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -27.8 KB
Content
1653271276735-972.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -26.6 KB
Content
1653271581490-837.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -138.7 KB
Content
1653271648378-342.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -131.4 KB
Content
1653271657255-576.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -142.6 KB
Content
1653271763403-806.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -27.7 KB
Content
1653272787040-634.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -294.0 KB
Content
1653272817147-600.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -143.3 KB
Content
1653272901032-107.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -197.8 KB
Content
1653273818896-432.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -31.6 KB
Content
1653274001211-372.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -91.4 KB
Content