Version 62.1 by Bei Jinggeng on 2022/08/30 09:54

Show last authors
1 (% style="text-align:center" %)
2 [[image:1652947681187-144.png||height="404" width="404"]]
3
4
5
6
7 **Table of Contents:**
8
9 {{toc/}}
10
11
12
13
14 = 1.Introduction =
15
16
17 == 1.1 What is RS485-BL RS485 to LoRaWAN Converter ==
18
19 (((
20
21 )))
22
23 (((
24 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 )))
26
27 (((
28 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 )))
30
31 (((
32 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 )))
34
35 (((
36 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 )))
38
39 (((
40 For data uplink, RS485-BL sends user-defined commands to RS485 devices and gets the return from the RS485 devices. RS485-BL will process these returns data according to user-define rules to get the final payload and upload to LoRaWAN server.
41 )))
42
43 (((
44 For data downlink, RS485-BL runs in LoRaWAN Class A. When there is downlink commands from LoRaWAN server, RS485-BL will forward the commands from LoRaWAN server to RS485 devices.
45 )))
46
47 (((
48 Each RS485-BL pre-load with a set of unique keys for LoRaWAN registration, register these keys to LoRaWAN server and it will auto connect after power on.
49
50
51 )))
52
53 [[image:1652953304999-717.png||height="424" width="733"]]
54
55
56
57 == 1.2 Specifications ==
58
59
60 **Hardware System:**
61
62 * STM32L072CZT6 MCU
63 * SX1276/78 Wireless Chip 
64 * Power Consumption (exclude RS485 device):
65 ** Idle: 6uA@3.3v
66 ** 20dB Transmit: [[130mA@3.3v>>mailto:130mA@3.3v]]
67 * 5V sampling maximum current:500mA
68
69 **Interface for Model:**
70
71 * 1 x RS485 Interface
72 * 1 x TTL Serial , 3.3v or 5v.
73 * 1 x I2C Interface, 3.3v or 5v.
74 * 1 x one wire interface
75 * 1 x Interrupt Interface
76 * 1 x Controllable 5V output, max
77
78 **LoRa Spec:**
79
80 * Frequency Range:
81 ** Band 1 (HF): 862 ~~ 1020 Mhz
82 ** Band 2 (LF): 410 ~~ 528 Mhz
83 * 168 dB maximum link budget.
84 * +20 dBm - 100 mW constant RF output vs.
85 * Programmable bit rate up to 300 kbps.
86 * High sensitivity: down to -148 dBm.
87 * Bullet-proof front end: IIP3 = -12.5 dBm.
88 * Excellent blocking immunity.
89 * Fully integrated synthesizer with a resolution of 61 Hz.
90 * LoRa modulation.
91 * Built-in bit synchronizer for clock recovery.
92 * Preamble detection.
93 * 127 dB Dynamic Range RSSI.
94 * Automatic RF Sense and CAD with ultra-fast AFC. ​​​
95
96 == 1.3 Features ==
97
98
99 * LoRaWAN Class A & Class C protocol (default Class A)
100 * Frequency Bands: CN470/EU433/KR920/US915/EU868/AS923/AU915/IN865/RU864/MA869
101 * AT Commands to change parameters
102 * Remote configure parameters via LoRaWAN Downlink
103 * Firmware upgradable via program port
104 * Support multiply RS485 devices by flexible rules
105 * Support Modbus protocol
106 * Support Interrupt uplink
107
108 == 1.4 Applications ==
109
110
111 * Smart Buildings & Home Automation
112 * Logistics and Supply Chain Management
113 * Smart Metering
114 * Smart Agriculture
115 * Smart Cities
116 * Smart Factory
117
118 == 1.5 Firmware Change log ==
119
120
121 [[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);"]]
122
123
124
125 == 1.6 Hardware Change log ==
126
127 (((
128
129
130 (((
131 **v1.4**
132 )))
133 )))
134
135 (((
136 (((
137 ~1. Change Power IC to TPS22916
138 )))
139 )))
140
141 (((
142
143 )))
144
145 (((
146 (((
147 **v1.3**
148 )))
149 )))
150
151 (((
152 (((
153 ~1. Change JP3 from KF350-8P to KF350-11P, Add one extra interface for I2C and one extra interface for one-wire
154 )))
155 )))
156
157 (((
158
159 )))
160
161 (((
162 (((
163 **v1.2**
164 )))
165 )))
166
167 (((
168 (((
169 Release version ​​​​​
170 )))
171
172
173 )))
174
175
176 = 2. Pin mapping and Power ON Device =
177
178
179 (((
180 The RS485-BL is powered on by 8500mAh battery. To save battery life, RS485-BL is shipped with power off. User can put the jumper to power on RS485-BL.
181 )))
182
183 [[image:1652953055962-143.png||height="387" width="728"]]
184
185
186 The Left TXD and RXD are TTL interface for external sensor. TTL level is controlled by 3.3/5v Jumper.
187
188
189
190 = 3. Operation Mode =
191
192
193 == 3.1 How it works? ==
194
195
196 (((
197 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.
198
199
200
201 )))
202
203 == 3.2 Example to join LoRaWAN network ==
204
205
206 Here shows an example for how to join the TTN V3 Network. Below is the network structure, we use [[LG308>>url:http://www.dragino.com/products/lora-lorawan-gateway/item/140-lg308.html]] as LoRaWAN gateway here. 
207
208 [[image:1652953414711-647.png||height="337" width="723"]]
209
210
211 (((
212 The RS485-BL in this example connected to two RS485 devices for demonstration, user can connect to other RS485 devices via the same method.
213 )))
214
215 (((
216 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:
217
218
219 )))
220
221 (((
222 (% style="color:blue" %)**Step 1**(%%): Create a device in TTN V3 with the OTAA keys from RS485-BL.
223 )))
224
225 (((
226 Each RS485-BL is shipped with a sticker with unique device EUI:
227 )))
228
229 [[image:1652953462722-299.png]]
230
231
232 (((
233 User can enter this key in their LoRaWAN Server portal. Below is TTN V3 screen shot:
234 )))
235
236 (((
237 **Add APP EUI in the application.**
238 )))
239
240
241 [[image:image-20220519174512-1.png]]
242
243 [[image:image-20220519174512-2.png||height="328" width="731"]]
244
245 [[image:image-20220519174512-3.png||height="556" width="724"]]
246
247 [[image:image-20220519174512-4.png]]
248
249
250 You can also choose to create the device manually.
251
252 [[image:1652953542269-423.png||height="710" width="723"]]
253
254
255 Add APP KEY and DEV EUI
256
257 [[image:1652953553383-907.png||height="514" width="724"]]
258
259
260
261 (((
262 (% style="color:blue" %)**Step 2**(%%): Power on RS485-BL and it will auto join to the TTN V3 network. After join success, it will start to upload message to TTN V3 and user can see in the panel.
263 )))
264
265 [[image:1652953568895-172.png||height="232" width="724"]]
266
267
268
269 == 3.3 Configure Commands to read data ==
270
271
272 (((
273 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.
274
275
276
277 )))
278
279 === 3.3.1 Configure UART settings for RS485 or TTL communication(Since v1.3.3) ===
280
281
282 (((
283 RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
284 )))
285
286 (((
287 **~1. RS485-MODBUS mode:**
288 )))
289
290 (((
291 AT+MOD=1 ~/~/ Support RS485-MODBUS type sensors. User can connect multiply RS485 , Modbus sensors to the A / B pins.
292
293
294 )))
295
296 (((
297 **2. TTL mode:**
298 )))
299
300 (((
301 AT+MOD=2 ~/~/ Support TTL Level sensors, User can connect one TTL Sensor to the TXD/RXD/GND pins.
302 )))
303
304 (((
305 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.
306 )))
307
308 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:510px" %)
309 |=(% style="width: 80px;" %)(((
310 (((
311 **AT Commands**
312 )))
313 )))|=(% style="width: 210px;" %)(((
314 (((
315 **Description**
316 )))
317 )))|=(% style="width: 210px;" %)(((
318 (((
319 **Example**
320 )))
321 )))
322 |(% style="width:80px" %)(((
323 (((
324 AT+BAUDR
325 )))
326 )))|(% style="width:210px" %)(((
327 (((
328 Set the baud rate (for RS485 connection). Default Value is: 9600.
329 )))
330 )))|(% style="width:210px" %)(((
331 (((
332 (((
333 AT+BAUDR=9600
334 )))
335 )))
336
337 (((
338 (((
339 Options: (1200,2400,4800,14400,19200,115200)
340 )))
341 )))
342 )))
343 |(% style="width:80px" %)(((
344 (((
345 AT+PARITY
346 )))
347 )))|(% style="width:210px" %)(((
348 (((
349 (((
350 Set UART parity (for RS485 connection)
351 )))
352 )))
353
354 (((
355 (((
356 Default Value is: no parity.
357 )))
358 )))
359 )))|(% style="width:210px" %)(((
360 (((
361 (((
362 AT+PARITY=0
363 )))
364 )))
365
366 (((
367 (((
368 Option: 0: no parity, 1: odd parity, 2: even parity
369 )))
370 )))
371 )))
372 |(% style="width:80px" %)(((
373 (((
374 AT+STOPBIT
375 )))
376 )))|(% style="width:210px" %)(((
377 (((
378 (((
379 Set serial stopbit (for RS485 connection)
380 )))
381 )))
382
383 (((
384 (((
385 Default Value is: 1bit.
386 )))
387 )))
388 )))|(% style="width:210px" %)(((
389 (((
390 (((
391 AT+STOPBIT=0 for 1bit
392 )))
393 )))
394
395 (((
396 (((
397 AT+STOPBIT=1 for 1.5 bit
398 )))
399 )))
400
401 (((
402 (((
403 AT+STOPBIT=2 for 2 bits
404 )))
405 )))
406 )))
407
408 === 3.3.2 Configure sensors ===
409
410
411 (((
412 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**.
413 )))
414
415 (((
416 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.
417 )))
418
419 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:510px" %)
420 |=(% style="width: 80px;" %)**AT Commands**|=(% style="width: 210px;" %)**Description**|=(% style="width: 210px;" %)**Example**
421 |AT+CFGDEV|(% style="width:80px" %)(((
422 (((
423 This command is used to configure the RS485/TTL devices; they won’t be used during sampling.
424 )))
425
426 (((
427 AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,
428 )))
429
430 (((
431 mm: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
432 )))
433 )))|(% style="width:210px" %)AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
434
435 Detail of AT+CFGDEV command see [[AT+CFGDEV detail>>||anchor="HRS485DebugCommand28AT2BCFGDEV29"]].
436
437
438
439 === 3.3.3 Configure read commands for each sampling ===
440
441
442 (((
443 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.
444 )))
445
446 (((
447 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.
448 )))
449
450 (((
451 To save the LoRaWAN network bandwidth, we might need to read data from different sensors and combine their valid value into a short payload.
452 )))
453
454 (((
455 This section describes how to achieve above goals.
456 )))
457
458 (((
459 During each sampling, the RS485-BL can support 15 commands to read sensors. And combine the return to one or several uplink payloads.
460
461
462 )))
463
464 (((
465 (% style="color:blue" %)**Command from RS485-BL to Sensor:**
466 )))
467
468 (((
469 RS485-BL can send out pre-set max 15 strings via **AT+COMMAD1**, **ATCOMMAND2**,…, to **AT+COMMANDF** . All commands are of same grammar.
470
471
472 )))
473
474 (((
475 (% style="color:blue" %)**Handle return from sensors to RS485-BL**:
476 )))
477
478 (((
479 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**
480 )))
481
482 * (((
483 (% style="color:blue" %)**AT+DATACUT**
484 )))
485
486 (((
487 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.
488
489
490 )))
491
492 * (((
493 (% style="color:blue" %)**AT+SEARCH**
494 )))
495
496 (((
497 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.
498 )))
499
500 (((
501
502
503 (% style="color:blue" %)**Define wait timeout:**
504 )))
505
506 (((
507 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
508 )))
509
510 (((
511 After we got the valid value from each RS485 commands, we need to combine them together with the command **AT+DATAUP**.
512 )))
513
514 (((
515
516
517 **Examples:**
518 )))
519
520 (((
521 Below are examples for the how above AT Commands works.
522 )))
523
524 (((
525 **AT+COMMANDx : **This command will be sent to RS485/TTL devices during each sampling, Max command length is 14 bytes. The grammar is:
526 )))
527
528 (% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:497px" %)
529 |(% style="width:494px" %)(((
530 (((
531 **AT+COMMANDx=xx xx xx xx xx xx xx xx xx xx xx xx,m**
532 )))
533
534 (((
535 **xx xx xx xx xx xx xx xx xx xx xx xx: The RS485 command to be sent**
536 )))
537
538 (((
539 **m: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command**
540 )))
541 )))
542
543 (((
544 For example, if we have a RS485 sensor. The command to get sensor value is: 01 03 0B B8 00 02 46 0A. Where 01 03 0B B8 00 02 is the Modbus command to read the register 0B B8 where stored the sensor value. The 46 0A is the CRC-16/MODBUS which calculate manually.
545 )))
546
547 (((
548 In the RS485-BL, we should use this command AT+COMMAND1=01 03 0B B8 00 02,1 for the same.
549 )))
550
551 (((
552
553 )))
554
555 (((
556 **AT+SEARCHx**: This command defines how to handle the return from AT+COMMANDx.
557 )))
558
559 (% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:473px" %)
560 |(% style="width:470px" %)(((
561 (((
562 **AT+SEARCHx=aa,xx xx xx xx xx**
563 )))
564
565 * (((
566 **aa: 1: prefix match mode; 2: prefix and suffix match mode**
567 )))
568 * (((
569 **xx xx xx xx xx: match string. Max 5 bytes for prefix and 5 bytes for suffix**
570 )))
571 )))
572
573 (((
574
575
576 **Examples:**
577 )))
578
579 (((
580 1)For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
581 )))
582
583 (((
584 If we set AT+SEARCH1=1,1E 56 34.      (max 5 bytes for prefix)
585 )))
586
587 (((
588 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**
589 )))
590
591 (((
592 [[image:1653271044481-711.png]]
593
594
595 )))
596
597 (((
598 2)For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
599 )))
600
601 (((
602 If we set AT+SEARCH1=2, 1E 56 34+31 00 49
603 )))
604
605 (((
606 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**
607 )))
608
609 (((
610 [[image:1653271276735-972.png]]
611 )))
612
613 (((
614 **AT+DATACUTx : **This command defines how to handle the return from AT+COMMANDx, max return length is 100 bytes.(Since 1.4.0)
615 )))
616
617 (% style="background-color:#4f81bd; color:white; width:496px" %)
618 |(% style="width:493px" %)(((
619 (((
620 **AT+DATACUTx=a,b,c**
621 )))
622
623 * (((
624 **a: length for the return of AT+COMMAND**
625 )))
626 * (((
627 **b:1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections.**
628 )))
629 * (((
630 **c: define the position for valid value.  **
631 )))
632 )))
633
634 (((
635
636
637
638 **Examples:**
639 )))
640
641 * (((
642 (% style="color:blue" %)**Grab bytes:**
643 )))
644
645 (((
646 [[image:1653271581490-837.png||height="313" width="722"]]
647 )))
648
649 (((
650
651
652
653 )))
654
655 * (((
656 (% style="color:blue" %)**Grab a section.**
657 )))
658
659 (((
660 [[image:1653271648378-342.png||height="326" width="720"]]
661 )))
662
663 (((
664
665
666
667 )))
668
669 * (((
670 (% style="color:blue" %)**Grab different sections.**
671 )))
672
673 (((
674 [[image:1653271657255-576.png||height="305" width="730"]]
675
676
677 )))
678
679 (((
680 (((
681 (% style="color:red" %)**Note:**
682 )))
683 )))
684
685 (((
686 (((
687 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.
688
689
690 )))
691 )))
692
693 (((
694 (((
695 **Example:**
696 )))
697 )))
698
699 (((
700 (((
701 (% style="color:red" %)AT+COMMAND1=11 01 1E D0,0
702 )))
703 )))
704
705 (((
706 (((
707 (% style="color:red" %)AT+SEARCH1=1,1E 56 34
708 )))
709 )))
710
711 (((
712 (((
713 (% style="color:red" %)AT+DATACUT1=0,2,1~~5
714 )))
715 )))
716
717 (((
718 (((
719 (% style="color:red" %)Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
720 )))
721 )))
722
723 (((
724 (((
725 (% style="color:red" %)String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
726 )))
727 )))
728
729 (((
730 (((
731 (% style="color:red" %)Valid payload after DataCUT command: 2e 30 58 5f 36
732 )))
733 )))
734
735 (((
736 [[image:1653271763403-806.png]]
737 )))
738
739
740
741 === 3.3.4 Compose the uplink payload ===
742
743
744 (((
745 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.**
746
747
748 )))
749
750 (((
751 (% style="color:#037691" %)**Examples: AT+DATAUP=0**
752
753
754 )))
755
756 (((
757 Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**A SIGNLE UPLINK**.
758 )))
759
760 (((
761 Final Payload is
762 )))
763
764 (((
765 (% style="color:#4f81bd" %)**Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx**
766 )))
767
768 (((
769 Where PAYVER is defined by AT+PAYVER, below is an example screen shot.
770 )))
771
772 [[image:1653272787040-634.png||height="515" width="719"]]
773
774
775
776 (((
777 (% style="color:#037691" %)**Examples: AT+DATAUP=1**
778
779
780 )))
781
782 (((
783 Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**Multiply UPLINKs**.
784 )))
785
786 (((
787 Final Payload is
788 )))
789
790 (((
791 (% style="color:#4f81bd" %)**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**
792 )))
793
794 1. (((
795 Battery Info (2 bytes): Battery voltage
796 )))
797 1. (((
798 PAYVER (1 byte): Defined by AT+PAYVER
799 )))
800 1. (((
801 PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
802 )))
803 1. (((
804 PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
805 )))
806 1. (((
807 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
808
809
810 )))
811
812 [[image:1653272817147-600.png||height="437" width="717"]]
813
814 So totally there will be 3 uplinks for this sampling, each uplink includes 6 bytes DATA
815
816
817 DATA1=RETURN1 Valid Value = (% style="background-color:#4f81bd; color:white" %) 20 20 0a 33 90 41
818
819 DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= (% _mstmutation="1" style="background-color:#4f81bd; color:white" %)02 aa 05 81 0a 20
820
821 DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 =(% _mstmutation="1" style="background-color:#4f81bd; color:white" %) 20 20 20 2d 30
822
823
824 Below are the uplink payloads:
825
826 [[image:1653272901032-107.png]]
827
828
829 (% style="color:red" %)**Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:**
830
831 ~* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
832
833 * For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
834
835 * For US915 band, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
836
837 ~* For all other bands: max 51 bytes for each uplink  ( so 51 -5 = 46 max valid date).
838
839 *(% style="color:red" %)** When AT+DATAUP=1, the maximum number of segments is 15, and the maximum total number of bytes is 1500;**
840
841 (% style="color:red" %)** When AT+DATAUP=1 and AT+ADR=0, the maximum number of bytes of each payload is determined by the DR value. (Since v1.4.0)**
842
843 (((
844
845 )))
846
847 * (((
848 (% style="color:blue" %)**If the data is empty, return to the display(Since v1.4.0)**
849 )))
850
851 (% class="wikigeneratedid" %)
852 1)When AT+MOD=1, if the data intercepted by AT+DATACUT or AT+MBFUN is empty, it will display NULL, and the payload will be filled with n FFs.
853
854 (% class="wikigeneratedid" %)
855 [[image:image-20220824114359-3.png||height="297" width="1106"]]
856
857 2)When AT+MOD=2, if the data intercepted by AT+DATACUT or AT+MBFUN is empty, it will display NULL, and the payload will be filled with n 00s.
858
859 [[image:image-20220824114330-2.png]]
860
861
862
863 === 3.3.5 Uplink on demand ===
864
865
866 (((
867 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.
868 )))
869
870 (((
871 Downlink control command:
872 )))
873
874 (((
875 **0x08 command**: Poll an uplink with current command set in RS485-BL.
876 )))
877
878 (((
879 **0xA8 command**: Send a command to RS485-BL and uplink the output from sensors.
880
881
882
883 )))
884
885 === 3.3.6 Uplink on Interrupt ===
886
887
888 Put the interrupt sensor between 3.3v_out and GPIO ext.
889
890 [[image:1653273818896-432.png]]
891
892
893 (((
894 AT+INTMOD=0  Disable Interrupt
895 )))
896
897 (((
898 AT+INTMOD=1  Interrupt trigger by rising or falling edge.
899 )))
900
901 (((
902 AT+INTMOD=2  Interrupt trigger by falling edge. ( Default Value)
903 )))
904
905 (((
906 AT+INTMOD=3  Interrupt trigger by rising edge.
907
908
909
910 )))
911
912 == 3.4 Uplink Payload ==
913
914
915 [[image:image-20220606105412-1.png]]
916
917 Below is the decoder for the first 3 bytes. The rest bytes are dynamic depends on different RS485 sensors.
918
919 (((
920 {{{function Decoder(bytes, port) {}}}
921 )))
922
923 (((
924 {{{//Payload Formats of RS485-BL Deceive}}}
925 )))
926
927 (((
928 {{{return {}}}
929 )))
930
931 (((
932 {{{ //Battery,units:V}}}
933 )))
934
935 (((
936 {{{ BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,}}}
937 )))
938
939 (((
940 {{{ //GPIO_EXTI }}}
941 )))
942
943 (((
944 {{{ EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",}}}
945 )))
946
947 (((
948 {{{ //payload of version}}}
949 )))
950
951 (((
952 {{{ Pay_ver:bytes[2],}}}
953 )))
954
955 (((
956 {{{ }; }}}
957 )))
958
959 (((
960 **}**
961
962
963 )))
964
965 (((
966 TTN V3 uplink screen shot.
967 )))
968
969 [[image:1653274001211-372.png||height="192" width="732"]]
970
971
972
973 == 3.5 Configure RS485-BL via AT or Downlink ==
974
975
976 (((
977 User can configure RS485-BL via AT Commands or LoRaWAN Downlink Commands
978 )))
979
980 (((
981 There are two kinds of Commands:
982 )))
983
984 * (((
985 (% style="color:#4f81bd" %)**Common Commands**(%%): They should be available for each sensor, such as: change uplink interval, reset device. For firmware v1.3, user can find what common commands it supports: [[AT Commands and Downlink Command>>doc:Main.End Device AT Commands and Downlink Command.WebHome]]
986 )))
987
988 * (((
989 (% style="color:#4f81bd" %)**Sensor Related Commands**(%%): These commands are special designed for RS485-BL.  User can see these commands below:
990
991
992
993
994 )))
995
996 === 3.5.1 Common Commands: ===
997
998
999 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: [[End Device AT Commands and Downlink Command>>doc:Main.End Device AT Commands and Downlink Command.WebHome]]
1000
1001
1002
1003 === 3.5.2 Sensor related commands: ===
1004
1005
1006
1007 ==== (% style="color:blue" %)**Choose Device Type (RS485 or TTL)(Since v1.3.3)**(%%) ====
1008
1009
1010 RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
1011
1012 * (% style="color:#037691" %)**AT Command**
1013
1014 **AT+MOD=1** ~/~/ Set to support RS485-MODBUS type sensors. User can connect multiply RS485 , Modbus sensors to the A / B pins.
1015
1016 **AT+MOD=2** ~/~/ Set to support TTL Level sensors, User can connect one TTL Sensor to the TXD/RXD/GND pins.
1017
1018
1019 * (% style="color:#037691" %)**Downlink Payload**
1020
1021 **0A aa**  ~-~->  same as AT+MOD=aa
1022
1023
1024
1025
1026 ==== (% style="color:blue" %)**RS485 Debug Command (AT+CFGDEV)**(%%) ====
1027
1028
1029 (((
1030 This command is used to configure the RS485 or TTL sensors; they won’t be used during sampling.
1031 )))
1032
1033 * (((
1034 (% style="color:#037691" %)**AT Command**
1035
1036 (((
1037 **AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m**  m: 0: no CRC; 1: add CRC-16/MODBUS in the end of this command.
1038 )))
1039 )))
1040
1041 (((
1042
1043 )))
1044
1045 * (((
1046 (% style="color:#037691" %)**Downlink Payload**
1047 )))
1048
1049 (((
1050 Format: A8 MM NN XX XX XX XX YY
1051 )))
1052
1053 (((
1054 Where:
1055 )))
1056
1057 * (((
1058 MM: 1: add CRC-16/MODBUS ; 0: no CRC
1059 )))
1060 * (((
1061 NN: The length of RS485 command
1062 )))
1063 * (((
1064 XX XX XX XX: RS485 command total NN bytes
1065 )))
1066 * (((
1067 YY: How many bytes will be uplink from the return of this RS485 command, if YY=0, RS485-BL will execute the downlink command without uplink; if YY>0, RS485-BL will uplink total YY bytes from the output of this RS485 command
1068
1069
1070
1071 )))
1072
1073 (((
1074 (% style="color:blue" %)**Example 1:**
1075 )))
1076
1077 (((
1078 To connect a Modbus Alarm with below commands.
1079 )))
1080
1081 * (((
1082 The command to active alarm is: 0A 05 00 04 00 01 **4C B0**. Where 0A 05 00 04 00 01 is the Modbus command to read the register 00 40 where stored the DI status. The 4C B0 is the CRC-16/MODBUS which calculate manually.
1083 )))
1084
1085 * (((
1086 The command to deactivate alarm is: 0A 05 00 04 00 00 **8D 70**. Where 0A 05 00 04 00 00 is the Modbus command to read the register 00 40 where stored the DI status. The 8D 70 is the CRC-16/MODBUS which calculate manually.
1087 )))
1088
1089 (((
1090 So if user want to use downlink command to control to RS485 Alarm, he can use:
1091 )))
1092
1093 (((
1094 (% style="color:#037691" %)**A8 01 06 0A 05 00 04 00 01 00**(%%): to activate the RS485 Alarm
1095 )))
1096
1097 (((
1098 (% style="color:#037691" %)**A8 01 06 0A 05 00 04 00 00 00**(%%): to deactivate the RS485 Alarm
1099 )))
1100
1101 (((
1102 A8 is type code and 01 means add CRC-16/MODBUS at the end, the 3^^rd^^ byte is 06, means the next 6 bytes are the command to be sent to the RS485 network, the final byte 00 means this command don’t need to acquire output.
1103 )))
1104
1105 (((
1106
1107
1108
1109 )))
1110
1111 (((
1112 (% style="color:blue" %)**Example 2:**
1113 )))
1114
1115 (((
1116 Check TTL Sensor return:
1117 )))
1118
1119 (((
1120 [[image:1654132684752-193.png]]
1121 )))
1122
1123
1124
1125
1126 ==== (% style="color:blue" %)**Set Payload version**(%%) ====
1127
1128
1129 This is the first byte of the uplink payload. RS485-BL can connect to different sensors. User can set the PAYVER field to tell server how to decode the current payload.
1130
1131 * (% style="color:#037691" %)**AT Command:**
1132
1133 **AT+PAYVER:   **Set PAYVER field = 1
1134
1135
1136 * (% style="color:#037691" %)**Downlink Payload:**
1137
1138 **0xAE 01**  ~-~-> Set PAYVER field =  0x01
1139
1140 **0xAE 0F**   ~-~-> Set PAYVER field =  0x0F
1141
1142
1143
1144
1145 ==== (% style="color:blue" %)**Set RS485 Sampling Commands**(%%) ====
1146
1147
1148 (((
1149 AT+COMMANDx, AT+DATACUTx and AT+SEARCHx
1150 )))
1151
1152 (((
1153 These three commands are used to configure how the RS485-BL polling data from Modbus device. Detail of usage please see : [[polling RS485 device>>||anchor="H3.3.3Configurereadcommandsforeachsampling"]].
1154 )))
1155
1156 (((
1157
1158 )))
1159
1160 * (((
1161 (% style="color:#037691" %)**AT Command:**
1162 )))
1163
1164 **AT+COMMANDx:  Configure RS485 read command to sensor.**
1165
1166 **AT+DATACUTx:  Configure how to handle return from RS485 devices.**
1167
1168 **AT+SEARCHx:  Configure search command**
1169
1170
1171 * (((
1172 (% style="color:#037691" %)**Downlink Payload:**
1173 )))
1174
1175 (((
1176 **0xAF** downlink command can be used to set AT+COMMANDx or AT+DATACUTx.
1177 )))
1178
1179 (((
1180 (% style="color:red" %)**Note**(%%): if user use AT+COMMANDx to add a new command, he also need to send AT+DATACUTx downlink.
1181 )))
1182
1183 (((
1184 Format: AF MM NN LL XX XX XX XX YY
1185 )))
1186
1187 (((
1188 Where:
1189 )))
1190
1191 * (((
1192 MM: the ATCOMMAND or AT+DATACUT to be set. Value from 01 ~~ 0F,
1193 )))
1194 * (((
1195 NN:  0: no CRC; 1: add CRC-16/MODBUS ; 2: set the AT+DATACUT value.
1196 )))
1197 * (((
1198 LL:  The length of AT+COMMAND or AT+DATACUT command
1199 )))
1200 * (((
1201 XX XX XX XX: AT+COMMAND or AT+DATACUT command
1202 )))
1203 * (((
1204 YY:  If YY=0, RS485-BL will execute the downlink command without uplink; if YY=1, RS485-BL will execute an uplink after got this command.
1205 )))
1206
1207 (((
1208 **Example:**
1209 )))
1210
1211 (((
1212 (% style="color:#037691" %)**AF 03 01 06 0A 05 00 04 00 01 00**(%%): Same as AT+COMMAND3=0A 05 00 04 00 01,1
1213 )))
1214
1215 (((
1216 (% style="color:#037691" %)**AF 03 02 06**(% style="color:orange" %)** 10 **(% style="color:red" %)**01 **(% style="color:green" %)**05 06 09 0A**(% style="color:#037691" %)** 00**(%%): Same as AT+DATACUT3=(% style="color:orange" %)**16**(%%),(% style="color:red" %)**1**(%%),(% style="color:green" %)**5+6+9+10**
1217 )))
1218
1219 (((
1220 (% style="color:#037691" %)**AF 03 02 06 **(% style="color:orange" %)**0B**(% style="color:red" %)** 02 **(% style="color:green" %)**05 07 08 0A **(% style="color:#037691" %)**00**(%%): Same as AT+DATACUT3=(% style="color:orange" %)**11**(%%),(% style="color:red" %)**2**(%%),(% style="color:green" %)**5~~7+8~~10**
1221 )))
1222
1223 (((
1224
1225 )))
1226
1227 (((
1228 **0xAB** downlink command can be used for set AT+SEARCHx
1229 )))
1230
1231 (((
1232 **Example:** **AB aa 01 03 xx xx xx** (03 here means there are total 3 bytes after 03) So
1233 )))
1234
1235 * (((
1236 AB aa 01 03 xx xx xx  same as AT+SEARCHaa=1,xx xx xx
1237 )))
1238 * (((
1239 AB aa 02 03 xx xx xx 02 yy yy(03 means there are 3 bytes after 03, they are xx xx xx;02 means there are 2 bytes after 02, they are yy yy) so the commands
1240 )))
1241
1242 (((
1243 **AB aa 02 03 xx xx xx 02 yy yy**  same as **AT+SEARCHaa=2,xx xx xx+yy yy**
1244 )))
1245
1246
1247
1248
1249 ==== (% style="color:blue" %)**Fast command to handle MODBUS device**(%%) ====
1250
1251
1252 (((
1253 AT+MBFUN is valid since v1.3 firmware version. The command is for fast configure to read Modbus devices. It is only valid for the devices which follow the [[MODBUS-RTU protocol>>url:https://www.modbustools.com/modbus.html]].
1254 )))
1255
1256 (((
1257 This command is valid since v1.3 firmware version
1258 )))
1259
1260 (((
1261
1262 )))
1263
1264 (((
1265 (% style="color:#037691" %)**AT+MBFUN has only two value:**
1266 )))
1267
1268 * (((
1269 **AT+MBFUN=1**: Enable Modbus reading. And get response base on the MODBUS return
1270 )))
1271
1272 (((
1273 AT+MBFUN=1, device can auto read the Modbus function code: 01, 02, 03 or 04. AT+MBFUN has lower priority vs AT+DATACUT command. If AT+DATACUT command is configured, AT+MBFUN will be ignore.
1274 )))
1275
1276 * (((
1277 **AT+MBFUN=0**: Disable Modbus fast reading.
1278 )))
1279
1280 (((
1281
1282
1283 **Example:**
1284 )))
1285
1286 * (((
1287 AT+MBFUN=1 and AT+DATACUT1/AT+DATACUT2 are not configure (0,0,0).
1288 )))
1289 * (((
1290 AT+COMMAND1= 01 03 00 10 00 08,1 ~-~-> read slave address 01 , function code 03, start address 00 01, quantity of registers 00 08.
1291 )))
1292 * (((
1293 AT+COMMAND2= 01 02 00 40 00 10,1 ~-~-> read slave address 01 , function code 02, start address 00 40, quantity of inputs 00 10.
1294 )))
1295
1296 [[image:1654133913295-597.png]]
1297
1298
1299 [[image:1654133954153-643.png]]
1300
1301
1302 * (((
1303 (% style="color:#037691" %)**Downlink Commands:**
1304 )))
1305
1306 (((
1307 **A9 aa** ~-~-> Same as AT+MBFUN=aa
1308 )))
1309
1310
1311
1312
1313 ==== (% style="color:blue" %)**RS485 command timeout**(%%) ====
1314
1315
1316 (((
1317 Some Modbus device has slow action to send replies. This command is used to configure the RS485-BL to use longer time to wait for their action.
1318 )))
1319
1320 (((
1321 Default value: 0, range:  0 ~~ 5 seconds
1322 )))
1323
1324 (((
1325
1326 )))
1327
1328 * (((
1329 (% style="color:#037691" %)**AT Command:**
1330
1331 **AT+CMDDLaa=hex(bb cc)**
1332
1333
1334 )))
1335
1336 (((
1337 **Example:**
1338 )))
1339
1340 (((
1341 **AT+CMDDL1=1000** to send the open time to 1000ms
1342 )))
1343
1344 (((
1345
1346 )))
1347
1348 * (((
1349 (% style="color:#037691" %)**Downlink Payload:**
1350 )))
1351
1352 (((
1353 0x AA aa bb cc
1354 )))
1355
1356 (((
1357 Same as: AT+CMDDLaa=hex(bb cc)
1358 )))
1359
1360 (((
1361 **Example:**
1362 )))
1363
1364 (((
1365 (% _mstmutation="1" %)**0xAA 01 03 E8**(%%)  ~-~-> Same as (% _mstmutation="1" %)**AT+CMDDL1=1000 ms**
1366 )))
1367
1368
1369
1370
1371 ==== (% style="color:blue" %)**Uplink payload mode**(%%) ====
1372
1373
1374 (((
1375 Define to use one uplink or multiple uplinks for the sampling.
1376 )))
1377
1378 (((
1379 The use of this command please see: [[Compose Uplink payload>>||anchor="H3.3.4Composetheuplinkpayload"]]
1380 )))
1381
1382 * (((
1383 (% style="color:#037691" %)**AT Command:**
1384
1385 **AT+DATAUP=0**
1386
1387 **AT+DATAUP=1**
1388 )))
1389
1390 (((
1391
1392 )))
1393
1394 * (((
1395 (% style="color:#037691" %)**Downlink Payload:**
1396 )))
1397
1398 (((
1399 **0xAD 00**  **~-~->** Same as AT+DATAUP=0
1400 )))
1401
1402 (((
1403 **0xAD 01**  **~-~->** Same as AT+DATAUP=1  ~/~/Each uplink is sent to the server one after the other as it is segmented.
1404
1405
1406 )))
1407
1408 * (((
1409 (% style="color:#037691" %)**AT Command:**
1410
1411 **AT+DATAUP=1,Timeout**
1412 )))
1413
1414 (((
1415
1416 )))
1417
1418 * (((
1419 (% style="color:#037691" %)**Downlink Payload:**
1420 )))
1421
1422 (((
1423 **0xAD 01 00 00 14**  **~-~->** Same as AT+DATAUP=1,20000 ~/~/(00 00 14 is 20 seconds)
1424 )))
1425
1426 (((
1427 Each uplink is sent to the server at 20-second intervals when segmented.
1428 )))
1429
1430
1431
1432 ==== (% style="color:blue" %)**Manually trigger an Uplink**(%%) ====
1433
1434
1435 Ask device to send an uplink immediately.
1436
1437 * (% style="color:#037691" %)**Downlink Payload:**
1438
1439 **0x08 FF**, RS485-BL will immediately send an uplink.
1440
1441
1442
1443
1444 ==== (% style="color:blue" %)**Clear RS485 Command**(%%) ====
1445
1446
1447 (((
1448 The AT+COMMANDx and AT+DATACUTx settings are stored in special location, user can use below command to clear them.
1449 )))
1450
1451 (((
1452
1453 )))
1454
1455 * (((
1456 (% style="color:#037691" %)**AT Command:**
1457 )))
1458
1459 (((
1460 (% style="color:#037691" %)**AT+CMDEAR=mm,nn** (%%) mm: start position of erase ,nn: stop position of erase Etc. AT+CMDEAR=1,10 means erase AT+COMMAND1/AT+DATACUT1 to AT+COMMAND10/AT+DATACUT10
1461 )))
1462
1463 (((
1464 Example screen shot after clear all RS485 commands. 
1465 )))
1466
1467 (((
1468
1469 )))
1470
1471 (((
1472 The uplink screen shot is:
1473 )))
1474
1475 (((
1476 [[image:1654134704555-320.png]]
1477 )))
1478
1479 (((
1480
1481 )))
1482
1483 * (((
1484 (% style="color:#037691" %)**Downlink Payload:**
1485 )))
1486
1487 (((
1488 **0x09 aa bb** same as AT+CMDEAR=aa,bb
1489 )))
1490
1491
1492
1493
1494 ==== (% style="color:blue" %)**Set Serial Communication Parameters**(%%) ====
1495
1496
1497 (((
1498 Set the Rs485 serial communication parameters:
1499 )))
1500
1501 * (((
1502 (% style="color:#037691" %)**AT Command:**
1503 )))
1504
1505 (((
1506
1507
1508 * Set Baud Rate:
1509 )))
1510
1511 **AT+BAUDR=9600**    ~/~/ Options: (200~~115200),When using low baud rate or receiving multiple bytes, you need to use AT+CMDDL to increase the receive timeout (the default receive timeout is 300ms), otherwise data will be lost
1512
1513
1514
1515 * Set UART Parity
1516
1517 **AT+PARITY=0**    ~/~/ Option: 0: no parity, 1: odd parity, 2: even parity
1518
1519
1520 * Set STOPBIT
1521
1522 **AT+STOPBIT=0**    ~/~/ Option: 0 for 1bit; 1 for 1.5 bit ; 2 for 2 bits
1523
1524
1525 * (((
1526 (% style="color:#037691" %)**Downlink Payload:**
1527 )))
1528
1529 (((
1530 **A7 01 aa bb**: Same  AT+BAUDR=hex(aa bb)*100
1531 )))
1532
1533 (((
1534
1535
1536 **Example:**
1537 )))
1538
1539 * (((
1540 A7 01 00 60   same as AT+BAUDR=9600
1541 )))
1542 * (((
1543 A7 01 04 80  same as AT+BAUDR=115200
1544 )))
1545
1546 (((
1547 A7 02 aa: Same as  AT+PARITY=aa  (aa value: 00 , 01 or 02)
1548 )))
1549
1550 (((
1551 A7 03 aa: Same as  AT+STOPBIT=aa  (aa value: 00 , 01 or 02)
1552 )))
1553
1554
1555 ==== (% style="color:blue" %)**Encrypted payload**(%%) ====
1556
1557 (((
1558
1559 )))
1560
1561 * (((
1562 (% style="color:#037691" %)**AT Command:**
1563 )))
1564
1565 **AT+DECRYPT=1  **~/~/ The payload is uploaded without encryption
1566
1567 **AT+DECRYPT=0  **~/~/Encrypt when uploading payload (default)
1568
1569
1570 ==== (% style="color:blue" %)**Get sensor value**(%%) ====
1571
1572 (((
1573
1574 )))
1575
1576 * (((
1577 (% style="color:#037691" %)**AT Command:**
1578 )))
1579
1580 **AT+GETSENSORVALUE=0  **~/~/ The serial port gets the reading of the current sensor
1581
1582 **AT+GETSENSORVALUE=1  **~/~/The serial port gets the current sensor reading and uploads it.
1583
1584
1585
1586 ==== (% style="color:blue" %)**Resets the downlink packet count**(%%) ====
1587
1588 (((
1589
1590 )))
1591
1592 * (((
1593 (% style="color:#037691" %)**AT Command:**
1594 )))
1595
1596 **AT+DISFCNTCHECK=0  **~/~/ When the downlink packet count sent by the server is less than the node downlink packet count or exceeds 16384, the node will no longer receive downlink packets (default)
1597
1598 **AT+DISFCNTCHECK=1  **~/~/When the downlink packet count sent by the server is less than the node downlink packet count or exceeds 16384, the node resets the downlink packet count and keeps it consistent with the server downlink packet count.
1599
1600
1601 ==== (% style="color:blue" %)**When the limit bytes are exceeded, upload in batches**(%%) ====
1602
1603 (((
1604
1605 )))
1606
1607 * (((
1608 (% style="color:#037691" %)**AT Command:**
1609 )))
1610
1611 **AT+DISMACANS=0**  ~/~/ When the MACANS of the reply server plus the payload exceeds the maximum number of bytes of 11 bytes (DR0 of US915, DR2 of AS923, DR2 of AU195), the node will send a packet with a payload of 00 and a port of 4. (default)
1612
1613 **AT+DISMACANS=1**      ~/~/ When the MACANS of the reply server plus the payload exceeds the maximum number of bytes of the DR, the node will ignore the MACANS and not reply, and only upload the payload part.
1614
1615
1616 * (((
1617 (% style="color:#037691" %)**Downlink Payload**
1618 )))
1619
1620 **0x21 00 01 ** ~/~/ Set  the DISMACANS=1
1621
1622
1623 ==== (% style="color:blue" %)** Copy downlink to uplink **(%%) ====
1624
1625 (((
1626
1627 )))
1628
1629 * (((
1630 (% style="color:#037691" %)**AT Command:**
1631 )))
1632
1633 **AT+RPL=5**  ~/~/ After receiving the package from the server, it will immediately upload the content of the package to the server, the port number is 100.
1634
1635 Example:**aa xx xx xx xx**         ~/~/ aa indicates whether the configuration has changed, 00 is yes, 01 is no; xx xx xx xx are the bytes sent.
1636
1637 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50%20%26%20LSN50-V2%20-%20LoRaWAN%20Sensor%20Node%20User%20Manual/WebHome/image-20220823173747-6.png?width=1124&height=165&rev=1.1||alt="image-20220823173747-6.png"]]
1638
1639 For example, sending 11 22 33 44 55 66 77 will return invalid configuration 00 11 22 33 44 55 66 77.
1640
1641 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50%20%26%20LSN50-V2%20-%20LoRaWAN%20Sensor%20Node%20User%20Manual/WebHome/image-20220823173833-7.png?width=1124&height=149&rev=1.1||alt="image-20220823173833-7.png"]]
1642
1643 For example, if 01 00 02 58 is issued, a valid configuration of 01 01 00 02 58 will be returned.
1644
1645
1646
1647 ==== (% style="color:blue" %)**Query version number and frequency band 、TDC**(%%) ====
1648
1649
1650 * (((
1651 (% style="color:#037691" %)**Downlink Payload: 26 01  ** ~/~/ Downlink 26 01 can query device upload frequency, frequency band, software version number, TDC time.
1652 )))
1653
1654 Example:
1655
1656 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50%20%26%20LSN50-V2%20-%20LoRaWAN%20Sensor%20Node%20User%20Manual/WebHome/image-20220823173929-8.png?width=1205&height=76&rev=1.1||alt="image-20220823173929-8.png"]]
1657
1658
1659
1660 ==== (% style="color:blue" %)**Control output power duration**(%%) ====
1661
1662
1663 (((
1664 User can set the output power duration before each sampling.
1665 )))
1666
1667 * (((
1668 (% style="color:#037691" %)**AT Command:**
1669 )))
1670
1671 (((
1672 **Example:**
1673 )))
1674
1675 (((
1676 **AT+3V3T=1000**  ~/~/ 3V3 output power will open 1s before each sampling.
1677 )))
1678
1679 (((
1680 **AT+5VT=1000**  ~/~/ +5V output power will open 1s before each sampling.
1681 )))
1682
1683 (((
1684
1685 )))
1686
1687 * (((
1688 (% style="color:#037691" %)**LoRaWAN Downlink Command:**
1689 )))
1690
1691 (((
1692 **07 01 aa bb**  Same as AT+5VT=(aa bb)
1693 )))
1694
1695 (((
1696 **07 02 aa bb**  Same as AT+3V3T=(aa bb)
1697 )))
1698
1699
1700
1701 == 3.6 Buttons ==
1702
1703
1704 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:233px" %)
1705 |=(% style="width: 89px;" %)**Button**|=(% style="width: 141px;" %)**Feature**
1706 |(% style="width:89px" %)**RST**|(% style="width:141px" %)Reboot RS485-BL
1707
1708 == 3.7 +3V3 Output(Since v1.3.3) ==
1709
1710
1711 (((
1712 RS485-BL has a Controllable +3V3 output, user can use this output to power external sensor.
1713 )))
1714
1715 (((
1716 The +3V3 output will be valid for every sampling. RS485-BL will enable +3V3 output before all sampling and disable the +3V3 after all sampling. 
1717 )))
1718
1719 (((
1720 The +3V3 output time can be controlled by AT Command.
1721 )))
1722
1723 (((
1724
1725 )))
1726
1727 (((
1728 (% style="color:#037691" %)**AT+3V3T=1000**
1729 )))
1730
1731 (((
1732
1733 )))
1734
1735 (((
1736 Means set +3v3 valid time to have 1000ms. So, the real +3v3 output will actually have 1000ms + sampling time for other sensors.
1737 )))
1738
1739 (((
1740 By default, the AT+3V3T=0. This is a special case, means the +3V3 output is always on at any time
1741 )))
1742
1743
1744
1745 == 3.8 +5V Output(Since v1.3.3) ==
1746
1747
1748 (((
1749 RS485-BL has a Controllable +5V output, user can use this output to power external sensor.
1750 )))
1751
1752 (((
1753 The +5V output will be valid for every sampling. RS485-BL will enable +5V output before all sampling and disable the +5v after all sampling. 
1754 )))
1755
1756 (((
1757 The 5V output time can be controlled by AT Command.
1758 )))
1759
1760 (((
1761 (% style="color:red" %)**(AT+5VT increased from the maximum 5000ms to 65000ms.Since v1.4.0)**
1762 )))
1763
1764 (((
1765 (% style="color:#037691" %)**AT+5VT=1000**
1766 )))
1767
1768 (((
1769
1770 )))
1771
1772 (((
1773 Means set 5V valid time to have 1000ms. So, the real 5V output will actually have 1000ms + sampling time for other sensors.
1774 )))
1775
1776 (((
1777 By default, the AT+5VT=0. If the external sensor which require 5v and require more time to get stable state, user can use this command to increase the power ON duration for this sensor.
1778 )))
1779
1780
1781
1782 == 3.9 LEDs ==
1783
1784
1785 (% border="1" style="background-color:#ffffcc; color:green; width:332px" %)
1786 |=**LEDs**|=(% style="width: 274px;" %)**Feature**
1787 |**LED1**|(% style="width:274px" %)Blink when device transmit a packet.
1788
1789 == 3.10 Switch Jumper ==
1790
1791
1792 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:463px" %)
1793 |=(% style="width: 123px;" %)**Switch Jumper**|=(% style="width: 336px;" %)**Feature**
1794 |(% style="width:123px" %)**SW1**|(% style="width:336px" %)ISP position: Upgrade firmware via UART
1795 Flash position: Configure device, check running status.
1796 |(% style="width:123px" %)**SW2**|(% style="width:336px" %)5V position: set to compatible with 5v I/O.
1797 3.3v position: set to compatible with 3.3v I/O.,
1798
1799 (((
1800 **+3.3V**: is always ON
1801 )))
1802
1803 (((
1804 **+5V**: Only open before every sampling. The time is by default, it is AT+5VT=0.  Max open time. 65000 ms.(Since v1.4.0)
1805 )))
1806
1807
1808
1809 = 4. Case Study =
1810
1811
1812 User can check this URL for some case studies:  [[APP RS485 COMMUNICATE WITH SENSORS>>doc:Main.Application Note \: Communicate with Different Sensors ----- RS485-LN RS485-BL.WebHome]]
1813
1814
1815
1816 = 5. Use AT Command =
1817
1818
1819 == 5.1 Access AT Command ==
1820
1821
1822 (((
1823 RS485-BL supports AT Command set. User can use a USB to TTL adapter plus the 3.5mm Program Cable to connect to RS485-BL to use AT command, as below.
1824 )))
1825
1826 [[image:1654135840598-282.png]]
1827
1828
1829 (((
1830 In PC, User needs to set (% style="color:blue" %)**serial tool**(%%)(such as [[putty>>url:https://www.chiark.greenend.org.uk/~~sgtatham/putty/latest.html]], SecureCRT) baud rate to (% style="color:green" %)**9600**(%%) to access to access serial console of RS485-BL. The default password is 123456. Below is the output for reference:
1831 )))
1832
1833 [[image:1654136105500-922.png]]
1834
1835
1836 (((
1837 More detail AT Command manual can be found at [[AT Command Manual>>||anchor="H3.5ConfigureRS485-BLviaATorDownlink"]]
1838 )))
1839
1840
1841
1842 == 5.2 Common AT Command Sequence ==
1843
1844
1845 === 5.2.1 Multi-channel ABP mode (Use with SX1301/LG308) ===
1846
1847
1848 If device has not joined network yet:
1849
1850 * (% style="color:#037691" %)**AT+FDR**
1851 * (% style="color:#037691" %)**AT+NJM=0**
1852 * (% style="color:#037691" %)**ATZ**
1853
1854 (((
1855
1856
1857 If device already joined network:
1858
1859 * (% style="color:#037691" %)**AT+NJM=0**
1860 * (% style="color:#037691" %)**ATZ**
1861 )))
1862
1863
1864
1865
1866 === 5.5.2 Single-channel ABP mode (Use with LG01/LG02) ===
1867
1868
1869 (% style="background-color:#dcdcdc" %)**AT+FDR** (%%) Reset Parameters to Factory Default, Keys Reserve
1870
1871 (% style="background-color:#dcdcdc" %)**AT+NJM=0 **(%%) Set to ABP mode
1872
1873 (% style="background-color:#dcdcdc" %)**AT+ADR=0** (%%) Set the Adaptive Data Rate Off
1874
1875 (% style="background-color:#dcdcdc" %)**AT+DR=5**  (%%) Set Data Rate
1876
1877 (% style="background-color:#dcdcdc" %)**AT+TDC=60000** (%%) Set transmit interval to 60 seconds
1878
1879 (% style="background-color:#dcdcdc" %)**AT+CHS=868400000**(%%)  Set transmit frequency to 868.4Mhz
1880
1881 (% style="background-color:#dcdcdc" %)**AT+RX2FQ=868400000** (%%) Set RX2Frequency to 868.4Mhz (according to the result from server)
1882
1883 (% style="background-color:#dcdcdc" %)**AT+RX2DR=5**  (%%) Set RX2DR to match the downlink DR from server. see below
1884
1885 (% style="background-color:#dcdcdc" %)**AT+DADDR=26** (%%) 01 1A F1 Set Device Address to 26 01 1A F1, this ID can be found in the LoRa Server portal.
1886
1887 (% style="background-color:#dcdcdc" %)**ATZ**       (%%) Reset MCU
1888
1889
1890 (% style="color:red" %)**Note:**
1891
1892 (((
1893 (% style="color:red" %)1. Make sure the device is set to ABP mode in the IoT Server.
1894 2. Make sure the LG01/02 gateway RX frequency is exactly the same as AT+CHS setting.
1895 3. Make sure SF / bandwidth setting in LG01/LG02 match the settings of AT+DR. refer [[this link>>url:http://www.dragino.com/downloads/index.php?dir=LoRa_Gateway/&file=LoRaWAN%201.0.3%20Regional%20Parameters.xlsx]] to see what DR means.
1896 4. The command AT+RX2FQ and AT+RX2DR is to let downlink work. to set the correct parameters, user can check the actually downlink parameters to be used. As below. Which shows the RX2FQ should use 868400000 and RX2DR should be 5
1897 )))
1898
1899 [[image:1654136435598-589.png]]
1900
1901
1902 5.2.3
1903
1904 = 6. FAQ =
1905
1906
1907 == 6.1 How to upgrade the image? ==
1908
1909
1910 (((
1911 The RS485-BL LoRaWAN Controller is shipped with a 3.5mm cable, the cable is used to upload image to RS485-BL to:
1912 )))
1913
1914 * (((
1915 Support new features
1916 )))
1917 * (((
1918 For bug fix
1919 )))
1920 * (((
1921 Change LoRaWAN bands.
1922 )))
1923
1924 (((
1925 Below shows the hardware connection for how to upload an image to RS485-BL:
1926 )))
1927
1928 [[image:1654136646995-976.png]]
1929
1930 (% style="color:blue" %)**Step1**(%%)**:** Download [[flash loader>>url:https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html]].
1931
1932 (% style="color:blue" %)**Step2**(%%)**:** Download the [[LT Image files>>url:http://www.dragino.com/downloads/index.php?dir=LT_LoRa_IO_Controller/LT33222-L/image/]].
1933
1934 (% style="color:blue" %)**Step3**(%%)**: **Open flashloader; choose the correct COM port to update.
1935
1936 [[image:image-20220602102605-1.png]]
1937
1938
1939 [[image:image-20220602102637-2.png]]
1940
1941
1942 [[image:image-20220602102715-3.png]]
1943
1944
1945
1946 == 6.2 How to change the LoRa Frequency Bands/Region? ==
1947
1948
1949 (((
1950 User can follow the introduction for [[how to upgrade image>>||anchor="H6.1Howtoupgradetheimage3F"]]. When download the images, choose the required image file for download.
1951 )))
1952
1953
1954
1955 == 6.3 How many RS485-Slave can RS485-BL connects? ==
1956
1957
1958 (((
1959 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>>||anchor="H3.3.3Configurereadcommandsforeachsampling"]].
1960 )))
1961
1962
1963
1964 == 6.4 How to Use RS485-BL  to connect to RS232 devices? ==
1965
1966
1967 [[Use RS485-BL or RS485-LN to connect to RS232 devices. - DRAGINO>>url:http://8.211.40.43:8080/xwiki/bin/view/Main/RS485%20to%20RS232/]]
1968
1969
1970
1971 = 7. Trouble Shooting =
1972
1973
1974 == 7.1 Downlink doesn't work, how to solve it? ==
1975
1976
1977 Please see this link for debug: [[LoRaWAN Communication Debug>>doc:Main.LoRaWAN Communication Debug.WebHome]]
1978
1979
1980
1981 == 7.2 Why I can't join TTN V3 in US915 /AU915 bands? ==
1982
1983
1984 It might about the channels mapping. Please see for detail: [[Notice of Frequency band>>doc:Main.LoRaWAN Communication Debug.WebHome||anchor="H2.NoticeofUS9152FCN4702FAU915Frequencyband"]]
1985
1986
1987
1988 = 8. Order Info =
1989
1990
1991 (% style="color:blue" %)**Part Number: RS485-BL-XXX**
1992
1993 (% style="color:blue" %)**XXX:**
1994
1995 * (% style="color:red" %)**EU433**(%%):  frequency bands EU433
1996 * (% style="color:red" %)**EU868**(%%):  frequency bands EU868
1997 * (% style="color:red" %)**KR920**(%%):  frequency bands KR920
1998 * (% style="color:red" %)**CN470**(%%):  frequency bands CN470
1999 * (% style="color:red" %)**AS923**(%%):  frequency bands AS923
2000 * (% style="color:red" %)**AU915**(%%):  frequency bands AU915
2001 * (% style="color:red" %)**US915**(%%):  frequency bands US915
2002 * (% style="color:red" %)**IN865**(%%):  frequency bands IN865
2003 * (% style="color:red" %)**RU864**(%%):  frequency bands RU864
2004 * (% style="color:red" %)**KZ865**(%%):  frequency bands KZ865
2005
2006 = 9. Packing Info =
2007
2008
2009 (((
2010 **Package Includes**:
2011 )))
2012
2013 * (((
2014 RS485-BL x 1
2015 )))
2016 * (((
2017 Stick Antenna for LoRa RF part x 1
2018 )))
2019 * (((
2020 Program cable x 1
2021 )))
2022
2023 (((
2024 **Dimension and weight**:
2025 )))
2026
2027 * (((
2028 Device Size: 13.5 x 7 x 3 cm
2029 )))
2030 * (((
2031 Device Weight: 105g
2032 )))
2033 * (((
2034 Package Size / pcs : 14.5 x 8 x 5 cm
2035 )))
2036 * (((
2037 Weight / pcs : 170g
2038
2039
2040
2041
2042 )))
2043
2044 = 10. Support =
2045
2046
2047 * (((
2048 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.
2049 )))
2050 * (((
2051 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:file:///D:/市场资料/说明书/LoRa/LT系列/support@dragino.com]]
2052
2053
2054
2055 )))