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

From version 29.4
edited by Xiaoling
on 2022/06/01 17:59
Change comment: There is no comment for this version
To version 29.39
edited by Xiaoling
on 2022/06/02 09:02
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -10,6 +10,7 @@
10 10  
11 11  **Table of Contents:**
12 12  
13 +{{toc/}}
13 13  
14 14  
15 15  
... ... @@ -24,19 +24,19 @@
24 24  )))
25 25  
26 26  (((
27 -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.
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.
28 28  )))
29 29  
30 30  (((
31 -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.
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.
32 32  )))
33 33  
34 34  (((
35 -RS485-BL is IP67 **waterproof** and powered by **8500mAh Li-SOCI2 battery**, it is designed for long term use for several years.
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.
36 36  )))
37 37  
38 38  (((
39 -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.
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.
40 40  )))
41 41  
42 42  (((
... ... @@ -53,8 +53,11 @@
53 53  
54 54  [[image:1652953304999-717.png||height="424" width="733"]]
55 55  
57 +
58 +
56 56  == 1.2 Specifications ==
57 57  
61 +
58 58  **Hardware System:**
59 59  
60 60  * STM32L072CZT6 MCU
... ... @@ -61,8 +61,6 @@
61 61  * SX1276/78 Wireless Chip 
62 62  * Power Consumption (exclude RS485 device):
63 63  ** Idle: 6uA@3.3v
64 -
65 -*
66 66  ** 20dB Transmit: 130mA@3.3v
67 67  
68 68  **Interface for Model:**
... ... @@ -116,9 +116,12 @@
116 116  
117 117  [[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);"]]
118 118  
121 +
119 119  == 1.6 Hardware Change log ==
120 120  
121 121  (((
125 +
126 +
122 122  v1.4
123 123  )))
124 124  
... ... @@ -142,6 +142,8 @@
142 142  
143 143  (((
144 144  Release version ​​​​​
150 +
151 +
145 145  )))
146 146  
147 147  = 2. Pin mapping and Power ON Device =
... ... @@ -155,6 +155,7 @@
155 155  
156 156  The Left TXD and RXD are TTL interface for external sensor. TTL level is controlled by 3.3/5v Jumper.
157 157  
165 +
158 158  = 3. Operation Mode =
159 159  
160 160  == 3.1 How it works? ==
... ... @@ -161,6 +161,8 @@
161 161  
162 162  (((
163 163  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.
172 +
173 +
164 164  )))
165 165  
166 166  == 3.2 Example to join LoRaWAN network ==
... ... @@ -196,8 +196,6 @@
196 196  )))
197 197  
198 198  
199 -
200 -
201 201  [[image:image-20220519174512-1.png]]
202 202  
203 203  [[image:image-20220519174512-2.png||height="328" width="731"]]
... ... @@ -221,10 +221,13 @@
221 221  
222 222  [[image:1652953568895-172.png||height="232" width="724"]]
223 223  
232 +
224 224  == 3.3 Configure Commands to read data ==
225 225  
226 226  (((
227 -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.
236 +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.
237 +
238 +
228 228  )))
229 229  
230 230  === 3.3.1 onfigure UART settings for RS485 or TTL communication ===
... ... @@ -305,6 +305,7 @@
305 305  )))
306 306  )))
307 307  
319 +
308 308  === 3.3.2 Configure sensors ===
309 309  
310 310  (((
... ... @@ -325,8 +325,9 @@
325 325  mm: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
326 326  )))|(% style="width:256px" %)AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
327 327  
328 -Detail of AT+CFGDEV command see [[AT+CFGDEV detail>>path:#AT_CFGDEV]].
340 +Detail of AT+CFGDEV command see [[AT+CFGDEV detail>>||anchor="HRS485DebugCommand28AT2BCFGDEV29"]].
329 329  
342 +
330 330  === 3.3.3 Configure read commands for each sampling ===
331 331  
332 332  (((
... ... @@ -424,7 +424,7 @@
424 424  
425 425  **Examples:**
426 426  
427 -1. For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
440 +1For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
428 428  
429 429  If we set AT+SEARCH1=1,1E 56 34.      (max 5 bytes for prefix)
430 430  
... ... @@ -432,7 +432,7 @@
432 432  
433 433  [[image:1653271044481-711.png]]
434 434  
435 -1. For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
448 +2)For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
436 436  
437 437  If we set AT+SEARCH1=2, 1E 56 34+31 00 49
438 438  
... ... @@ -451,16 +451,18 @@
451 451  * **c: define the position for valid value.  **
452 452  )))
453 453  
454 -Examples:
467 +**Examples:**
455 455  
456 456  * Grab bytes:
457 457  
458 458  [[image:1653271581490-837.png||height="313" width="722"]]
459 459  
473 +
460 460  * Grab a section.
461 461  
462 462  [[image:1653271648378-342.png||height="326" width="720"]]
463 463  
478 +
464 464  * Grab different sections.
465 465  
466 466  [[image:1653271657255-576.png||height="305" width="730"]]
... ... @@ -503,6 +503,7 @@
503 503  
504 504  [[image:1653271763403-806.png]]
505 505  
521 +
506 506  === 3.3.4 Compose the uplink payload ===
507 507  
508 508  (((
... ... @@ -510,7 +510,7 @@
510 510  )))
511 511  
512 512  (((
513 -(% style="color:#4f81bd" %)**Examples: AT+DATAUP=0**
529 +(% style="color:#037691" %)**Examples: AT+DATAUP=0**
514 514  )))
515 515  
516 516  (((
... ... @@ -522,7 +522,7 @@
522 522  )))
523 523  
524 524  (((
525 -(% style="color:#4f81bd" %)Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
541 +(% style="color:#4f81bd" %)**Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx**
526 526  )))
527 527  
528 528  (((
... ... @@ -531,8 +531,12 @@
531 531  
532 532  [[image:1653272787040-634.png||height="515" width="719"]]
533 533  
550 +
551 +
534 534  (((
535 -(% style="color:#4f81bd" %)**Examples: AT+DATAUP=1**
553 +(% style="color:#037691" %)**Examples: AT+DATAUP=1**
554 +
555 +
536 536  )))
537 537  
538 538  (((
... ... @@ -544,7 +544,7 @@
544 544  )))
545 545  
546 546  (((
547 -(% style="color:#4f81bd" %)Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
567 +(% style="color:#4f81bd" %)**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**
548 548  )))
549 549  
550 550  1. (((
... ... @@ -567,6 +567,7 @@
567 567  
568 568  So totally there will be 3 uplinks for this sampling, each uplink includes 6 bytes DATA
569 569  
590 +
570 570  DATA1=RETURN1 Valid Value = (% style="background-color:#4f81bd; color:white" %) 20 20 0a 33 90 41
571 571  
572 572  DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= (% style="background-color:#4f81bd; color:white" %)02 aa 05 81 0a 20
... ... @@ -573,10 +573,12 @@
573 573  
574 574  DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 =(% style="background-color:#4f81bd; color:white" %) 20 20 20 2d 30
575 575  
597 +
576 576  Below are the uplink payloads:
577 577  
578 578  [[image:1653272901032-107.png]]
579 579  
602 +
580 580  (% style="color:red" %)Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:
581 581  
582 582   ~* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
... ... @@ -587,6 +587,8 @@
587 587  
588 588   ~* For all other bands: max 51 bytes for each uplink  ( so 51 -5 = 46 max valid date).
589 589  
613 +
614 +
590 590  === 3.3.5 Uplink on demand ===
591 591  
592 592  (((
... ... @@ -603,6 +603,8 @@
603 603  
604 604  (((
605 605  **0xA8 command**: Send a command to RS485-BL and uplink the output from sensors.
631 +
632 +
606 606  )))
607 607  
608 608  === 3.3.6 Uplink on Interrupt ===
... ... @@ -611,6 +611,7 @@
611 611  
612 612  [[image:1653273818896-432.png]]
613 613  
641 +
614 614  (((
615 615  AT+INTMOD=0  Disable Interrupt
616 616  )))
... ... @@ -625,6 +625,8 @@
625 625  
626 626  (((
627 627  AT+INTMOD=3  Interrupt trigger by rising edge.
656 +
657 +
628 628  )))
629 629  
630 630  == 3.4 Uplink Payload ==
... ... @@ -652,47 +652,49 @@
652 652  Below is the decoder for the first 3 bytes. The rest bytes are dynamic depends on different RS485 sensors.
653 653  
654 654  (((
655 -function Decoder(bytes, port) {
685 +{{{function Decoder(bytes, port) {}}}
656 656  )))
657 657  
658 658  (((
659 -~/~/Payload Formats of RS485-BL Deceive
689 +{{{//Payload Formats of RS485-BL Deceive}}}
660 660  )))
661 661  
662 662  (((
663 -return {
693 +{{{return {}}}
664 664  )))
665 665  
666 666  (((
667 - ~/~/Battery,units:V
697 +{{{ //Battery,units:V}}}
668 668  )))
669 669  
670 670  (((
671 - BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,
701 +{{{ BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,}}}
672 672  )))
673 673  
674 674  (((
675 - ~/~/GPIO_EXTI 
705 +{{{ //GPIO_EXTI }}}
676 676  )))
677 677  
678 678  (((
679 - EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",
709 +{{{ EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",}}}
680 680  )))
681 681  
682 682  (((
683 - ~/~/payload of version
713 +{{{ //payload of version}}}
684 684  )))
685 685  
686 686  (((
687 - Pay_ver:bytes[2],
717 +{{{ Pay_ver:bytes[2],}}}
688 688  )))
689 689  
690 690  (((
691 - };
721 +{{{ }; }}}
692 692  )))
693 693  
694 694  (((
695 - }
725 +{{{ }}}}
726 +
727 +
696 696  )))
697 697  
698 698  (((
... ... @@ -701,6 +701,7 @@
701 701  
702 702  [[image:1653274001211-372.png||height="192" width="732"]]
703 703  
736 +
704 704  == 3.5 Configure RS485-BL via AT or Downlink ==
705 705  
706 706  User can configure RS485-BL via [[AT Commands >>path:#_​Using_the_AT]]or LoRaWAN Downlink Commands