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

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 == 1.1 What is RS485-BL RS485 to LoRaWAN Converter ==
17
18
19 (((
20 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.
21 )))
22
23 (((
24 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.
25 )))
26
27 (((
28 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.
29 )))
30
31 (((
32 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.
33 )))
34
35 (((
36 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.
37 )))
38
39 (((
40 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.
41 )))
42
43 (((
44 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.
45
46
47 )))
48
49 [[image:1652953304999-717.png||height="424" width="733"]]
50
51
52 == 1.2 Specifications ==
53
54
55 (% style="color:#037691" %)**Operate Temperature:**
56
57 * -40°C ~~ 65°C
58
59 (% style="color:#037691" %)**Hardware System:**
60
61 * STM32L072xxxx MCU
62 * SX1276/78 Wireless Chip 
63 * Power Consumption (exclude RS485 device):
64 ** Idle: 6uA@3.3v
65 ** 20dB Transmit: 130mA@3.3v
66 * 5V sampling maximum current:500mA
67
68 (% style="color:#037691" %)**Interface for Model:**
69
70 * 1 x RS485 Interface
71 * 1 x TTL Serial , 3.3v or 5v.
72 * 1 x I2C Interface, 3.3v or 5v.
73 * 1 x one wire interface
74 * 1 x Interrupt Interface
75 * 1 x Controllable 5V output, max
76
77 (% style="color:#037691" %)**LoRa Spec:**
78
79 * Frequency Range:
80 ** Band 1 (HF): 862 ~~ 1020 Mhz
81 ** Band 2 (LF): 410 ~~ 528 Mhz
82 * 168 dB maximum link budget.
83 * +20 dBm - 100 mW constant RF output vs.
84 * Programmable bit rate up to 300 kbps.
85 * High sensitivity: down to -148 dBm.
86 * Bullet-proof front end: IIP3 = -12.5 dBm.
87 * Excellent blocking immunity.
88 * Fully integrated synthesizer with a resolution of 61 Hz.
89 * LoRa modulation.
90 * Built-in bit synchronizer for clock recovery.
91 * Preamble detection.
92 * 127 dB Dynamic Range RSSI.
93 * Automatic RF Sense and CAD with ultra-fast AFC.
94
95 ​​​
96
97 == 1.3 Features ==
98
99
100 * LoRaWAN Class A & Class C protocol (default Class A)
101 * Frequency Bands: CN470/EU433/KR920/US915/EU868/AS923/AU915/IN865/RU864/MA869
102 * AT Commands to change parameters
103 * Remote configure parameters via LoRaWAN Downlink
104 * Firmware upgradable via program port
105 * Support multiply RS485 devices by flexible rules
106 * Support Modbus protocol
107 * Support Interrupt uplink
108
109 == 1.4 Applications ==
110
111
112 * Smart Buildings & Home Automation
113 * Logistics and Supply Chain Management
114 * Smart Metering
115 * Smart Agriculture
116 * Smart Cities
117 * Smart Factory
118
119 == 1.5 Firmware Change log ==
120
121
122 [[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);"]]
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 = 2. Pin mapping and Power ON Device =
175
176
177 (((
178 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.
179
180
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 = 3. Operation Mode =
190
191 == 3.1 How it works? ==
192
193
194 (((
195 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.
196
197
198 )))
199
200 == 3.2 Example to join LoRaWAN network ==
201
202
203 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. 
204
205 [[image:1652953414711-647.png||height="337" width="723"]]
206
207
208 (((
209 The RS485-BL in this example connected to two RS485 devices for demonstration, user can connect to other RS485 devices via the same method.
210 )))
211
212 (((
213 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:
214
215
216 )))
217
218 (((
219 (% style="color:blue" %)**Step 1**(%%): Create a device in TTN V3 with the OTAA keys from RS485-BL.
220 )))
221
222 (((
223 Each RS485-BL is shipped with a sticker with unique device EUI:
224 )))
225
226 [[image:image-20230425173638-1.png||height="254" width="547"]]
227
228
229 (((
230 You can enter this key in the LoRaWAN Server portal. Below is TTN screen shot:
231
232 **Create the application.**
233
234 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/SAC01L_LoRaWAN_Temperature%26Humidity_Sensor_User_Manual/WebHome/image-20250423093843-1.png?width=756&height=264&rev=1.1||alt="image-20250423093843-1.png"]]
235
236 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111305-2.png?width=1000&height=572&rev=1.1||alt="image-20240907111305-2.png"]]
237
238 **Add devices to the created Application.**
239
240 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111659-3.png?width=977&height=185&rev=1.1||alt="image-20240907111659-3.png"]]
241
242 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907111820-5.png?width=975&height=377&rev=1.1||alt="image-20240907111820-5.png"]]
243
244
245 **Enter end device specifics manually.**
246
247 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907112136-6.png?width=697&height=687&rev=1.1||alt="image-20240907112136-6.png"]]
248
249 **Add DevEUI and AppKey.**
250
251 **Customize a platform ID for the device.**
252
253 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LTC2-LB--LoRaWAN_Temperature_Transmitter_User_Manual/WebHome/image-20240907112427-7.png?rev=1.1||alt="image-20240907112427-7.png"]]
254
255
256 (% style="color:blue" %)**Step 2**(%%): Add decoder.
257
258 In TTN, user can add a custom payload so it shows friendly reading.
259
260 Click this link to get the decoder: [[https:~~/~~/github.com/dragino/dragino-end-node-decoder/tree/main/>>url:https://github.com/dragino/dragino-end-node-decoder/tree/main/]]
261
262 Below is TTN screen shot:
263
264 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LDS25-LBLDS25-LS--LoRaWAN_LiDAR_Distance_Auto-Clean_Sensor_User_Manual/WebHome/image-20241009140556-1.png?width=1184&height=488&rev=1.1||alt="image-20241009140556-1.png" height="488" width="1184"]]
265
266 [[image:https://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LDS25-LBLDS25-LS--LoRaWAN_LiDAR_Distance_Auto-Clean_Sensor_User_Manual/WebHome/image-20241009140603-2.png?width=1168&height=562&rev=1.1||alt="image-20241009140603-2.png" height="562" width="1168"]]
267
268
269 )))
270
271 (((
272 (% style="color:blue" %)**Step 3**(%%): Activate on RS485-BL.
273
274 Press the button for 5 seconds to activate the RS485-BL. 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.
275 )))
276
277 [[image:1652953568895-172.png||height="232" width="724"]]
278
279
280 == 3.3 Configure Device to Read RS485 Sensor ==
281
282
283 (((
284 There are plenty of RS485 and TTL level devices in the market and each device has different commands to read the valid data. To support these devices in most flexible, RS485-BL supports flexible command set. User can use [[Dragino RS485 Tool>>url:https://www.dropbox.com/sh/us9qecn39fwt8n1/AABREdqUCzEmJMRrfuWuXasoa?dl=0]],  [[AT Commands or LoRaWAN Downlink>>url:http://wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LB_Waterproof_RS485UART_to_LoRaWAN_Converter/#H3.5ConfigureRS485-LBviaATorDownlink]] Command to configure how RS485-BL should read the sensor and how to handle the return from RS485 or TTL sensors.
285
286
287 === 3.3.1 Method 1 ~-~- via RS485 Configure Tool ===
288
289
290 Use the RS485 Configure tool is the recommand method. Please see the instruction of how to use the tool:
291
292 * **[[RS485 Configure Tool Instruction>>url:http://wiki.dragino.com/xwiki/bin/view/Main/RS485_Configure_Tool/]]**
293
294 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LB_Waterproof_RS485UART_to_LoRaWAN_Converter/WebHome/image-20231127144411-1.png?width=494&height=368&rev=1.1||alt="image-20231127144411-1.png" height="368" width="494"]]
295 )))
296
297
298 === 3.3.2 Method 2 ~-~- via AT Commands ===
299
300 ==== 3.3.2.1 Configure UART settings for RS485 or TTL communication(Since v1.3.3) ====
301
302
303 (((
304 RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
305 )))
306
307
308 (((
309 (% style="color:blue" %)**1.  RS485-MODBUS mode:**
310 )))
311
312 (((
313 (% style="color:#037691" %)**AT+MOD=1**  (%%) ~/~/ Support RS485-MODBUS type sensors. User can connect multiply RS485 , Modbus sensors to the A / B pins.
314 )))
315
316
317 (((
318 (% style="color:blue" %)**2.  TTL mode:**
319 )))
320
321 (((
322 (% style="color:#037691" %)**AT+MOD=2**  (%%) ~/~/ Support TTL Level sensors, User can connect one TTL Sensor to the TXD/RXD/GND pins.
323 )))
324
325 (((
326 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.
327 )))
328
329 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
330 |=(% style="width: 140px; background-color:#4F81BD;color:white" %)(((
331 (((
332 **AT Commands**
333 )))
334 )))|=(% style="width: 132px; background-color:#4F81BD;color:white" %)(((
335 (((
336 **Description**
337 )))
338 )))|=(% style="width: 238px;background-color:#4F81BD;color:white" %)(((
339 (((
340 **Example**
341 )))
342 )))
343 |(% style="width:120px" %)(((
344 (((
345 AT+BAUDR
346 )))
347 )))|(% style="width:115px" %)(((
348 (((
349 Set the baud rate (for RS485 connection).
350 Default Value is: 9600.
351 )))
352 )))|(% style="width:226px" %)(((
353 (((
354 (((
355 AT+BAUDR=9600
356 )))
357 )))
358
359 (((
360 (((
361 Options: (1200,2400,4800,14400,19200,115200)
362 )))
363 )))
364 )))
365 |(% style="width:120px" %)(((
366 (((
367 AT+PARITY
368 )))
369 )))|(% style="width:115px" %)(((
370 (((
371 (((
372 Set UART parity (for RS485 connection)
373 )))
374 )))
375
376 (((
377 (((
378 Default Value is: no parity.
379 )))
380 )))
381 )))|(% style="width:226px" %)(((
382 (((
383 (((
384 AT+PARITY=0
385 )))
386 )))
387
388 (((
389 (((
390 Option: 0: no parity, 1: odd parity, 2: even parity
391 )))
392 )))
393 )))
394 |(% style="width:120px" %)(((
395 (((
396 AT+STOPBIT
397 )))
398 )))|(% style="width:115px" %)(((
399 (((
400 (((
401 Set serial stopbit (for RS485 connection)
402 )))
403 )))
404
405 (((
406 (((
407 Default Value is: 1bit.
408 )))
409 )))
410 )))|(% style="width:226px" %)(((
411 (((
412 (((
413 AT+STOPBIT=0 for 1bit
414 )))
415 )))
416
417 (((
418 (((
419 AT+STOPBIT=1 for 1.5 bit
420 )))
421 )))
422
423 (((
424 (((
425 AT+STOPBIT=2 for 2 bits
426 )))
427 )))
428 )))
429
430 Example(Soil three-parameter detector):
431
432 (% style="color:blue" %)**Wiring the UART sensor**
433
434 (((
435 **GND <~-~-~-~-~-~-~-~-> GND
436 TX  <~-~-~-~-~-~-~-~->  RX
437 RX  <~-~-~-~-~-~-~-~->  TX
438 VCC  <~-~-~-~-~-~-~-~->  3.3/5V**
439 )))
440
441 [[image:image-20230220110129-1.png||height="277" width="395"]]
442
443
444 (% style="color:blue" %)**Set the correct configuration:**
445
446 (% style="color:#037691" %)**AT+BAUDR=9600**
447
448 (% style="color:#037691" %)**AT+PARITY=0**
449
450 (% style="color:#037691" %)**AT+STOPBIT=1**
451
452 If the sensor needs 5v. Need to move the switch position to 5v and then use the command
453
454 (% style="color:blue" %)**AT+5VT=30000**
455
456
457 (% style="color:blue" %)**Configuration read command:**
458
459 (% style="color:#037691" %)**AT+CFGDEV=FE 03 00 00 00 03 11 C4,0**
460
461 **FE:** Station address
462
463 **03:** Function code
464
465 **00 00: **Register start address
466
467 **00 03:** Number of registers
468
469 **11 04:**  Check code
470
471 [[image:image-20230220111709-2.png]]
472
473
474 Use AT+COMMAND1 to set it as a command, and use AT+DATACUT1 to intercept the bytes I need
475
476 [[image:image-20230220112421-3.png]]
477
478
479 (% style="color:blue" %)**upload payload:**
480
481 [[image:image-20230220112517-4.png]]
482
483
484 === 3.3.3  Configure sensors ===
485
486
487 (((
488 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**.
489 )))
490
491 (((
492 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.
493 )))
494
495 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
496 |=(% style="width: 130px;background-color:#4F81BD;color:white" %)**AT Commands**|=(% style="width: 190px;background-color:#4F81BD;color:white" %)**Description**|=(% style="width: 190px;background-color:#4F81BD;color:white" %)**Example**
497 |(% style="width:121px" %)AT+CFGDEV|(% style="width:179px" %)(((
498 (((
499 This command is used to configure the RS485/TTL devices; they won’t be used during sampling.
500 )))
501
502 (((
503 AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,
504 )))
505
506 (((
507 mm: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
508 )))
509 )))|(% style="width:210px" %)AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
510
511 Detail of AT+CFGDEV command see [[AT+CFGDEV detail>>||anchor="HRS485DebugCommand28AT2BCFGDEV29"]].
512
513
514 === 3.3.4 Configure read commands for each sampling ===
515
516
517 (((
518 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.
519 )))
520
521 (((
522 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.
523 )))
524
525 (((
526 To save the LoRaWAN network bandwidth, we might need to read data from different sensors and combine their valid value into a short payload.
527 )))
528
529 (((
530 This section describes how to achieve above goals.
531 )))
532
533 (((
534 During each sampling, the RS485-BL can support 15 commands to read sensors. And combine the return to one or several uplink payloads.
535
536
537 )))
538
539 (((
540 (% style="color:blue" %)**Command from RS485-BL to Sensor:**
541 )))
542
543 (((
544 RS485-BL can send out pre-set max 15 strings via **AT+COMMAD1**, **ATCOMMAND2**,…, to **AT+COMMANDF** . All commands are of same grammar.
545
546
547 )))
548
549 (((
550 (% style="color:blue" %)**Handle return from sensors to RS485-BL**:
551 )))
552
553 (((
554 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**
555 )))
556
557 * (((
558 (% style="color:blue" %)**AT+DATACUT**
559 )))
560
561 (((
562 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.
563
564
565 )))
566
567 * (((
568 (% style="color:blue" %)**AT+SEARCH**
569 )))
570
571 (((
572 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.
573 )))
574
575 (((
576
577
578 (% style="color:blue" %)**Define wait timeout:**
579 )))
580
581 (((
582 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
583 )))
584
585 (((
586 After we got the valid value from each RS485 commands, we need to combine them together with the command **AT+DATAUP**.
587 )))
588
589 (((
590
591
592 **Examples:**
593 )))
594
595 (((
596 Below are examples for the how above AT Commands works.
597 )))
598
599 (((
600 (% 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:
601
602
603 )))
604
605 (% border="1" class="table-bordered" style="background-color:#f2f2f2; width:497px" %)
606 |(% style="width:494px" %)(((
607 (((
608 **AT+COMMANDx=xx xx xx xx xx xx xx xx xx xx xx xx,m**
609 )))
610
611 (((
612 **xx xx xx xx xx xx xx xx xx xx xx xx: The RS485 command to be sent**
613 )))
614
615 (((
616 **m: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command**
617 )))
618 )))
619
620 (((
621 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.
622 )))
623
624 (((
625 In the RS485-BL, we should use this command AT+COMMAND1=01 03 0B B8 00 02,1 for the same.
626 )))
627
628 (((
629
630 )))
631
632 (((
633 (% style="color:blue" %)**AT+SEARCHx**(%%): This command defines how to handle the return from AT+COMMANDx.
634
635
636 )))
637
638 (% border="1" class="table-bordered" style="background-color:#f2f2f2; width:473px" %)
639 |(% style="width:470px" %)(((
640 (((
641 **AT+SEARCHx=aa,xx xx xx xx xx**
642 )))
643
644 * (((
645 **aa: 1: prefix match mode; 2: prefix and suffix match mode**
646 )))
647 * (((
648 **xx xx xx xx xx: match string. Max 5 bytes for prefix and 5 bytes for suffix**
649 )))
650 )))
651
652 (((
653
654
655 **Examples:**
656 )))
657
658 (((
659 1) For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
660 )))
661
662 (((
663 If we set AT+SEARCH1=1,1E 56 34.      (max 5 bytes for prefix)
664 )))
665
666 (((
667 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**
668 )))
669
670 (((
671 [[image:1653271044481-711.png]]
672
673
674 )))
675
676 (((
677 2) For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
678 )))
679
680 (((
681 If we set AT+SEARCH1=2, 1E 56 34+31 00 49
682 )))
683
684 (((
685 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**
686 )))
687
688 (((
689 [[image:1653271276735-972.png]]
690 )))
691
692 (((
693 **AT+DATACUTx : **This command defines how to handle the return from AT+COMMANDx, max return length is 100 bytes.(Since 1.4.0)
694 )))
695
696 (% style="background-color:#f2f2f2; width:496px" %)
697 |(% style="width:493px" %)(((
698 (((
699 **AT+DATACUTx=a,b,c**
700 )))
701
702 * (((
703 **a: length for the return of AT+COMMAND**
704 )))
705 * (((
706 **b:1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections.**
707 )))
708 * (((
709 **c: define the position for valid value.  **
710 )))
711 )))
712
713 (((
714
715
716 **Examples:**
717 )))
718
719 * (((
720 (% style="color:blue" %)**Grab bytes:**
721 )))
722
723 (((
724 [[image:1653271581490-837.png||height="313" width="722"]]
725 )))
726
727 (((
728
729 )))
730
731 * (((
732 (% style="color:blue" %)**Grab a section.**
733 )))
734
735 (((
736 [[image:1653271648378-342.png||height="326" width="720"]]
737 )))
738
739 (((
740
741 )))
742
743 * (((
744 (% style="color:blue" %)**Grab different sections.**
745 )))
746
747 (((
748 [[image:1653271657255-576.png||height="305" width="730"]]
749
750
751 )))
752
753 (((
754 (((
755 (% style="color:red" %)**Note:**
756 )))
757 )))
758
759 (((
760 (((
761 (% 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**.
762
763
764 )))
765 )))
766
767 (((
768 (((
769 **Example:**
770 )))
771 )))
772
773 (((
774 (((
775 (% style="color:red" %)AT+COMMAND1=11 01 1E D0,0
776 )))
777 )))
778
779 (((
780 (((
781 (% style="color:red" %)AT+SEARCH1=1,1E 56 34
782 )))
783 )))
784
785 (((
786 (((
787 (% style="color:red" %)AT+DATACUT1=0,2,1~~5
788 )))
789 )))
790
791 (((
792 (((
793 (% style="color:red" %)Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
794 )))
795 )))
796
797 (((
798 (((
799 (% style="color:red" %)String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
800 )))
801 )))
802
803 (((
804 (((
805 (% style="color:red" %)Valid payload after DataCUT command: 2e 30 58 5f 36
806
807
808 )))
809 )))
810
811 (((
812 [[image:1653271763403-806.png]]
813 )))
814
815
816 === 3.3.4 Compose the uplink payload ===
817
818
819 (((
820 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.**
821
822
823 )))
824
825 (((
826 (% style="color:#037691" %)**Examples: AT+DATAUP=0**
827 )))
828
829 (((
830 Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**A SIGNLE UPLINK**.
831 )))
832
833 (((
834 Final Payload is
835 )))
836
837 (((
838 (% style="color:#4f81bd" %)**Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx**
839 )))
840
841 (((
842 Where PAYVER is defined by AT+PAYVER, below is an example screen shot.
843 )))
844
845 [[image:1653272787040-634.png||height="515" width="719"]]
846
847
848 (((
849 (% style="color:#037691" %)**Examples: AT+DATAUP=1**
850 )))
851
852 (((
853 Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**Multiply UPLINKs**.
854 )))
855
856 (((
857 Final Payload is
858 )))
859
860 (((
861 (% style="color:#4f81bd" %)**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**
862 )))
863
864 1. (((
865 Battery Info (2 bytes): Battery voltage
866 )))
867 1. (((
868 PAYVER (1 byte): Defined by AT+PAYVER
869 )))
870 1. (((
871 PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
872 )))
873 1. (((
874 PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
875 )))
876 1. (((
877 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
878
879
880 )))
881
882 [[image:1653272817147-600.png||height="437" width="717"]]
883
884 So totally there will be 3 uplinks for this sampling, each uplink includes 6 bytes DATA
885
886
887 DATA1=RETURN1 Valid Value = (% style="background-color:#4f81bd; color:white" %) 20 20 0a 33 90 41
888
889 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
890
891 DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 =(% _mstmutation="1" style="background-color:#4f81bd; color:white" %) 20 20 20 2d 30
892
893
894 Below are the uplink payloads:
895
896 [[image:1653272901032-107.png]]
897
898
899 (% style="color:red" %)**Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:**
900
901 ~* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
902
903 * For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
904
905 * For US915 band, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
906
907 ~* For all other bands: max 51 bytes for each uplink  ( so 51 -5 = 46 max valid date).
908
909 *(% style="color:red" %)** When AT+DATAUP=1, the maximum number of segments is 15, and the maximum total number of bytes is 1500;**
910
911 (% 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)**
912
913 (((
914
915 )))
916
917 * (((
918 (% style="color:blue" %)**If the data is empty, return to the display (Since v1.4.0)**
919 )))
920
921 (% class="wikigeneratedid" %)
922 **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**.
923
924
925 (% class="wikigeneratedid" %)
926 [[image:image-20220824114359-3.png||height="297" width="1106"]]
927
928
929
930 **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**.
931
932
933 [[image:image-20220824114330-2.png]]
934
935
936 === 3.3.5 Uplink on demand ===
937
938
939 (((
940 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.
941
942
943 )))
944
945 (((
946 (% style="color:blue" %)** Downlink control command:**
947 )))
948
949 (((
950 (% style="color:#4472c4" %)** 0x08 command**(%%): Poll an uplink with current command set in RS485-BL.
951 )))
952
953 (((
954 (% style="color:#4472c4" %)** 0xA8 command**(%%): Send a command to RS485-BL and uplink the output from sensors.
955 )))
956
957
958 === 3.3.6 Uplink on Interrupt ===
959
960
961 Put the interrupt sensor between 3.3v_out and GPIO ext.
962
963 [[image:1653273818896-432.png]]
964
965
966 (((
967 (% style="color:#4472c4" %)**AT+INTMOD=0**(%%)  Disable Interrupt
968 )))
969
970 (((
971 (% style="color:#4472c4" %)**AT+INTMOD=1**(%%)  Interrupt trigger by rising or falling edge.
972 )))
973
974 (((
975 (% style="color:#4472c4" %)**AT+INTMOD=2** (%%) Interrupt trigger by falling edge. (Default Value)
976 )))
977
978 (((
979 (% style="color:#4472c4" %)**AT+INTMOD=3**(%%)  Interrupt trigger by rising edge.
980 )))
981
982
983 == 3.4 Uplink Payload ==
984
985
986 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
987 |(% style="background-color:#4f81bd; color:white; width:60px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:white; width:100px" %)**2**|(% style="background-color:#4f81bd; color:white; width:80px" %)**1**|(% style="background-color:#4f81bd; color:white; width:270px" %)**Length depends on the return from the commands**
988 |Value|(((
989 Battery(mV) & Interrupt _Flag
990 )))|(((
991 PAYLOAD_VER
992
993
994 )))|If the valid payload is too long and exceed the maximum support payload length in server, server will show payload not provided in the LoRaWAN server.
995
996 Below is the decoder for the first 3 bytes. The rest bytes are dynamic depends on different RS485 sensors.
997
998
999 (((
1000 {{{function Decoder(bytes, port) {}}}
1001 )))
1002
1003 (((
1004 {{{//Payload Formats of RS485-BL Deceive}}}
1005 )))
1006
1007 (((
1008 {{{return {}}}
1009 )))
1010
1011 (((
1012 {{{ //Battery,units:V}}}
1013 )))
1014
1015 (((
1016 {{{ BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,}}}
1017 )))
1018
1019 (((
1020 {{{ //GPIO_EXTI }}}
1021 )))
1022
1023 (((
1024 {{{ EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",}}}
1025 )))
1026
1027 (((
1028 {{{ //payload of version}}}
1029 )))
1030
1031 (((
1032 {{{ Pay_ver:bytes[2],}}}
1033 )))
1034
1035 (((
1036 {{{ }; }}}
1037 )))
1038
1039 (((
1040 **}**
1041
1042
1043 )))
1044
1045 (((
1046 TTN V3 uplink screen shot.
1047 )))
1048
1049 [[image:1653274001211-372.png||height="192" width="732"]]
1050
1051
1052 == 3.5 Configure RS485-BL via AT or Downlink ==
1053
1054
1055 (((
1056 User can configure RS485-BL via AT Commands or LoRaWAN Downlink Commands
1057 )))
1058
1059 (((
1060 There are two kinds of Commands:
1061 )))
1062
1063 * (((
1064 (% 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]]
1065 )))
1066
1067 * (((
1068 (% style="color:#4f81bd" %)**Sensor Related Commands**(%%): These commands are special designed for RS485-BL.  User can see these commands below:
1069
1070
1071 )))
1072
1073 === 3.5.1 Common Commands: ===
1074
1075
1076 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]]
1077
1078
1079 === 3.5.2 Sensor related commands: ===
1080
1081
1082 ==== (% style="color:blue" %)**Choose Device Type (RS485 or TTL) (Since v1.3.3)**(%%) ====
1083
1084
1085 RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
1086
1087 * (% style="color:#037691" %)**AT Command**
1088
1089 (% 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.
1090
1091 (% style="color:#4472c4" %)** AT+MOD=2** (%%) ~/~/ Set to support TTL Level sensors, User can connect one TTL Sensor to the TXD/RXD/GND pins.
1092
1093
1094 * (% style="color:#037691" %)**Downlink Payload**
1095
1096 (% style="color:#4472c4" %)** 0A aa** (%%) ~-~->  same as AT+MOD=aa
1097
1098
1099 ==== (% style="color:blue" %)**RS485 Debug Command (AT+CFGDEV)**(%%) ====
1100
1101
1102 (((
1103 This command is used to configure the RS485 or TTL sensors; they won't be used during sampling. Max Length of AT+CFGDEV is **40 bytes**.
1104 )))
1105
1106 (((
1107 * (% style="color:#037691" %)**AT Command**
1108
1109 (((
1110 (% 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.
1111 )))
1112 )))
1113
1114 (((
1115
1116 )))
1117
1118 * (((
1119 (% style="color:#037691" %)**Downlink Payload**
1120 )))
1121
1122 (((
1123 Format:  (% style="color:#4472c4" %)** A8 MM NN XX XX XX XX YY**
1124 )))
1125
1126 (((
1127 Where:
1128 )))
1129
1130 * (((
1131 MM: 1: add CRC-16/MODBUS ; 0: no CRC
1132 )))
1133 * (((
1134 NN: The length of RS485 command
1135 )))
1136 * (((
1137 XX XX XX XX: RS485 command total NN bytes
1138 )))
1139 * (((
1140 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
1141
1142
1143 )))
1144
1145 (((
1146 (% style="color:blue" %)**Example 1:**
1147 )))
1148
1149 (((
1150 To connect a Modbus Alarm with below commands.
1151 )))
1152
1153 * (((
1154 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.
1155 )))
1156
1157 * (((
1158 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.
1159 )))
1160
1161 (((
1162 So if user want to use downlink command to control to RS485 Alarm, he can use:
1163 )))
1164
1165 (((
1166 (% style="color:#037691" %)**A8 01 06 0A 05 00 04 00 01 00**(%%): to activate the RS485 Alarm
1167 )))
1168
1169 (((
1170 (% style="color:#037691" %)**A8 01 06 0A 05 00 04 00 00 00**(%%): to deactivate the RS485 Alarm
1171 )))
1172
1173 (((
1174 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.
1175 )))
1176
1177 (((
1178
1179 )))
1180
1181 (((
1182 (% style="color:blue" %)**Example 2:**
1183 )))
1184
1185 (((
1186 Check TTL Sensor return:
1187 )))
1188
1189 (((
1190 [[image:1654132684752-193.png]]
1191 )))
1192
1193
1194 ==== (% style="color:blue" %)**Set Payload version**(%%) ====
1195
1196
1197 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.
1198
1199 * (% style="color:#037691" %)**AT Command:**
1200
1201 (% style="color:#4472c4" %)** AT+PAYVER:   **(%%)Set PAYVER field = 1
1202
1203
1204 * (% style="color:#037691" %)**Downlink Payload:**
1205
1206 (% style="color:#4472c4" %)** 0xAE 01** (%%) ~-~-> Set PAYVER field =  0x01
1207
1208 (% style="color:#4472c4" %)** 0xAE 0F** (%%) ~-~-> Set PAYVER field =  0x0F
1209
1210
1211 ==== (% style="color:blue" %)**Set RS485 Sampling Commands**(%%) ====
1212
1213
1214 (((
1215 AT+COMMANDx, AT+DATACUTx and AT+SEARCHx
1216 )))
1217
1218 (((
1219 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"]].
1220 )))
1221
1222 * (((
1223 (% style="color:#037691" %)**AT Command:**
1224 )))
1225
1226 (% style="color:#4472c4" %)** AT+COMMANDx: **(%%)** Configure RS485 read command to sensor.**
1227
1228 (% style="color:#4472c4" %)** AT+DATACUTx: **(%%)** Configure how to handle return from RS485 devices.**
1229
1230 (% style="color:#4472c4" %)** AT+SEARCHx:  **(%%)** Configure search command**
1231
1232
1233 * (((
1234 (% style="color:#037691" %)**Downlink Payload:**
1235 )))
1236
1237 (((
1238 (% style="color:#4472c4" %)** 0xAF**(%%) downlink command can be used to set AT+COMMANDx or AT+DATACUTx.
1239 )))
1240
1241 (((
1242 (% style="color:red" %)**Note : if user use AT+COMMANDx to add a new command, he also need to send AT+DATACUTx downlink.**
1243 )))
1244
1245 (((
1246 Format: AF MM NN LL XX XX XX XX YY
1247 )))
1248
1249 (((
1250 Where:
1251 )))
1252
1253 * (((
1254 MM: the ATCOMMAND or AT+DATACUT to be set. Value from 01 ~~ 0F,
1255 )))
1256 * (((
1257 NN:  0: no CRC; 1: add CRC-16/MODBUS ; 2: set the AT+DATACUT value.
1258 )))
1259 * (((
1260 LL:  The length of AT+COMMAND or AT+DATACUT command
1261 )))
1262 * (((
1263 XX XX XX XX: AT+COMMAND or AT+DATACUT command
1264 )))
1265 * (((
1266 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.
1267 )))
1268
1269 (((
1270
1271
1272 **Example:**
1273 )))
1274
1275 (((
1276 (% 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
1277 )))
1278
1279 (((
1280 (% 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**
1281 )))
1282
1283 (((
1284 (% 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**
1285 )))
1286
1287 (((
1288
1289 )))
1290
1291 (((
1292 (% style="color:#4472c4" %)** 0xAB**(%%) downlink command can be used for set AT+SEARCHx
1293 )))
1294
1295 (((
1296
1297
1298 **Example:** **AB aa 01 03 xx xx xx** (03 here means there are total 3 bytes after 03) So
1299 )))
1300
1301 * (((
1302 AB aa 01 03 xx xx xx  same as AT+SEARCHaa=1,xx xx xx
1303 )))
1304 * (((
1305 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
1306 )))
1307
1308 (((
1309 **AB aa 02 03 xx xx xx 02 yy yy**  same as **AT+SEARCHaa=2,xx xx xx+yy yy**
1310 )))
1311
1312
1313 ==== (% style="color:blue" %)**Fast command to handle MODBUS device**(%%) ====
1314
1315
1316 (((
1317 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]].
1318 )))
1319
1320 (((
1321 This command is valid since v1.3 firmware version
1322 )))
1323
1324 (((
1325
1326 )))
1327
1328 (((
1329 (% style="color:#037691" %)**AT+MBFUN has only two value:**
1330 )))
1331
1332 * (((
1333 (% style="color:#4472c4" %)** AT+MBFUN=1**(%%): Enable Modbus reading. And get response base on the MODBUS return
1334 )))
1335
1336 (((
1337 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.
1338 )))
1339
1340 * (((
1341 (% style="color:#4472c4" %)**AT+MBFUN=0**(%%): Disable Modbus fast reading.
1342 )))
1343
1344 (((
1345
1346
1347 **Example:**
1348 )))
1349
1350 * (((
1351 AT+MBFUN=1 and AT+DATACUT1/AT+DATACUT2 are not configure (0,0,0).
1352 )))
1353 * (((
1354 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.
1355 )))
1356 * (((
1357 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.
1358 )))
1359
1360 [[image:1654133913295-597.png]]
1361
1362
1363 [[image:1654133954153-643.png]]
1364
1365 * (((
1366 (% style="color:#037691" %)**Downlink Commands:**
1367 )))
1368
1369 (((
1370 (% style="color:#4472c4" %)** A9 aa** (%%)~-~-> Same as AT+MBFUN=aa
1371 )))
1372
1373
1374 ==== (% style="color:blue" %)**RS485 command timeout**(%%) ====
1375
1376
1377 (((
1378 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.
1379 )))
1380
1381 (((
1382 Default value: 0, range:  0 ~~ 5 seconds
1383 )))
1384
1385 (((
1386
1387 )))
1388
1389 (((
1390 * (% style="color:#037691" %)**AT Command:**
1391
1392 (% style="color:#4472c4" %)**AT+CMDDLaa=hex(bb cc)**
1393
1394
1395 )))
1396
1397 (((
1398 **Example:**
1399 )))
1400
1401 (((
1402 **AT+CMDDL1=1000** to send the open time to 1000ms
1403 )))
1404
1405 (((
1406
1407 )))
1408
1409 * (((
1410 (% style="color:#037691" %)**Downlink Payload:**
1411 )))
1412
1413 (((
1414 (% style="color:#4472c4" %) **0x AA aa bb cc**(%%)  Same as:** AT+CMDDLaa=hex(bb cc)**
1415 )))
1416
1417 (((
1418
1419
1420 **Example:**
1421 )))
1422
1423 (((
1424 (% style="color:#4472c4" %)** 0xAA 01 03 E8**(%%)  ~-~-> Same as (% _mstmutation="1" %)**AT+CMDDL1=1000 ms**
1425 )))
1426
1427
1428 range:  0 ~~ 180seconds (Since version v1.4.6)
1429
1430 * (((
1431 (% style="color:#037691" %)**Downlink Payload:**
1432 )))
1433
1434 (((
1435 (% style="color:#4472c4" %) **0x AA aa bb cc dd**(%%)  Same as:** AT+CMDDLaa=hex(bb cc dd)**
1436 )))
1437
1438 (((
1439
1440
1441 **Example:**
1442 )))
1443
1444 (((
1445 (% style="color:#4472c4" %)** 0xAA 02 01 11 70**(%%)  ~-~-> Same as (% _mstmutation="1" %)**AT+CMDDL2=70000 ms**
1446
1447
1448 )))
1449
1450 ==== (% style="color:blue" %)**Uplink payload mode**(%%) ====
1451
1452
1453 (((
1454 Define to use one uplink or multiple uplinks for the sampling.
1455 )))
1456
1457 (((
1458 The use of this command please see: [[Compose Uplink payload>>||anchor="H3.3.4Composetheuplinkpayload"]]
1459 )))
1460
1461 (((
1462 * (% style="color:#037691" %)**AT Command:**
1463
1464 (% style="color:#4472c4" %)** AT+DATAUP=0**
1465
1466 (% style="color:#4472c4" %)** AT+DATAUP=1**
1467
1468
1469 )))
1470
1471 (((
1472 (% style="color:#4472c4" %)** AT+DATAUP=2  **(%%)~/~/The external sensor is sent as a separate packet and the data returned by the AT+COMMAND command is sent as a separate packet.
1473
1474 An asterisk ( * ) indicates that it is optional and can be added, refer to instructions (% style="color:red" %)**AT+EXT=a,b,c **(%%) to set up external sensors and pulse counts.
1475
1476 **(FPORT2)**Battery(mV) & Interrupt_Flag + PAYLOAD_VER + *SHT31 temp + *SHT31 Hum + *counting + *DS18B20
1477 **(FPORT3)**PAYLOAD COUNT + PAYLOAD# + Length depends on the return from the commands
1478
1479 (% style="color:red" %)**Note: AT+DATAUP=2 is only valid for the new firmware v1.4.5, which is not released, please contact us for testing.**
1480
1481
1482 )))
1483
1484 * (((
1485 (% style="color:#037691" %)**Downlink Payload:**
1486 )))
1487
1488 (((
1489 (% style="color:#4472c4" %)** 0xAD 00**  (%%) **~-~->** Same as AT+DATAUP=0
1490 )))
1491
1492 (((
1493 (% 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.
1494
1495 (% style="color:#4472c4" %)** 0xAD 02   **(%%)**~-~->** Same as AT+DATAUP=2 
1496
1497
1498
1499 )))
1500
1501 (((
1502 * (% style="color:#037691" %)**AT Command:**
1503
1504 (% style="color:#4472c4" %)**AT+DATAUP=1,Timeout**
1505 )))
1506
1507 (((
1508
1509 )))
1510
1511 * (((
1512 (% style="color:#037691" %)**Downlink Payload:**
1513 )))
1514
1515 (((
1516 (% style="color:#4472c4" %)** 0xAD 01 00 00 14** (%%) **~-~->** Same as AT+DATAUP=1,20000  ~/~/ (00 00 14 is 20 seconds)
1517 )))
1518
1519 (((
1520 Each uplink is sent to the server at 20-second intervals when segmented.
1521
1522
1523 )))
1524
1525 ==== (% style="color:blue" %)**Cut data separation processing(Since Version 1.4.2)**(%%) ====
1526
1527
1528 AT+NEWLINE command, which only takes effect when AT+DATAUP=1 or AT+DATAUP=1, timeout.
1529
1530 When not set, each part of AT+DATAUP is sent according to the maximum number of bytes of DR.
1531
1532 When setting, each part of AT+DATAUP is sent according to the value set by AT+NEWLINE.
1533
1534
1535 * (((
1536 (% style="color:#037691" %)** AT Command:**
1537 )))
1538
1539 (% style="color:#4472c4" %)//**AT+NEWLINE=ALL**//(%%)//   //The data cut out by each AT+COMMANDx command is sent separately as an uplink.
1540
1541 (% style="color:#4472c4" %)//**AT+NEWLINE=ALL**//(%%)//   equal:  (% style="color:#4472c4" %)**AT+NEWLINE=1+2+3+4+5+6+7+8+9+10+11+12+13+14+15**//
1542
1543
1544 (% style="color:#4472c4" %)//**AT+NEWLINE=a+b+c**//(%%)//  //The data returned by all commands is divided into three parts, COMMAND(1~~a) is the first part, COMMAND(a+1~~b) is the second part,COMMAND(b+1~~c) is the third part.
1545
1546
1547 (% style="color:#4472c4" %)//**AT+NEWLINE=NULL**//(%%)//  //Turn off the functionality of this AT command.
1548
1549
1550 * (((
1551 (% style="color:#037691" %)** Downlink Payload:**
1552 )))
1553
1554 //AT+NEWLINE=ALL  ~-~-->  (% style="color:#4472c4" %)**0xAC 01**//
1555
1556 // AT+NEWLINE= NULL  ~-~-->  (% style="color:#4472c4" %)**0xAC 00**//
1557
1558 //AT+NEWLINE= a+b+c   ~-~-->  (% style="color:#4472c4" %)**0xAC number of bytes a b c**//
1559
1560 //AT+NEWLINE= 1+5+15 ~-~-->  (% style="color:#4472c4" %)**0xAC 03 01 05 0F**//
1561
1562
1563 ==== (% style="color:blue" %)**Manually trigger an Uplink**(%%) ====
1564
1565
1566 Ask device to send an uplink immediately.
1567
1568 * (% style="color:#037691" %)**Downlink Payload:**
1569
1570 (% style="color:#4472c4" %)** 0x08 FF**(%%), RS485-BL will immediately send an uplink.
1571
1572
1573 ==== (% style="color:blue" %)**Clear RS485 Command**(%%) ====
1574
1575
1576 (((
1577 The AT+COMMANDx and AT+DATACUTx settings are stored in special location, user can use below command to clear them.
1578 )))
1579
1580 (((
1581
1582 )))
1583
1584 * (((
1585 (% style="color:#037691" %)**AT Command:**
1586 )))
1587
1588 (((
1589 (% 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
1590 )))
1591
1592 (((
1593 Example screen shot after clear all RS485 commands. 
1594 )))
1595
1596 (((
1597
1598 )))
1599
1600 (((
1601 The uplink screen shot is:
1602 )))
1603
1604 (((
1605 [[image:1654134704555-320.png]]
1606 )))
1607
1608 (((
1609
1610 )))
1611
1612 * (((
1613 (% style="color:#037691" %)**Downlink Payload:**
1614 )))
1615
1616 (((
1617 (% style="color:#4472c4" %)** 0x09 aa bb**(%%) same as AT+CMDEAR=aa,bb
1618 )))
1619
1620
1621 ==== (% style="color:blue" %)**Set Serial Communication Parameters**(%%) ====
1622
1623
1624 (((
1625 Set the Rs485 serial communication parameters:
1626 )))
1627
1628 * (((
1629 (% style="color:#037691" %)**AT Command:**
1630 )))
1631
1632 (((
1633
1634
1635 * **Set Baud Rate:**
1636 )))
1637
1638 (% 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
1639
1640
1641 * **Set UART Parity**
1642
1643 (% style="color:#4472c4" %)** AT+PARITY=0**  (%%) ~/~/ Option: 0: no parity, 1: odd parity, 2: even parity
1644
1645
1646 * **Set STOPBIT**
1647
1648 (% style="color:#4472c4" %)** AT+STOPBIT=0** (%%) ~/~/ Option: 0 for 1bit; 1 for 1.5 bit ; 2 for 2 bits
1649
1650
1651 * (((
1652 (% style="color:#037691" %)**Downlink Payload:**
1653 )))
1654
1655 (((
1656 (% style="color:#4472c4" %)** A7 01 aa bb**(%%): Same  AT+BAUDR=hex(aa bb)*100
1657 )))
1658
1659 (((
1660
1661
1662 **Example:**
1663 )))
1664
1665 * (((
1666 A7 01 00 60   same as AT+BAUDR=9600
1667 )))
1668 * (((
1669 A7 01 04 80  same as AT+BAUDR=115200
1670 )))
1671
1672 (((
1673 A7 02 aa: Same as  AT+PARITY=aa  (aa value: 00, 01 or 02)
1674 )))
1675
1676 (((
1677 A7 03 aa: Same as  AT+STOPBIT=aa  (aa value: 00, 01 or 02)
1678 )))
1679
1680
1681 ==== (% style="color:blue" %)**Configure Databit(Since version 1.4.0)**(%%) ====
1682
1683 * (((
1684 (% style="color:#037691" %)**AT Command:**
1685 )))
1686
1687 **~ AT+DATABIT=7    **~/~/ Set the data bits to 7
1688
1689 **~ AT+DATABIT=8   **~/~/ Set the data bits to 8
1690
1691
1692 * (((
1693 (% style="color:#037691" %)**Downlink Payload:**
1694 )))
1695
1696 **~ A7 04 07**: Same as  AT+DATABIT=7
1697
1698 **~ A7 04 08**: Same as  AT+DATABIT=8
1699
1700
1701 ==== (% style="color:blue" %)**Encrypted payload**(%%) ====
1702
1703 (((
1704
1705 )))
1706
1707 * (((
1708 (% style="color:#037691" %)**AT Command:**
1709 )))
1710
1711 (% style="color:#4472c4" %)** AT+DECRYPT=1 **(%%)** **~/~/ The payload is uploaded without encryption
1712
1713 (% style="color:#4472c4" %)** AT+DECRYPT=0   **(%%)~/~/  Encrypt when uploading payload (default)
1714
1715
1716 ==== (% style="color:blue" %)**Get sensor value**(%%) ====
1717
1718 (((
1719
1720 )))
1721
1722 * (((
1723 (% style="color:#037691" %)**AT Command:**
1724 )))
1725
1726 (% style="color:#4472c4" %)** AT+GETSENSORVALUE=0 **(%%)** **~/~/ The serial port gets the reading of the current sensor
1727
1728 (% style="color:#4472c4" %)** AT+GETSENSORVALUE=1    **(%%)~/~/ The serial port gets the current sensor reading and uploads it.
1729
1730
1731 ==== (% style="color:blue" %)**Resets the downlink packet count**(%%) ====
1732
1733 (((
1734
1735 )))
1736
1737 * (((
1738 (% style="color:#037691" %)**AT Command:**
1739 )))
1740
1741 (% 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)
1742
1743 (% 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.
1744
1745
1746 ==== (% style="color:blue" %)**When the limit bytes are exceeded, upload in batches**(%%) ====
1747
1748 (((
1749
1750 )))
1751
1752 * (((
1753 (% style="color:#037691" %)**AT Command:**
1754 )))
1755
1756 (% 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)
1757
1758 (% 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.
1759
1760
1761 * (((
1762 (% style="color:#037691" %)**Downlink Payload**
1763 )))
1764
1765 (% style="color:#4472c4" %)** 0x21 00 01 ** (%%) ~/~/ Set  the DISMACANS=1
1766
1767
1768 ==== (% style="color:blue" %)**Copy downlink to uplink **(%%) ====
1769
1770 (((
1771
1772 )))
1773
1774 * (((
1775 (% style="color:#037691" %)**AT Command:**
1776 )))
1777
1778 (% 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.
1779
1780
1781 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.
1782
1783
1784 [[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"]]
1785
1786
1787 For example, sending 11 22 33 44 55 66 77 will return invalid configuration 00 11 22 33 44 55 66 77.
1788
1789
1790 [[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"]]
1791
1792
1793 For example, if 01 00 02 58 is issued, a valid configuration of 01 01 00 02 58 will be returned.
1794
1795
1796 ==== (% style="color:blue" %)**Query version number and frequency band 、TDC**(%%) ====
1797
1798
1799 * (((
1800 (% style="color:#037691" %)**Downlink Payload: 26 01  **(%%) ~/~/ Downlink 26 01 can query device upload frequency, frequency band, software version number, TDC time.
1801 )))
1802
1803 **Example:**
1804
1805
1806 [[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"]]
1807
1808
1809 ==== (% style="color:blue" %)**Control output power duration**(%%) ====
1810
1811
1812 (% style="color:red" %)**Before v1.4.4, the maximum settable time of 3V3T and 5VT is 65535 milliseconds. After v1.4.4, the maximum settable time of 3V3T and 5VT is 180 seconds.**
1813
1814 (((
1815 User can set the output power duration before each sampling.
1816 )))
1817
1818 * (((
1819 (% style="color:#037691" %)**AT Command:**
1820 )))
1821
1822 (((
1823 **Example:**
1824 )))
1825
1826 (((
1827 (% style="color:#4472c4" %)** AT+3V3T=1000**(%%)  ~/~/ 3V3 output power will open 1s before each sampling.
1828 )))
1829
1830 (((
1831 (% style="color:#4472c4" %)** AT+5VT=1000**  (%%) ~/~/ +5V output power will open 1s before each sampling.
1832 )))
1833
1834 (((
1835
1836 )))
1837
1838 * (((
1839 (% style="color:#037691" %)**LoRaWAN Downlink Command:**
1840
1841 **Example:**
1842
1843 (% style="color:#037691" %)**When the delay is less than 65 seconds, Downlink can be controlled by 4 bytes or 5 bytes:**
1844 )))
1845
1846 (((
1847 (% style="color:#4472c4" %)** 07 01 aa bb** (%%) Same as AT+5VT=(aa<<8 | bb)
1848 )))
1849
1850 (((
1851 (% style="color:#4472c4" %)** 07 02 aa bb** (%%) Same as AT+3V3T=(aa<<8 | bb)
1852
1853 (((
1854 (% style="color:#4472c4" %)** 07 01 aa bb** **cc**(%%) Same as AT+5VT=(aa<<16 | bb<<8 | cc)
1855 )))
1856
1857 (((
1858 (% style="color:#4472c4" %)** 07 02 aa bb** **cc **(%%)Same as AT+3V3T=(aa<<16 | bb<<8 | cc)
1859
1860 (% style="color:#037691" %)** When the delay is greater than 65 seconds, the Downlink is controlled by 5 bytes:**
1861 )))
1862 )))
1863
1864 (((
1865 (% style="color:#4472c4" %)** 07 01 aa bb** **cc**(%%) Same as AT+5VT=(aa<<16 | bb<<8 | cc)
1866 )))
1867
1868 (((
1869 (% style="color:#4472c4" %)** 07 02 aa bb** **cc **(%%)Same as AT+3V3T=(aa<<16 | bb<<8 | cc)
1870 )))
1871
1872 (% style="color:#037691" %)** When  setting 3V3T, 5VT normally open or normally closed.**
1873
1874 (% style="color:#4472c4" %)** 07 03**(%%) (% style="color:#4472c4" %)**01**(%%) Same as AT+3V3T=0 (Enable 3.3V Output)
1875
1876 (% style="color:#4472c4" %)**07 03**(%%) (% style="color:#4472c4" %)**00**(%%) Same as AT+3V3T=65535 (Disable 3.3V Output)
1877
1878 (% style="color:#4472c4" %)**07 04**(%%) (% style="color:#4472c4" %)**01**(%%) Same as AT+5VT=65535 (Enable 5V Output)
1879
1880 (% style="color:#4472c4" %)**07 04**(%%) (% style="color:#4472c4" %)**00**(%%) Same as AT+5VT=0 (Disable 5V Output)
1881
1882
1883 == 3.6 Connect to external temperature sensor & counting sensor ==
1884
1885
1886 (% style="color:red" %)**Note: This feature is only available for new unreleased firmware v1.4.5, please contact us for testing.**
1887
1888 * (% style="color:#037691" %)**AT Command:**
1889
1890 (% style="color:#4472c4" %)**AT+EXT=a,b,c**(%%)
1891
1892 (% style="color:#4472c4" %)**a:**(%%)  **0:** ignore I2C interface.  ** 1:** Add SHT31 sensor support (4 bytes).
1893 (% style="color:#4472c4" %)**b: **(%%) **0:** ignore pulse interface ( doesn't effect interrupt ).  **1:** Add Counting Support (4 bytes).
1894 (% style="color:#4472c4" %)**c:**(%%)  **0:** ignore one wire interface.  **1:** add DS18B20 support (2 bytes).
1895
1896 **Example:**
1897
1898 (% style="color:#4472c4" %)**AT+EXT=1,1,1**
1899
1900 Device will add SHT31, counting, DS18B20 support.
1901
1902 The payload will be:
1903 Battery(mV) & Interrupt _Flag + PAYLOAD_VER + ***SHT31 temp** + ***SHT31 Hum** + ***counting** + *DS18B20 + Length depends on the return from the commands
1904
1905 (% style="color:#4472c4" %)**AT+EXT=0,1,0**
1906
1907 Device will add counting support.
1908
1909 The payload will be:
1910 Battery(mV) & Interrupt _Flag + PAYLOAD_VER + ***counting** + Length depends on the return from the commands
1911
1912
1913 * (% style="color:#037691" %)**AT Command:**
1914
1915 (% style="color:#4472c4" %)**AT+SETCNT=aa     **(%%)~/~/ Set the pulse count value.
1916
1917 **Example:**
1918
1919 AT+SETCNT=100  (% style="display:none" %) (%%)~/~/ Set the pulse count to 10.(% style="display:none" %)
1920
1921 Downlink Payload 0x0C 00 00 00 64
1922
1923
1924 (% style="color:blue" %)**Connect DS18B20 sensor**
1925
1926 **RED <~-~-~-~-~-~-~-~--> +3.3V**
1927
1928 **YELLOW <~-~-~-~-> ONE_WIRE**
1929
1930 **BLACK <~-~-~-~-~-~-> GND**
1931
1932 [[image:image-20240105110044-2.jpeg||height="328" width="496"]]
1933
1934
1935 (% style="color:blue" %)**Connect SHT31 sensor**
1936
1937
1938 **RED <~-~-~-~-~-~-~-~--> +3.3V**
1939
1940 **YELLOW <~-~-~-~-> SCL**
1941
1942 **GREEN <~-~-~-~-~-~-> SDA**
1943
1944 **BLACK <~-~-~-~-~-~-> GND**
1945
1946 [[image:image-20240105111233-3.jpeg||height="330" width="492"]]
1947
1948
1949 (% style="color:blue" %)**Connect counting sensor**
1950
1951 The counting sensor cables are connected to the +3.3v pin and GPIO_EXTI pin of the RS485_BL motherboard.
1952
1953 [[image:image-20240105112545-4.jpeg||height="335" width="490"]]
1954
1955
1956 == 3.7 Buttons ==
1957
1958
1959 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:233px" %)
1960 |=(% style="width: 89px;background-color:#4F81BD;color:white" %)**Button**|=(% style="width: 141px;background-color:#4F81BD;color:white" %)**Feature**
1961 |(% style="width:89px" %)RST|(% style="width:141px" %)Reboot RS485-BL
1962
1963 == 3.8 +3V3 Output (Since v1.3.3) ==
1964
1965
1966 (((
1967 RS485-BL has a Controllable +3V3 output, user can use this output to power external sensor.
1968 )))
1969
1970 (((
1971 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. 
1972 )))
1973
1974 (((
1975 The +3V3 output time can be controlled by AT Command.
1976 )))
1977
1978 (((
1979 (% style="color:red" %)**(AT+3V3T increased from the maximum 65000ms to 180000ms.Since v1.4.4)**
1980 )))
1981
1982 (((
1983 (% style="color:#037691" %)**AT+3V3T=1000**
1984
1985
1986 )))
1987
1988 (((
1989 Means set +3v3 valid time to have 1000ms. So, the real +3v3 output will actually have 1000ms + sampling time for other sensors.
1990 )))
1991
1992 (((
1993 By default, the AT+3V3T=0. This is a special case, means the +3V3 output is always on at any time
1994 )))
1995
1996
1997 == 3.9 +5V Output (Since v1.3.3) ==
1998
1999
2000 (((
2001 RS485-BL has a Controllable +5V output, user can use this output to power external sensor.
2002 )))
2003
2004 (((
2005 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. 
2006 )))
2007
2008 (((
2009 The 5V output time can be controlled by AT Command.
2010 )))
2011
2012 (((
2013 (% style="color:red" %)**(AT+5VT increased from the maximum 5000ms to 65000ms.Since v1.4.0)**
2014
2015 (% style="color:red" %)**(AT+5VT increased from the maximum 65000ms to 180000ms.Since v1.4.4)**
2016 )))
2017
2018 (((
2019 (% style="color:#037691" %)**AT+5VT=1000**
2020
2021
2022 )))
2023
2024 (((
2025 Means set 5V valid time to have 1000ms. So, the real 5V output will actually have 1000ms + sampling time for other sensors.
2026 )))
2027
2028 (((
2029 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.
2030 )))
2031
2032
2033 == 3.10 LEDs ==
2034
2035
2036 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:332px" %)
2037 |=(% style="background-color:#4F81BD;color:white" %)**LEDs**|=(% style="width: 274px;background-color:#4F81BD;color:white" %)**Feature**
2038 |LED1|(% style="width:274px" %)Blink when device transmit a packet.
2039
2040 == 3.11 Switch Jumper ==
2041
2042
2043 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:463px" %)
2044 |=(% style="width: 123px;background-color:#4F81BD;color:white" %)**Switch Jumper**|=(% style="width: 340px;background-color:#4F81BD;color:white" %)**Feature**
2045 |(% style="width:123px" %)SW1|(% style="width:336px" %)ISP position: Upgrade firmware via UART
2046 Flash position: Configure device, check running status.
2047 |(% style="width:123px" %)SW2|(% style="width:336px" %)5V position: set to compatible with 5v I/O.
2048 3.3v position: set to compatible with 3.3v I/O.,
2049
2050 (((
2051 (% style="color:blue" %)** +3.3V**(%%): is always ON
2052 )))
2053
2054 (((
2055 (% 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)
2056
2057
2058 )))
2059
2060 == 3.12 Battery & Power Consumption ==
2061
2062
2063 RS485-BL uses ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace.
2064
2065 [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
2066
2067
2068 = 4. Case Study =
2069
2070
2071 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]]
2072
2073
2074 = 5. Use AT Command =
2075
2076 == 5.1 Access AT Command ==
2077
2078
2079 (((
2080 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.
2081 )))
2082
2083 [[image:1654135840598-282.png]]
2084
2085
2086 (((
2087 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:
2088 )))
2089
2090 [[image:1654136105500-922.png]]
2091
2092
2093 (((
2094 More detail AT Command manual can be found at [[AT Command Manual>>||anchor="H3.5ConfigureRS485-BLviaATorDownlink"]]
2095 )))
2096
2097
2098 == 5.2 Common AT Command Sequence ==
2099
2100 === 5.2.1 Multi-channel ABP mode (Use with SX1301/LG308) ===
2101
2102
2103 If device has not joined network yet:
2104
2105 * (% style="color:#037691" %)**AT+FDR**
2106 * (% style="color:#037691" %)**AT+NJM=0**
2107 * (% style="color:#037691" %)**ATZ**
2108
2109 (((
2110
2111
2112 If device already joined network:
2113
2114 * (% style="color:#037691" %)**AT+NJM=0**
2115 * (% style="color:#037691" %)**ATZ**
2116 )))
2117
2118
2119 === 5.5.2 Single-channel ABP mode (Use with LG01/LG02) ===
2120
2121
2122 (% style="background-color:#dcdcdc" %)**AT+FDR** (%%) Reset Parameters to Factory Default, Keys Reserve
2123
2124 (% style="background-color:#dcdcdc" %)**AT+NJM=0 **(%%) Set to ABP mode
2125
2126 (% style="background-color:#dcdcdc" %)**AT+ADR=0** (%%) Set the Adaptive Data Rate Off
2127
2128 (% style="background-color:#dcdcdc" %)**AT+DR=5**  (%%) Set Data Rate
2129
2130 (% style="background-color:#dcdcdc" %)**AT+TDC=60000** (%%) Set transmit interval to 60 seconds
2131
2132 (% style="background-color:#dcdcdc" %)**AT+CHS=868400000**(%%)  Set transmit frequency to 868.4Mhz
2133
2134 (% style="background-color:#dcdcdc" %)**AT+RX2FQ=868400000** (%%) Set RX2Frequency to 868.4Mhz (according to the result from server)
2135
2136 (% style="background-color:#dcdcdc" %)**AT+RX2DR=5**  (%%) Set RX2DR to match the downlink DR from server. see below
2137
2138 (% 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.
2139
2140 (% style="background-color:#dcdcdc" %)**ATZ**       (%%) Reset MCU
2141
2142
2143 (% style="color:red" %)**Note:**
2144
2145 (((
2146 (% style="color:red" %)1. Make sure the device is set to ABP mode in the IoT Server.
2147 2. Make sure the LG01/02 gateway RX frequency is exactly the same as AT+CHS setting.
2148 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.
2149 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
2150
2151
2152 )))
2153
2154 [[image:1654136435598-589.png]]
2155
2156
2157 = 6. FAQ =
2158
2159 == 6.1 How to upgrade the image? ==
2160
2161
2162 (((
2163 The RS485-BL LoRaWAN Controller is shipped with a 3.5mm cable, the cable is used to upload image to RS485-BL to:
2164 )))
2165
2166 * (((
2167 Support new features
2168 )))
2169 * (((
2170 For bug fix
2171 )))
2172 * (((
2173 Change LoRaWAN bands.
2174 )))
2175
2176 (((
2177 Below shows the hardware connection for how to upload an image to RS485-BL:
2178 )))
2179
2180 [[image:1654136646995-976.png]]
2181
2182
2183 (% 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]].
2184
2185 (% 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]].
2186
2187 (% style="color:blue" %)**Step3**(%%)**: **Open flashloader; choose the correct COM port to update.
2188
2189 [[image:image-20220602102605-1.png]]
2190
2191
2192 [[image:image-20220602102637-2.png]]
2193
2194
2195 [[image:image-20220602102715-3.png]]
2196
2197
2198 == 6.2 How to change the LoRa Frequency Bands/Region? ==
2199
2200
2201 (((
2202 User can follow the introduction for [[how to upgrade image>>||anchor="H6.1Howtoupgradetheimage3F"]]. When download the images, choose the required image file for download.
2203 )))
2204
2205
2206 == 6.3 How many RS485-Slave can RS485-BL connects? ==
2207
2208
2209 (((
2210 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"]].
2211 )))
2212
2213
2214 == 6.4 How to Use RS485-BL  to connect to RS232 devices? ==
2215
2216
2217 [[Use RS485-BL or RS485-LN to connect to RS232 devices. - DRAGINO>>http://wiki.dragino.com/xwiki/bin/view/Main/RS485%20to%20RS232/]]
2218
2219
2220 == 6.5 How to judge whether there is a problem with the set COMMAND ==
2221
2222 === 6.5.1 Introduce: ===
2223
2224
2225 Users can use below the structure to fast debug the communication between RS485BL and RS485-LN. The principle is to put the PC in the RS485 network and sniff the packet between Modbus MTU and RS485-BL/LN. We can (% style="color:blue" %)**use this way to:**
2226
2227 1. Test if Modbus-MTU works with PC commands.
2228 1. Check if RS485-LN sent the expected command to Mobus-MTU
2229 1. Check if Modbus-MTU return back the expected result to RS485-LN.
2230 1. If both b) and c) has issue, we can compare PC's output and RS485-LN output.
2231
2232 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-1.png?width=680&height=380&rev=1.1||alt="image-20221130104310-1.png" height="380" width="680"]]
2233
2234
2235 (% style="color:blue" %)**Example Connection: **
2236
2237 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-2.png?rev=1.1||alt="image-20221130104310-2.png"]]
2238
2239
2240 === 6.5.2 Set up PC to monitor RS485 network With Serial tool ===
2241
2242
2243 (% style="color:red" %)**Note: Receive and send set to hex mode**
2244
2245 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-3.png?width=714&height=616&rev=1.1||alt="image-20221130104310-3.png" height="616" width="714"]]
2246
2247
2248 === 6.5.3 With ModRSsim2: ===
2249
2250
2251 (% style="color:blue" %)**(1) Select serial port MODBUS RS-232**
2252
2253 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-4.png?width=865&height=390&rev=1.1||alt="image-20221130104310-4.png" height="390" width="865"]]
2254
2255
2256 (% style="color:blue" %)**(2) Click the serial port icon**
2257
2258 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-5.png?width=870&height=392&rev=1.1||alt="image-20221130104310-5.png" height="392" width="870"]]
2259
2260
2261 (% style="color:blue" %)**(3) After selecting the correct serial port and baud rate, click ok**
2262
2263 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-6.png?rev=1.1||alt="image-20221130104310-6.png"]]
2264
2265
2266 (% style="color:blue" %)**(4) Click the comms.**
2267
2268 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-7.png?width=835&height=376&rev=1.1||alt="image-20221130104310-7.png" height="376" width="835"]]
2269
2270 Run RS485-LN/BL command and monitor if it is correct.
2271
2272
2273 === 6.5.4 Example – Test the CFGDEV command ===
2274
2275
2276 RS485-LN sent below command:
2277
2278 (% style="color:blue" %)**AT+CFGDEV=01 03 20 00 01 85 c0,1**(%%) to RS485 network, and PC is able to get this command and return commands from MTU to show in the serial tool.
2279
2280 We can see the output from the Serial port tool to analyze. And check if they are expected result.
2281
2282 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-8.png?width=797&height=214&rev=1.1||alt="image-20221130104310-8.png" height="214" width="797"]]
2283
2284
2285 We can also use ModRSsim2 to see the output.
2286
2287 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-9.png?width=729&height=531&rev=1.1||alt="image-20221130104310-9.png" height="531" width="729"]]
2288
2289
2290 === 6.5.5 Example – Test CMD command sets. ===
2291
2292
2293 Run (% style="color:blue" %)**AT+GETSENSORVALUE=1**(%%) to test the CMD commands set in RS485-BL.
2294
2295 (% style="color:blue" %)**Serial port tool:**
2296
2297 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-10.png?width=844&height=339&rev=1.1||alt="image-20221130104310-10.png" height="339" width="844"]]
2298
2299
2300 (% style="color:blue" %)**ModRSsim2:**
2301
2302 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-11.png?width=962&height=281&rev=1.1||alt="image-20221130104310-11.png" height="281" width="962"]]
2303
2304
2305 === 6.5.6 Test with PC ===
2306
2307
2308 If there is still have problem to set up correctly the commands between RS485-LN and MTU. User can test the correct RS485 command set in PC and compare with the RS485 command sent out via RS485-LN. as long as both commands are the same, the MTU should return correct result.
2309
2310 Or User can send the working commands set in PC serial tool to Dragino Support to check what should be configured in RS485-LN.
2311
2312 (% style="color:blue" %)**Connection method:**
2313
2314 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-12.png?rev=1.1||alt="image-20221130104310-12.png"]]
2315
2316
2317 (% style="color:blue" %)**Link situation:**
2318
2319 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-13.png?width=486&height=458&rev=1.1||alt="image-20221130104310-13.png" height="458" width="486"]]
2320
2321
2322 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20221130104310-14.png?width=823&height=371&rev=1.1||alt="image-20221130104310-14.png" height="371" width="823"]]
2323
2324
2325 == 6.6 Where to get the decoder for RS485-BL? ==
2326
2327
2328 The decoder for RS485-BL needs to be written by yourself. Because the sensor to which the user is connected is custom, the read device data bytes also need custom parsing, so there is no universal decoder. We can only provide [[templates>>https://github.com/dragino/dragino-end-node-decoder/tree/main/RS485-BL]] for decoders (no intermediate data parsing part involved)
2329
2330
2331 == 6.7 Why does my TTL sensor have returned data, but after using the command AT+DATACUT, the data in the payload is 0? ==
2332
2333
2334 In TTL mode, you cannot use the node to automatically calculate the check code, you need to manually add the check code.
2335
2336
2337 == 6.8 Where can I get a decoder? ==
2338
2339
2340 Provides two decoders:
2341
2342 [[dragino-end-node-decoder/RS485-BL at main · dragino/dragino-end-node-decoder (github.com)>>url:https://github.com/dragino/dragino-end-node-decoder/tree/main/RS485-BL]]
2343
2344 [[https:~~/~~/github.com/zorbaproject/ArduinoModbusForDraginoRS485#payload-decoder-for-thethingsnetwork>>url:https://github.com/zorbaproject/ArduinoModbusForDraginoRS485#payload-decoder-for-thethingsnetwork]]
2345
2346
2347 == 6.9 How to configure RS485 commands more conveniently? ==
2348
2349
2350 Dragino has developed an application for the RS485 series of products.
2351
2352 It can help you configure RS485 sensors more conveniently
2353 Please refer to the link below for specific usage:
2354
2355 [[RS485 Configure Tool - DRAGINO>>url:http://wiki.dragino.com/xwiki/bin/view/Main/RS485_Configure_Tool/#HTableofContentsFF1A]]
2356
2357
2358 == 6.10 How to determine whether the returned data value FF is valid data or invalid data? ==
2359
2360 The address of the returned data can be used as a flag.
2361
2362 The customer uses the intercept command to intercept the first bit of the returned data (the slave address of the sensor) as a judgment flag.
2363
2364 **Invalid data:**
2365
2366 If the first bit and the data are both FF, it means the data is empty.
2367
2368
2369 **Valid data:**
2370 If the first bit is a normal slave address and the data is FF, it means the data is normal.
2371
2372
2373 = 7. Trouble Shooting =
2374
2375 == 7.1 Downlink doesn't work, how to solve it? ==
2376
2377
2378 Please see this link for debug: [[LoRaWAN Communication Debug>>doc:Main.LoRaWAN Communication Debug.WebHome]]
2379
2380
2381 == 7.2 Why I can't join TTN V3 in US915 /AU915 bands? ==
2382
2383
2384 It might about the channels mapping. Please see for detail: [[Notice of Frequency band>>doc:Main.LoRaWAN Communication Debug.WebHome||anchor="H2.NoticeofUS9152FCN4702FAU915Frequencyband"]]
2385
2386
2387 == 7.3 Possible reasons why the device is unresponsive: ==
2388
2389
2390 ~1. Check whether the battery voltage is lower than 2.8V
2391 2. Check whether the jumper of the device is correctly connected
2392
2393 [[image:image-20240330173015-1.png]]
2394 3. Check whether the switch here of the device is at the ISP(The switch can operate normally only when it is in RUN)
2395
2396 [[image:image-20240330173044-2.png]]
2397
2398
2399 == 7.4 Why can't customers see the device's data in the server when the data is too long? ==
2400
2401
2402 This is due to the limitation of the lorawan protocol, and the fixed DR needs to be adjusted to improve this problem.
2403
2404 Please refer to the following link for the number of bytes limited by different frequencies and different DRs in the lorawan protocol
2405
2406 [[lora-alliance.org/wp-content/uploads/2021/05/RP002-1.0.3-FINAL-1.pdf>>url:https://lora-alliance.org/wp-content/uploads/2021/05/RP002-1.0.3-FINAL-1.pdf]]
2407
2408 Example:
2409
2410 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/RS485-LN%20%E2%80%93%20RS485%20to%20LoRaWAN%20Converter/WebHome/image-20240620145456-1.png?rev=1.1||alt="image-20240620145456-1.png"]]
2411
2412 Please refer to the following command to fix DR
2413
2414 AT+ADR=0
2415
2416 AT+DR=3
2417
2418 Downlink command:
2419
2420 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/#H7.4DataRate>>url:http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/#H7.4DataRate]]
2421
2422
2423 = 8. Order Info =
2424
2425
2426 (% style="color:blue" %)**Part Number: RS485-BL-XXX**
2427
2428 (% style="color:blue" %)**XXX:**
2429
2430 * (% style="color:red" %)**EU433**(%%):  frequency bands EU433
2431 * (% style="color:red" %)**EU868**(%%):  frequency bands EU868
2432 * (% style="color:red" %)**KR920**(%%):  frequency bands KR920
2433 * (% style="color:red" %)**CN470**(%%):  frequency bands CN470
2434 * (% style="color:red" %)**AS923**(%%):  frequency bands AS923
2435 * (% style="color:red" %)**AU915**(%%):  frequency bands AU915
2436 * (% style="color:red" %)**US915**(%%):  frequency bands US915
2437 * (% style="color:red" %)**IN865**(%%):  frequency bands IN865
2438 * (% style="color:red" %)**RU864**(%%):  frequency bands RU864
2439 * (% style="color:red" %)**KZ865**(%%):  frequency bands KZ865
2440
2441 = 9. Packing Info =
2442
2443
2444 (((
2445 **Package Includes**:
2446 )))
2447
2448 * (((
2449 RS485-BL x 1
2450 )))
2451 * (((
2452 Stick Antenna for LoRa RF part x 1
2453 )))
2454 * (((
2455 Program cable x 1
2456 )))
2457
2458 (((
2459 **Dimension and weight**:
2460 )))
2461
2462 * (((
2463 Device Size: 13.5 x 7 x 3 cm
2464 )))
2465 * (((
2466 Device Weight: 105g
2467 )))
2468 * (((
2469 Package Size / pcs : 14.5 x 8 x 5 cm
2470 )))
2471 * (((
2472 Weight / pcs : 170g
2473
2474
2475
2476 )))
2477
2478 = 10. Support =
2479
2480
2481 * (((
2482 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.
2483 )))
2484 * (((
2485 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]]
2486
2487
2488
2489 )))
Copyright ©2010-2024 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0