Version 63.3 by Xiaoling on 2022/09/12 10:26

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