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

From version 15.1
edited by Xiaoling
on 2022/05/19 17:46
Change comment: Uploaded new attachment "1652953568895-172.png", version {1}
To version 35.1
edited by Xiaoling
on 2022/06/02 10:15
Change comment: Uploaded new attachment "1654136105500-922.png", version {1}

Summary

Details

Page properties
Content
... ... @@ -7,12 +7,15 @@
7 7  **RS485-BL – Waterproof RS485 to LoRaWAN Converter User Manual**
8 8  
9 9  
10 +
10 10  **Table of Contents:**
11 11  
13 +{{toc/}}
12 12  
13 13  
14 14  
15 15  
18 +
16 16  = 1.Introduction =
17 17  
18 18  == 1.1 What is RS485-BL RS485 to LoRaWAN Converter ==
... ... @@ -22,19 +22,19 @@
22 22  )))
23 23  
24 24  (((
25 -The Dragino RS485-BL is a **RS485 / UART to LoRaWAN Converter** for Internet of Things solutions. User can connect RS485 or UART sensor to RS485-BL converter, and configure RS485-BL to periodically read sensor data and upload via LoRaWAN network to IoT server.
28 +The Dragino RS485-BL is a (% style="color:blue" %)**RS485 / UART to LoRaWAN Converter**(%%) for Internet of Things solutions. User can connect RS485 or UART sensor to RS485-BL converter, and configure RS485-BL to periodically read sensor data and upload via LoRaWAN network to IoT server.
26 26  )))
27 27  
28 28  (((
29 -RS485-BL can interface to RS485 sensor, 3.3v/5v UART sensor or interrupt sensor. RS485-BL provides **a 3.3v output** and** a 5v output** to power external sensors. Both output voltages are controllable to minimize the total system power consumption.
32 +RS485-BL can interface to RS485 sensor, 3.3v/5v UART sensor or interrupt sensor. RS485-BL provides (% style="color:blue" %)**a 3.3v output**(%%) and** (% style="color:blue" %)a 5v output(%%)** to power external sensors. Both output voltages are controllable to minimize the total system power consumption.
30 30  )))
31 31  
32 32  (((
33 -RS485-BL is IP67 **waterproof** and powered by **8500mAh Li-SOCI2 battery**, it is designed for long term use for several years.
36 +RS485-BL is IP67 (% style="color:blue" %)**waterproof**(%%) and powered by (% style="color:blue" %)**8500mAh Li-SOCI2 battery**(%%), it is designed for long term use for several years.
34 34  )))
35 35  
36 36  (((
37 -RS485-BL runs standard **LoRaWAN 1.0.3 in Class A**. It can reach long transfer range and easy to integrate with LoRaWAN compatible gateway and IoT server.
40 +RS485-BL runs standard (% style="color:blue" %)**LoRaWAN 1.0.3 in Class A**(%%). It can reach long transfer range and easy to integrate with LoRaWAN compatible gateway and IoT server.
38 38  )))
39 39  
40 40  (((
... ... @@ -51,8 +51,11 @@
51 51  
52 52  [[image:1652953304999-717.png||height="424" width="733"]]
53 53  
57 +
58 +
54 54  == 1.2 Specifications ==
55 55  
61 +
56 56  **Hardware System:**
57 57  
58 58  * STM32L072CZT6 MCU
... ... @@ -59,8 +59,6 @@
59 59  * SX1276/78 Wireless Chip 
60 60  * Power Consumption (exclude RS485 device):
61 61  ** Idle: 6uA@3.3v
62 -
63 -*
64 64  ** 20dB Transmit: 130mA@3.3v
65 65  
66 66  **Interface for Model:**
... ... @@ -114,9 +114,12 @@
114 114  
115 115  [[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);"]]
116 116  
121 +
117 117  == 1.6 Hardware Change log ==
118 118  
119 119  (((
125 +
126 +
120 120  v1.4
121 121  )))
122 122  
... ... @@ -140,6 +140,8 @@
140 140  
141 141  (((
142 142  Release version ​​​​​
150 +
151 +
143 143  )))
144 144  
145 145  = 2. Pin mapping and Power ON Device =
... ... @@ -153,6 +153,7 @@
153 153  
154 154  The Left TXD and RXD are TTL interface for external sensor. TTL level is controlled by 3.3/5v Jumper.
155 155  
165 +
156 156  = 3. Operation Mode =
157 157  
158 158  == 3.1 How it works? ==
... ... @@ -159,6 +159,8 @@
159 159  
160 160  (((
161 161  The RS485-BL is configured as LoRaWAN OTAA Class A mode by default. It has OTAA keys to join network. To connect a local LoRaWAN network, user just need to input the OTAA keys in the network server and power on the RS485-BL. It will auto join the network via OTAA.
172 +
173 +
162 162  )))
163 163  
164 164  == 3.2 Example to join LoRaWAN network ==
... ... @@ -167,204 +167,240 @@
167 167  
168 168  [[image:1652953414711-647.png||height="337" width="723"]]
169 169  
170 -
182 +(((
171 171  The RS485-BL in this example connected to two RS485 devices for demonstration, user can connect to other RS485 devices via the same method.
184 +)))
172 172  
173 -
186 +(((
174 174  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:
188 +)))
175 175  
190 +(((
176 176  **Step 1**: Create a device in TTN V3 with the OTAA keys from RS485-BL.
192 +)))
177 177  
194 +(((
178 178  Each RS485-BL is shipped with a sticker with unique device EUI:
196 +)))
179 179  
180 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image005.png]]
198 +[[image:1652953462722-299.png]]
181 181  
182 -
183 -
184 -
200 +(((
185 185  User can enter this key in their LoRaWAN Server portal. Below is TTN V3 screen shot:
202 +)))
186 186  
204 +(((
187 187  Add APP EUI in the application.
206 +)))
188 188  
189 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png]]
190 190  
191 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image007.png]]
209 +[[image:image-20220519174512-1.png]]
192 192  
193 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png]]
211 +[[image:image-20220519174512-2.png||height="328" width="731"]]
194 194  
195 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png]]
213 +[[image:image-20220519174512-3.png||height="556" width="724"]]
196 196  
215 +[[image:image-20220519174512-4.png]]
197 197  
198 -
199 -
200 -
201 -
202 -
203 -
204 -
205 -
206 -
207 -
208 -
209 -
210 -
211 -
212 -
213 213  You can also choose to create the device manually.
214 214  
215 -|(((
216 -
217 -)))
219 +[[image:1652953542269-423.png||height="710" width="723"]]
218 218  
219 -
220 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png]]
221 -
222 222  Add APP KEY and DEV EUI
223 223  
224 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image011.png]]
223 +[[image:1652953553383-907.png||height="514" width="724"]]
225 225  
226 226  
226 +(((
227 227  **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.
228 +)))
228 228  
229 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image012.png]]
230 +[[image:1652953568895-172.png||height="232" width="724"]]
230 230  
231 231  
233 +== 3.3 Configure Commands to read data ==
232 232  
235 +(((
236 +There are plenty of RS485 and TTL level devices in the market and each device has different command to read the valid data. To support these devices in flexible, RS485-BL supports flexible command set. User can use [[AT Commands or LoRaWAN Downlink>>||anchor="H3.5ConfigureRS485-BLviaATorDownlink"]] Command to configure how RS485-BL should read the sensor and how to handle the return from RS485 or TTL sensors.
233 233  
234 -1.
235 -11. Configure Commands to read data
238 +
239 +)))
236 236  
237 -There are plenty of RS485 and TTL level devices in the market and each device has different command to read the valid data. To support these devices in flexible, RS485-BL supports flexible command set. User can use [[AT Commands or LoRaWAN Downlink>>path:#AT_COMMAND]] Command to configure how RS485-BL should read the sensor and how to handle the return from RS485 or TTL sensors.
241 +=== 3.3.1 onfigure UART settings for RS485 or TTL communication ===
238 238  
239 -
240 -1.
241 -11.
242 -111. Configure UART settings for RS485 or TTL communication
243 -
244 244  RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
245 245  
246 -1. RS485-MODBUS mode:
245 +**~1. RS485-MODBUS mode:**
247 247  
248 248  AT+MOD=1 ~/~/ Support RS485-MODBUS type sensors. User can connect multiply RS485 , Modbus sensors to the A / B pins.
249 249  
249 +**2. TTL mode:**
250 250  
251 -1. TTL mode:
252 -
253 253  AT+MOD=2 ~/~/ Support TTL Level sensors, User can connect one TTL Sensor to the TXD/RXD/GND pins.
254 254  
255 -
256 256  RS485-BL default UART settings is **9600, no parity, stop bit 1**. If the sensor has a different settings, user can change the RS485-BL setting to match.
257 257  
258 -
259 -|**AT Commands**|**Description**|**Example**
260 -|AT+BAUDR|Set the baud rate (for RS485 connection). Default Value is: 9600.|(((
255 +(% border="1" style="background-color:#ffffcc; color:green; width:795px" %)
256 +|(((
257 +**AT Commands**
258 +)))|(% style="width:285px" %)(((
259 +**Description**
260 +)))|(% style="width:347px" %)(((
261 +**Example**
262 +)))
263 +|(((
264 +AT+BAUDR
265 +)))|(% style="width:285px" %)(((
266 +Set the baud rate (for RS485 connection). Default Value is: 9600.
267 +)))|(% style="width:347px" %)(((
268 +(((
261 261  AT+BAUDR=9600
270 +)))
262 262  
272 +(((
263 263  Options: (1200,2400,4800,14400,19200,115200)
264 264  )))
265 -|AT+PARITY|(((
275 +)))
276 +|(((
277 +AT+PARITY
278 +)))|(% style="width:285px" %)(((
279 +(((
266 266  Set UART parity (for RS485 connection)
281 +)))
267 267  
283 +(((
268 268  Default Value is: no parity.
269 -)))|(((
285 +)))
286 +)))|(% style="width:347px" %)(((
287 +(((
270 270  AT+PARITY=0
289 +)))
271 271  
291 +(((
272 272  Option: 0: no parity, 1: odd parity, 2: even parity
273 273  )))
274 -|AT+STOPBIT|(((
294 +)))
295 +|(((
296 +AT+STOPBIT
297 +)))|(% style="width:285px" %)(((
298 +(((
275 275  Set serial stopbit (for RS485 connection)
300 +)))
276 276  
302 +(((
277 277  Default Value is: 1bit.
278 -)))|(((
304 +)))
305 +)))|(% style="width:347px" %)(((
306 +(((
279 279  AT+STOPBIT=0 for 1bit
308 +)))
280 280  
310 +(((
281 281  AT+STOPBIT=1 for 1.5 bit
312 +)))
282 282  
314 +(((
283 283  AT+STOPBIT=2 for 2 bits
284 284  )))
317 +)))
285 285  
319 +=== 3.3.2 Configure sensors ===
286 286  
321 +(((
322 +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**.
323 +)))
287 287  
325 +(((
326 +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.
327 +)))
288 288  
289 -1.
290 -11.
291 -111. Configure sensors
292 -
293 -Some sensors might need to configure before normal operation. User can configure such sensor via PC or through RS485-BL AT Commands AT+CFGDEV.
294 -
295 -
296 -When user issue an AT+CFGDEV command, Each AT+CFGDEV equals to send a command to the RS485 or TTL sensors. This command will only run when user input it and won’t run during each sampling.
297 -
298 -|**AT Commands**|**Description**|**Example**
299 -|AT+CFGDEV|(((
329 +(% border="1" style="background-color:#ffffcc; color:green; width:806px" %)
330 +|**AT Commands**|(% style="width:418px" %)**Description**|(% style="width:256px" %)**Example**
331 +|AT+CFGDEV|(% style="width:418px" %)(((
300 300  This command is used to configure the RS485/TTL devices; they won’t be used during sampling.
301 301  
302 -AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
334 +AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,
303 303  
304 -m: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
305 -)))|AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
336 +mm: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
337 +)))|(% style="width:256px" %)AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
306 306  
307 -Detail of AT+CFGDEV command see [[AT+CFGDEV detail>>path:#AT_CFGDEV]].
339 +Detail of AT+CFGDEV command see [[AT+CFGDEV detail>>||anchor="HRS485DebugCommand28AT2BCFGDEV29"]].
308 308  
309 309  
342 +=== 3.3.3 Configure read commands for each sampling ===
310 310  
311 -
312 -
313 -1.
314 -11.
315 -111. Configure read commands for each sampling
316 -
344 +(((
317 317  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.
346 +)))
318 318  
319 -
348 +(((
320 320  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.
350 +)))
321 321  
322 -
352 +(((
323 323  To save the LoRaWAN network bandwidth, we might need to read data from different sensors and combine their valid value into a short payload.
354 +)))
324 324  
325 -
356 +(((
326 326  This section describes how to achieve above goals.
358 +)))
327 327  
328 -
360 +(((
329 329  During each sampling, the RS485-BL can support 15 commands to read sensors. And combine the return to one or several uplink payloads.
362 +)))
330 330  
331 -
364 +(((
332 332  **Command from RS485-BL to Sensor:**
366 +)))
333 333  
368 +(((
334 334  RS485-BL can send out pre-set max 15 strings via **AT+COMMAD1**, **ATCOMMAND2**,…, to **AT+COMMANDF** . All commands are of same grammar.
370 +)))
335 335  
336 -
372 +(((
337 337  **Handle return from sensors to RS485-BL**:
374 +)))
338 338  
376 +(((
339 339  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**
378 +)))
340 340  
380 +* (((
381 +**AT+DATACUT**
382 +)))
341 341  
342 -* **AT+DATACUT**
343 -
384 +(((
344 344  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.
386 +)))
345 345  
388 +* (((
389 +**AT+SEARCH**
390 +)))
346 346  
347 -* **AT+SEARCH**
348 -
392 +(((
349 349  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.
394 +)))
350 350  
351 -
396 +(((
352 352  **Define wait timeout:**
398 +)))
353 353  
400 +(((
354 354  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
402 +)))
355 355  
356 -
404 +(((
357 357  After we got the valid value from each RS485 commands, we need to combine them together with the command **AT+DATAUP**.
406 +)))
358 358  
359 -
360 360  **Examples:**
361 361  
362 362  Below are examples for the how above AT Commands works.
363 363  
364 -
365 365  **AT+COMMANDx : **This command will be sent to RS485/TTL devices during each sampling, Max command length is 14 bytes. The grammar is:
366 366  
367 -|(((
414 +(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:501px" %)
415 +|(% style="width:498px" %)(((
368 368  **AT+COMMANDx=xx xx xx xx xx xx xx xx xx xx xx xx,m**
369 369  
370 370  **xx xx xx xx xx xx xx xx xx xx xx xx: The RS485 command to be sent**
... ... @@ -376,41 +376,38 @@
376 376  
377 377  In the RS485-BL, we should use this command AT+COMMAND1=01 03 0B B8 00 02,1 for the same.
378 378  
379 -
380 380  **AT+SEARCHx**: This command defines how to handle the return from AT+COMMANDx.
381 381  
382 -|(((
429 +(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:580px" %)
430 +|(% style="width:577px" %)(((
383 383  **AT+SEARCHx=aa,xx xx xx xx xx**
384 384  
385 385  * **aa: 1: prefix match mode; 2: prefix and suffix match mode**
386 386  * **xx xx xx xx xx: match string. Max 5 bytes for prefix and 5 bytes for suffix**
387 -
388 -
389 389  )))
390 390  
391 -Examples:
437 +**Examples:**
392 392  
393 -1. For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
439 +1For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
394 394  
395 395  If we set AT+SEARCH1=1,1E 56 34.      (max 5 bytes for prefix)
396 396  
397 -The valid data will be all bytes after 1E 56 34 , so it is 2e 30 58 5f 36 41 30 31 00 49
443 +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**
398 398  
399 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image013.png]]
445 +[[image:1653271044481-711.png]]
400 400  
447 +2)For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
401 401  
402 -1. For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
403 -
404 404  If we set AT+SEARCH1=2, 1E 56 34+31 00 49
405 405  
406 -Device will search the bytes between 1E 56 34 and 31 00 49. So it is 2e 30 58 5f 36 41 30
451 +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**
407 407  
408 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png]]
453 +[[image:1653271276735-972.png]]
409 409  
410 -
411 411  **AT+DATACUTx : **This command defines how to handle the return from AT+COMMANDx, max return length is 45 bytes.
412 412  
413 -|(((
457 +(% style="background-color:#4f81bd; color:white; width:729px" %)
458 +|(% style="width:726px" %)(((
414 414  **AT+DATACUTx=a,b,c**
415 415  
416 416  * **a: length for the return of AT+COMMAND**
... ... @@ -418,98 +418,143 @@
418 418  * **c: define the position for valid value.  **
419 419  )))
420 420  
421 -Examples:
466 +**Examples:**
422 422  
423 423  * Grab bytes:
424 424  
425 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image015.png]]
470 +[[image:1653271581490-837.png||height="313" width="722"]]
426 426  
472 +
427 427  * Grab a section.
428 428  
429 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image016.png]]
475 +[[image:1653271648378-342.png||height="326" width="720"]]
430 430  
477 +
431 431  * Grab different sections.
432 432  
433 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png]]
480 +[[image:1653271657255-576.png||height="305" width="730"]]
434 434  
482 +(((
483 +(% style="color:red" %)**Note:**
484 +)))
435 435  
436 -Note:
437 -
486 +(((
438 438  AT+SEARCHx and AT+DATACUTx can be used together, if both commands are set, RS485-BL will first process AT+SEARCHx on the return string and get a temporary string, and then process AT+DATACUTx on this temporary string to get the final payload. In this case, AT+DATACUTx need to set to format AT+DATACUTx=0,xx,xx where the return bytes set to 0.
488 +)))
439 439  
440 -Example:
490 +(((
491 +**Example:**
492 +)))
441 441  
442 -AT+COMMAND1=11 01 1E D0,0
494 +(((
495 +(% style="color:red" %)AT+COMMAND1=11 01 1E D0,0
496 +)))
443 443  
444 -AT+SEARCH1=1,1E 56 34
498 +(((
499 +(% style="color:red" %)AT+SEARCH1=1,1E 56 34
500 +)))
445 445  
446 -AT+DATACUT1=0,2,1~~5
502 +(((
503 +(% style="color:red" %)AT+DATACUT1=0,2,1~~5
504 +)))
447 447  
448 -Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
506 +(((
507 +(% style="color:red" %)Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
508 +)))
449 449  
450 -String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
510 +(((
511 +(% style="color:red" %)String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
512 +)))
451 451  
452 -Valid payload after DataCUT command: 2e 30 58 5f 36
514 +(((
515 +(% style="color:red" %)Valid payload after DataCUT command: 2e 30 58 5f 36
516 +)))
453 453  
454 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png]]
518 +[[image:1653271763403-806.png]]
455 455  
456 456  
521 +=== 3.3.4 Compose the uplink payload ===
457 457  
458 -
459 -1.
460 -11.
461 -111. Compose the uplink payload
462 -
523 +(((
463 463  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.**
525 +)))
464 464  
527 +(((
528 +(% style="color:#037691" %)**Examples: AT+DATAUP=0**
529 +)))
465 465  
466 -**Examples: AT+DATAUP=0**
531 +(((
532 +Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**A SIGNLE UPLINK**.
533 +)))
467 467  
468 -Compose the uplink payload with value returns in sequence and send with **A SIGNLE UPLINK**.
469 -
535 +(((
470 470  Final Payload is
537 +)))
471 471  
472 -Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
539 +(((
540 +(% style="color:#4f81bd" %)**Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx**
541 +)))
473 473  
543 +(((
474 474  Where PAYVER is defined by AT+PAYVER, below is an example screen shot.
545 +)))
475 475  
476 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png]]
547 +[[image:1653272787040-634.png||height="515" width="719"]]
477 477  
478 478  
479 479  
480 -**Examples: AT+DATAUP=1**
551 +(((
552 +(% style="color:#037691" %)**Examples: AT+DATAUP=1**
481 481  
482 -Compose the uplink payload with value returns in sequence and send with **Multiply UPLINKs**.
554 +
555 +)))
483 483  
557 +(((
558 +Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**Multiply UPLINKs**.
559 +)))
560 +
561 +(((
484 484  Final Payload is
563 +)))
485 485  
486 -Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
565 +(((
566 +(% style="color:#4f81bd" %)**Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA**
567 +)))
487 487  
488 -1. Battery Info (2 bytes): Battery voltage
489 -1. PAYVER (1 byte): Defined by AT+PAYVER
490 -1. PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
491 -1. PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
492 -1. DATA: Valid value: max 6 bytes(US915 version here, [[Notice*!>>path:#max_byte]]) for each uplink so each uplink <= 11 bytes. For the last uplink, DATA will might less than 6 bytes
569 +1. (((
570 +Battery Info (2 bytes): Battery voltage
571 +)))
572 +1. (((
573 +PAYVER (1 byte): Defined by AT+PAYVER
574 +)))
575 +1. (((
576 +PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
577 +)))
578 +1. (((
579 +PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
580 +)))
581 +1. (((
582 +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
583 +)))
493 493  
494 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png]]
585 +[[image:1653272817147-600.png||height="437" width="717"]]
495 495  
496 -
497 497  So totally there will be 3 uplinks for this sampling, each uplink includes 6 bytes DATA
498 498  
499 -DATA1=RETURN1 Valid Value = 20 20 0a 33 90 41
500 500  
501 -DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= 02 aa 05 81 0a 20
590 +DATA1=RETURN1 Valid Value = (% style="background-color:#4f81bd; color:white" %) 20 20 0a 33 90 41
502 502  
503 -DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 = 20 20 20 2d 30
592 +DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= (% style="background-color:#4f81bd; color:white" %)02 aa 05 81 0a 20
504 504  
594 +DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 =(% style="background-color:#4f81bd; color:white" %) 20 20 20 2d 30
505 505  
506 506  
507 507  Below are the uplink payloads:
508 508  
509 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image021.png]]
599 +[[image:1653272901032-107.png]]
510 510  
511 511  
512 -Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:
602 +(% style="color:red" %)Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:
513 513  
514 514   ~* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
515 515  
... ... @@ -521,139 +521,186 @@
521 521  
522 522  
523 523  
524 -1.
525 -11.
526 -111. Uplink on demand
614 +=== 3.3.5 Uplink on demand ===
527 527  
616 +(((
528 528  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.
618 +)))
529 529  
620 +(((
530 530  Downlink control command:
622 +)))
531 531  
532 -[[0x08 command>>path:#downlink_08]]: Poll an uplink with current command set in RS485-BL.
624 +(((
625 +**0x08 command**: Poll an uplink with current command set in RS485-BL.
626 +)))
533 533  
534 -[[0xA8 command>>path:#downlink_A8]]: Send a command to RS485-BL and uplink the output from sensors.
628 +(((
629 +**0xA8 command**: Send a command to RS485-BL and uplink the output from sensors.
535 535  
631 +
632 +)))
536 536  
634 +=== 3.3.6 Uplink on Interrupt ===
537 537  
538 -1.
539 -11.
540 -111. Uplink on Interrupt
636 +Put the interrupt sensor between 3.3v_out and GPIO ext.
541 541  
542 -Put the interrupt sensor between 3.3v_out and GPIO ext.[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png]]
638 +[[image:1653273818896-432.png]]
543 543  
640 +
641 +(((
544 544  AT+INTMOD=0  Disable Interrupt
643 +)))
545 545  
645 +(((
546 546  AT+INTMOD=1  Interrupt trigger by rising or falling edge.
647 +)))
547 547  
649 +(((
548 548  AT+INTMOD=2  Interrupt trigger by falling edge. ( Default Value)
651 +)))
549 549  
653 +(((
550 550  AT+INTMOD=3  Interrupt trigger by rising edge.
551 551  
656 +
657 +)))
552 552  
553 -1.
554 -11. Uplink Payload
659 +== 3.4 Uplink Payload ==
555 555  
556 -|**Size(bytes)**|**2**|**1**|**Length depends on the return from the commands**
557 -|Value|(((
661 +(% border="1" style="background-color:#4f81bd; color:white; width:850px" %)
662 +|**Size(bytes)**|(% style="width:130px" %)**2**|(% style="width:93px" %)**1**|(% style="width:509px" %)**Length depends on the return from the commands**
663 +|Value|(% style="width:130px" %)(((
664 +(((
558 558  Battery(mV)
666 +)))
559 559  
668 +(((
560 560  &
670 +)))
561 561  
672 +(((
562 562  Interrupt _Flag
563 -)))|(((
674 +)))
675 +)))|(% style="width:93px" %)(((
564 564  PAYLOAD_VER
565 565  
566 566  
567 -)))|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.
679 +)))|(% style="width:509px" %)If the valid payload is too long and exceed the maximum support payload length in server, server will show payload not provided in the LoRaWAN server.
568 568  
569 569  Below is the decoder for the first 3 bytes. The rest bytes are dynamic depends on different RS485 sensors.
570 570  
683 +(((
684 +{{{function Decoder(bytes, port) {}}}
685 +)))
571 571  
572 -function Decoder(bytes, port) {
687 +(((
688 +{{{//Payload Formats of RS485-BL Deceive}}}
689 +)))
573 573  
574 -~/~/Payload Formats of RS485-BL Deceive
691 +(((
692 +{{{return {}}}
693 +)))
575 575  
576 -return {
695 +(((
696 +{{{ //Battery,units:V}}}
697 +)))
577 577  
578 - ~/~/Battery,units:V
699 +(((
700 +{{{ BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,}}}
701 +)))
579 579  
580 - BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,
703 +(((
704 +{{{ //GPIO_EXTI }}}
705 +)))
581 581  
582 - ~/~/GPIO_EXTI 
707 +(((
708 +{{{ EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",}}}
709 +)))
583 583  
584 - EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",
711 +(((
712 +{{{ //payload of version}}}
713 +)))
585 585  
586 - ~/~/payload of version
715 +(((
716 +{{{ Pay_ver:bytes[2],}}}
717 +)))
587 587  
588 - Pay_ver:bytes[2],
719 +(((
720 +{{{ }; }}}
721 +)))
589 589  
590 - };
723 +(((
724 +}
591 591  
592 - }
726 +
727 +)))
593 593  
594 -
595 -
596 -
597 -
598 -
599 -
729 +(((
600 600  TTN V3 uplink screen shot.
731 +)))
601 601  
602 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image023.png]]
733 +[[image:1653274001211-372.png||height="192" width="732"]]
603 603  
604 -1.
605 -11. Configure RS485-BL via AT or Downlink
606 606  
607 -User can configure RS485-BL via [[AT Commands >>path:#_​Using_the_AT]]or LoRaWAN Downlink Commands
736 +== 3.5 Configure RS485-BL via AT or Downlink ==
608 608  
738 +User can configure RS485-BL via AT Commands or LoRaWAN Downlink Commands
739 +
609 609  There are two kinds of Commands:
610 610  
611 -* **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: http:~/~/wiki.dragino.com/index.php?title=End_Device_AT_Commands_and_Downlink_Commands
742 +* (% 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: [[End Device AT Commands and Downlink Command>>doc:Main.End Device AT Commands and Downlink Command.WebHome]]
612 612  
613 -* **Sensor Related Commands**: These commands are special designed for RS485-BL.  User can see these commands below:
744 +* (% style="color:#4f81bd" %)**Sensor Related Commands**(%%): These commands are special designed for RS485-BL.  User can see these commands below:
614 614  
615 -1.
616 -11.
617 -111. Common Commands:
746 +=== 3.5.1 Common Commands: ===
618 618  
619 -They should be available for each of Dragino Sensors, such as: change uplink interval, reset device. For firmware v1.3, user can find what common commands it supports: [[http:~~/~~/wiki.dragino.com/index.php?title=End_Device_AT_Commands_and_Downlink_Commands>>url:http://wiki.dragino.com/index.php?title=End_Device_AT_Commands_and_Downlink_Commands]]
748 +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]]
620 620  
621 621  
622 -1.
623 -11.
624 -111. Sensor related commands:
751 +=== 3.5.2 Sensor related commands: ===
625 625  
626 -==== Choose Device Type (RS485 or TTL) ====
753 +==== ====
627 627  
755 +==== **Choose Device Type (RS485 or TTL)** ====
756 +
628 628  RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
629 629  
630 -* AT Command
759 +* **AT Command**
631 631  
761 +(% class="box infomessage" %)
762 +(((
632 632  **AT+MOD=1** ~/~/ Set to support RS485-MODBUS type sensors. User can connect multiply RS485 , Modbus sensors to the A / B pins.
764 +)))
633 633  
766 +(% class="box infomessage" %)
767 +(((
634 634  **AT+MOD=2** ~/~/ Set to support TTL Level sensors, User can connect one TTL Sensor to the TXD/RXD/GND pins.
769 +)))
635 635  
636 636  
637 -* Downlink Payload
772 +* **Downlink Payload**
638 638  
639 -**0A aa**     à same as AT+MOD=aa
774 +**0A aa**  ~-~->  same as AT+MOD=aa
640 640  
641 641  
642 642  
643 -==== [[RS485 Debug Command>>path:#downlink_A8]] (AT+CFGDEV) ====
778 +==== **RS485 Debug Command (AT+CFGDEV)** ====
644 644  
645 645  This command is used to configure the RS485 or TTL sensors; they won’t be used during sampling.
646 646  
647 -* AT Command
782 +* **AT Command**
648 648  
649 -AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
784 +(% class="box infomessage" %)
785 +(((
786 +**AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m**
787 +)))
650 650  
651 651  m: 0: no CRC; 1: add CRC-16/MODBUS in the end of this command.
652 652  
653 653  
792 +* **Downlink Payload**
654 654  
655 -* Downlink Payload
656 -
657 657  Format: A8 MM NN XX XX XX XX YY
658 658  
659 659  Where:
... ... @@ -667,15 +667,15 @@
667 667  
668 668  To connect a Modbus Alarm with below commands.
669 669  
670 -* 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.
807 +* 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.
671 671  
672 -* 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.
809 +* 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.
673 673  
674 674  So if user want to use downlink command to control to RS485 Alarm, he can use:
675 675  
676 -**A8 01 06 0A 05 00 04 00 01 00**: to activate the RS485 Alarm
813 +(% style="color:#037691" %)**A8 01 06 0A 05 00 04 00 01 00**(%%): to activate the RS485 Alarm
677 677  
678 -**A8 01 06 0A 05 00 04 00 00 00**: to deactivate the RS485 Alarm
815 +(% style="color:#037691" %)**A8 01 06 0A 05 00 04 00 00 00**(%%): to deactivate the RS485 Alarm
679 679  
680 680  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.
681 681  
... ... @@ -684,48 +684,60 @@
684 684  
685 685  Check TTL Sensor return:
686 686  
687 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image024.png]]
824 +[[image:1654132684752-193.png]]
688 688  
689 689  
690 690  
828 +==== **Set Payload version** ====
691 691  
692 -==== Set Payload version ====
693 -
694 694  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.
695 695  
696 -* AT Command:
832 +* **AT Command:**
697 697  
698 -AT+PAYVER: Set PAYVER field = 1
834 +(% class="box infomessage" %)
835 +(((
836 +**AT+PAYVER: Set PAYVER field = 1**
837 +)))
699 699  
700 700  
701 -* Downlink Payload:
840 +* **Downlink Payload:**
702 702  
703 -0xAE 01   à Set PAYVER field =  0x01
842 +**0xAE 01**  ~-~-> Set PAYVER field =  0x01
704 704  
705 -0xAE 0F   à Set PAYVER field =  0x0F
844 +**0xAE 0F**   ~-~-> Set PAYVER field =  0x0F
706 706  
707 707  
708 -==== Set RS485 Sampling Commands ====
709 709  
848 +==== **Set RS485 Sampling Commands** ====
849 +
710 710  AT+COMMANDx, AT+DATACUTx and AT+SEARCHx
711 711  
712 -These three commands are used to configure how the RS485-BL polling data from Modbus device. Detail of usage please see : [[polling RS485 device>>path:#polling_485]].
852 +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"]].
713 713  
714 714  
715 -* AT Command:
855 +* **AT Command:**
716 716  
717 -AT+COMMANDx: Configure RS485 read command to sensor.
857 +(% class="box infomessage" %)
858 +(((
859 +**AT+COMMANDx: Configure RS485 read command to sensor.**
860 +)))
718 718  
719 -AT+DATACUTx: Configure how to handle return from RS485 devices.
862 +(% class="box infomessage" %)
863 +(((
864 +**AT+DATACUTx: Configure how to handle return from RS485 devices.**
865 +)))
720 720  
721 -AT+SEARCHx: Configure search command
867 +(% class="box infomessage" %)
868 +(((
869 +**AT+SEARCHx: Configure search command**
870 +)))
722 722  
723 723  
724 -* Downlink Payload:
873 +* **Downlink Payload:**
725 725  
726 -0xAF downlink command can be used to set AT+COMMANDx or AT+DATACUTx.
875 +**0xAF** downlink command can be used to set AT+COMMANDx or AT+DATACUTx.
727 727  
728 -Note: if user use AT+COMMANDx to add a new command, he also need to send AT+DATACUTx downlink.
877 +(% style="color:red" %)**Note**(%%): if user use AT+COMMANDx to add a new command, he also need to send AT+DATACUTx downlink.
729 729  
730 730  Format: AF MM NN LL XX XX XX XX YY
731 731  
... ... @@ -732,23 +732,23 @@
732 732  Where:
733 733  
734 734  * MM: the ATCOMMAND or AT+DATACUT to be set. Value from 01 ~~ 0F,
735 -* NN: 0: no CRC; 1: add CRC-16/MODBUS ; 2: set the AT+DATACUT value.
736 -* LL: The length of AT+COMMAND or AT+DATACUT command
884 +* NN:  0: no CRC; 1: add CRC-16/MODBUS ; 2: set the AT+DATACUT value.
885 +* LL:  The length of AT+COMMAND or AT+DATACUT command
737 737  * XX XX XX XX: AT+COMMAND or AT+DATACUT command
738 -* 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.
887 +* 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.
739 739  
740 -Example:
889 +**Example:**
741 741  
742 -**AF 03 01 06 0A 05 00 04 00 01 00**: Same as AT+COMMAND3=0A 05 00 04 00 01,1
891 +(% 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
743 743  
744 -**AF 03 02 06 10 01 05 06 09 0A 00**: Same as AT+DATACUT3=**16**,**1**,**5+6+9+10**
893 +(% 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**
745 745  
746 -**AF 03 02 06 0B 02 05 07 08 0A 00**: Same as AT+DATACUT3=**11**,**2**,**5~~7+8~~10**
895 +(% 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**
747 747  
748 748  
749 -0xAB downlink command can be used for set AT+SEARCHx
898 +**0xAB** downlink command can be used for set AT+SEARCHx
750 750  
751 -Example: **AB aa 01 03 xx xx xx** (03 here means there are total 3 bytes after 03) So
900 +**Example:** **AB aa 01 03 xx xx xx** (03 here means there are total 3 bytes after 03) So
752 752  
753 753  * AB aa 01 03 xx xx xx  same as AT+SEARCHaa=1,xx xx xx
754 754  * 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
... ... @@ -756,145 +756,164 @@
756 756  **AB aa 02 03 xx xx xx 02 yy yy**  same as **AT+SEARCHaa=2,xx xx xx+yy yy**
757 757  
758 758  
759 -==== Fast command to handle MODBUS device ====
760 760  
909 +==== **Fast command to handle MODBUS device** ====
910 +
761 761  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]].
762 762  
763 763  This command is valid since v1.3 firmware version
764 764  
765 765  
766 -AT+MBFUN has only two value:
916 +**AT+MBFUN has only two value:**
767 767  
768 -* AT+MBFUN=1: Enable Modbus reading. And get response base on the MODBUS return
918 +* **AT+MBFUN=1**: Enable Modbus reading. And get response base on the MODBUS return
769 769  
770 770  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.
771 771  
772 -* AT+MBFUN=0: Disable Modbus fast reading.
922 +* **AT+MBFUN=0**: Disable Modbus fast reading.
773 773  
774 -Example:
924 +**Example:**
775 775  
776 776  * AT+MBFUN=1 and AT+DATACUT1/AT+DATACUT2 are not configure (0,0,0).
777 777  * 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.
778 778  * 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.
779 779  
780 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image025.png]]
930 +[[image:1654133913295-597.png]]
781 781  
782 782  
783 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image026.png]]
933 +[[image:1654133954153-643.png]]
784 784  
785 785  
786 -* Downlink Commands:
936 +* **Downlink Commands:**
787 787  
788 -A9 aa -à Same as AT+MBFUN=aa
938 +**A9 aa** ~-~-> Same as AT+MBFUN=aa
789 789  
790 790  
791 -==== RS485 command timeout ====
792 792  
942 +==== **RS485 command timeout** ====
943 +
793 793  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.
794 794  
795 795  Default value: 0, range:  0 ~~ 5 seconds
796 796  
797 797  
798 -* AT Command:
949 +* **AT Command:**
799 799  
800 -AT+CMDDLaa=hex(bb cc)
951 +(% class="box infomessage" %)
952 +(((
953 +**AT+CMDDLaa=hex(bb cc)**
954 +)))
801 801  
802 -Example:
956 +**Example:**
803 803  
804 804  **AT+CMDDL1=1000** to send the open time to 1000ms
805 805  
806 806  
807 -* Downlink Payload:
961 +* **Downlink Payload:**
808 808  
809 809  0x AA aa bb cc
810 810  
811 811  Same as: AT+CMDDLaa=hex(bb cc)
812 812  
813 - Example:
967 + **Example:**
814 814  
815 - 0xAA 01 03 E8  à Same as **AT+CMDDL1=1000 ms**
969 + **0xAA 01 03 E8**  ~-~-> Same as **AT+CMDDL1=1000 ms**
816 816  
817 817  
818 -==== [[Uplink>>path:#downlink_A8]] payload mode ====
819 819  
973 +==== **Uplink payload mode** ====
974 +
820 820  Define to use one uplink or multiple uplinks for the sampling.
821 821  
822 -The use of this command please see: [[Compose Uplink payload>>path:#DataUP]]
977 +The use of this command please see: [[Compose Uplink payload>>||anchor="H3.3.4Composetheuplinkpayload"]]
823 823  
824 -* AT Command:
979 +* **AT Command:**
825 825  
826 -AT+DATAUP=0
981 +(% class="box infomessage" %)
982 +(((
983 +**AT+DATAUP=0**
984 +)))
827 827  
828 -AT+DATAUP=1
986 +(% class="box infomessage" %)
987 +(((
988 +**AT+DATAUP=1**
989 +)))
829 829  
830 830  
831 -* Downlink Payload:
992 +* **Downlink Payload:**
832 832  
833 -0xAD 00   à Same as AT+DATAUP=0
994 +**0xAD 00**  **~-~->** Same as AT+DATAUP=0
834 834  
835 -0xAD 01   à Same as AT+DATAUP=1
996 +**0xAD 01**  **~-~->** Same as AT+DATAUP=1
836 836  
837 837  
838 -==== Manually trigger an Uplink ====
839 839  
1000 +==== **Manually trigger an Uplink** ====
1001 +
840 840  Ask device to send an uplink immediately.
841 841  
842 -* Downlink Payload:
1004 +* **Downlink Payload:**
843 843  
844 -0x08 FF, RS485-BL will immediately send an uplink.
1006 +**0x08 FF**, RS485-BL will immediately send an uplink.
845 845  
846 846  
847 -==== Clear RS485 Command ====
848 848  
1010 +==== **Clear RS485 Command** ====
1011 +
849 849  The AT+COMMANDx and AT+DATACUTx settings are stored in special location, user can use below command to clear them.
850 850  
851 851  
852 -* AT Command:
1015 +* **AT Command:**
853 853  
854 -**AT+CMDEAR=mm,nn**   mm: start position of erase ,nn: stop position of erase
1017 +(% style="color:#037691" %)**AT+CMDEAR=mm,nn** (%%) mm: start position of erase ,nn: stop position of erase Etc. AT+CMDEAR=1,10 means erase AT+COMMAND1/AT+DATACUT1 to AT+COMMAND10/AT+DATACUT10
855 855  
856 -Etc. AT+CMDEAR=1,10 means erase AT+COMMAND1/AT+DATACUT1 to AT+COMMAND10/AT+DATACUT10
857 -
858 858  Example screen shot after clear all RS485 commands. 
859 859  
860 860  
861 -
862 862  The uplink screen shot is:
863 863  
864 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image023.png]]
1024 +[[image:1654134704555-320.png]]
865 865  
866 866  
867 -* Downlink Payload:
1027 +* **Downlink Payload:**
868 868  
869 -0x09 aa bb same as AT+CMDEAR=aa,bb
1029 +**0x09 aa bb** same as AT+CMDEAR=aa,bb
870 870  
871 871  
872 -==== Set Serial Communication Parameters ====
873 873  
1033 +==== **Set Serial Communication Parameters** ====
1034 +
874 874  Set the Rs485 serial communication parameters:
875 875  
876 -* AT Command:
1037 +* **AT Command:**
877 877  
878 878  Set Baud Rate:
879 879  
880 -AT+BAUDR=9600    ~/~/ Options: (1200,2400,4800,14400,19200,115200)
1041 +(% class="box infomessage" %)
1042 +(((
1043 +**AT+BAUDR=9600**    ~/~/ Options: (1200,2400,4800,14400,19200,115200)
1044 +)))
881 881  
1046 +Set UART Parity
882 882  
883 -Set UART parity
1048 +(% class="box infomessage" %)
1049 +(((
1050 +**AT+PARITY=0**    ~/~/ Option: 0: no parity, 1: odd parity, 2: even parity
1051 +)))
884 884  
885 -AT+PARITY=0    ~/~/ Option: 0: no parity, 1: odd parity, 2: even parity
886 -
887 -
888 888  Set STOPBIT
889 889  
890 -AT+STOPBIT=0    ~/~/ Option: 0 for 1bit; 1 for 1.5 bit ; 2 for 2 bits
1055 +(% class="box infomessage" %)
1056 +(((
1057 +**AT+STOPBIT=0**    ~/~/ Option: 0 for 1bit; 1 for 1.5 bit ; 2 for 2 bits
1058 +)))
891 891  
892 892  
893 -* Downlink Payload:
1061 +* **Downlink Payload:**
894 894  
895 -A7 01 aa bb: Same  AT+BAUDR=hex(aa bb)*100
1063 +**A7 01 aa bb**: Same  AT+BAUDR=hex(aa bb)*100
896 896  
897 -Example:
1065 +**Example:**
898 898  
899 899  * A7 01 00 60   same as AT+BAUDR=9600
900 900  * A7 01 04 80  same as AT+BAUDR=115200
... ... @@ -904,112 +904,105 @@
904 904  A7 03 aa: Same as  AT+STOPBIT=aa  (aa value: 00 , 01 or 02)
905 905  
906 906  
907 -==== Control output power duration ====
908 908  
1076 +==== **Control output power duration** ====
1077 +
909 909  User can set the output power duration before each sampling.
910 910  
911 -* AT Command:
1080 +* **AT Command:**
912 912  
913 -Example:
1082 +**Example:**
914 914  
915 -AT+3V3T=1000 ~/~/ 3V3 output power will open 1s before each sampling.
1084 +**AT+3V3T=1000**  ~/~/ 3V3 output power will open 1s before each sampling.
916 916  
917 -AT+5VT=1000 ~/~/ +5V output power will open 1s before each sampling.
1086 +**AT+5VT=1000**  ~/~/ +5V output power will open 1s before each sampling.
918 918  
919 919  
920 -* LoRaWAN Downlink Command:
1089 +* **LoRaWAN Downlink Command:**
921 921  
922 -07 01 aa bb  Same as AT+5VT=(aa bb)
1091 +**07 01 aa bb**  Same as AT+5VT=(aa bb)
923 923  
924 -07 02 aa bb  Same as AT+3V3T=(aa bb)
1093 +**07 02 aa bb**  Same as AT+3V3T=(aa bb)
925 925  
926 926  
1096 +== 3.6 Buttons ==
927 927  
1098 +(% border="1" style="background-color:#ffffcc; color:green; width:233px" %)
1099 +|=(% style="width: 89px;" %)**Button**|=(% style="width: 141px;" %)**Feature**
1100 +|(% style="width:89px" %)**RST**|(% style="width:141px" %)Reboot RS485-BL
928 928  
929 -1.
930 -11. Buttons
1102 +== 3.7 +3V3 Output ==
931 931  
932 -|**Button**|**Feature**
933 -|**RST**|Reboot RS485-BL
934 -
935 -1.
936 -11. +3V3 Output
937 -
938 938  RS485-BL has a Controllable +3V3 output, user can use this output to power external sensor.
939 939  
940 940  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. 
941 941  
942 -
943 943  The +3V3 output time can be controlled by AT Command.
944 944  
945 -**AT+3V3T=1000**
946 946  
947 -Means set +3v3 valid time to have 1000ms. So, the real +3v3 output will actually have 1000ms + sampling time for other sensors.
1111 +(% style="color:#037691" %)**AT+3V3T=1000**
948 948  
949 949  
1114 +Means set +3v3 valid time to have 1000ms. So, the real +3v3 output will actually have 1000ms + sampling time for other sensors.
1115 +
950 950  By default, the AT+3V3T=0. This is a special case, means the +3V3 output is always on at any time
951 951  
952 952  
953 -1.
954 -11. +5V Output
1119 +== 3.8 +5V Output ==
955 955  
956 956  RS485-BL has a Controllable +5V output, user can use this output to power external sensor.
957 957  
958 958  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. 
959 959  
960 -
961 961  The 5V output time can be controlled by AT Command.
962 962  
963 -**AT+5VT=1000**
964 964  
965 -Means set 5V valid time to have 1000ms. So, the real 5V output will actually have 1000ms + sampling time for other sensors.
1128 +(% style="color:#037691" %)**AT+5VT=1000**
966 966  
967 967  
1131 +Means set 5V valid time to have 1000ms. So, the real 5V output will actually have 1000ms + sampling time for other sensors.
1132 +
968 968  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.
969 969  
970 970  
1136 +== 3.9 LEDs ==
971 971  
1138 +(% border="1" style="background-color:#ffffcc; color:green; width:332px" %)
1139 +|=**LEDs**|=(% style="width: 274px;" %)**Feature**
1140 +|**LED1**|(% style="width:274px" %)Blink when device transmit a packet.
972 972  
973 -1.
974 -11. LEDs
1142 +== 3.10 Switch Jumper ==
975 975  
976 -|**LEDs**|**Feature**
977 -|**LED1**|Blink when device transmit a packet.
978 -
979 -1.
980 -11. Switch Jumper
981 -
982 -|**Switch Jumper**|**Feature**
983 -|**SW1**|(((
1144 +(% border="1" style="background-color:#ffffcc; color:green; width:515px" %)
1145 +|=(% style="width: 124px;" %)**Switch Jumper**|=(% style="width: 388px;" %)**Feature**
1146 +|(% style="width:124px" %)**SW1**|(% style="width:388px" %)(((
984 984  ISP position: Upgrade firmware via UART
985 985  
986 986  Flash position: Configure device, check running status.
987 987  )))
988 -|**SW2**|(((
1151 +|(% style="width:124px" %)**SW2**|(% style="width:388px" %)(((
989 989  5V position: set to compatible with 5v I/O.
990 990  
991 991  3.3v position: set to compatible with 3.3v I/O.,
992 992  )))
993 993  
994 -+3.3V: is always ON
1157 +**+3.3V**: is always ON
995 995  
996 -+5V: Only open before every sampling. The time is by default, it is AT+5VT=0.  Max open time. 5000 ms.
1159 +**+5V**: Only open before every sampling. The time is by default, it is AT+5VT=0.  Max open time. 5000 ms.
997 997  
998 -1. Case Study
999 999  
1000 -User can check this URL for some case studies.
1162 += 4. Case Study =
1001 1001  
1002 -[[http:~~/~~/wiki.dragino.com/index.php?title=APP_RS485_COMMUNICATE_WITH_SENSORS>>url:http://wiki.dragino.com/index.php?title=APP_RS485_COMMUNICATE_WITH_SENSORS]]
1164 +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]]
1003 1003  
1004 1004  
1167 += 5. Use AT Command =
1005 1005  
1169 +== 5.1 Access AT Command ==
1006 1006  
1007 -1. Use AT Command
1008 -11. Access AT Command
1009 -
1010 1010  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.
1011 1011  
1012 -[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image027.png]]
1173 +[[image:1654135840598-282.png]]
1013 1013  
1014 1014  
1015 1015  In PC, User needs to set **serial tool**(such as [[putty>>url:https://www.chiark.greenend.org.uk/~~sgtatham/putty/latest.html]], SecureCRT) baud rate to **9600** to access to access serial console of RS485-BL. The default password is 123456. Below is the output for reference:
... ... @@ -1022,7 +1022,7 @@
1022 1022  
1023 1023  
1024 1024  
1025 -1.
1186 +1.
1026 1026  11. Common AT Command Sequence
1027 1027  111. Multi-channel ABP mode (Use with SX1301/LG308)
1028 1028  
... ... @@ -1041,8 +1041,8 @@
1041 1041  
1042 1042  ATZ
1043 1043  
1044 -1.
1045 -11.
1205 +1.
1206 +11.
1046 1046  111. Single-channel ABP mode (Use with LG01/LG02)
1047 1047  
1048 1048  AT+FDR   Reset Parameters to Factory Default, Keys Reserve
... ... @@ -1117,7 +1117,7 @@
1117 1117  [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image035.png]] [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image036.png]]
1118 1118  
1119 1119  
1120 -1.
1281 +1.
1121 1121  11. How to change the LoRa Frequency Bands/Region?
1122 1122  
1123 1123  User can follow the introduction for [[how to upgrade image>>path:#upgrade_image]]. When download the images, choose the required image file for download.
... ... @@ -1124,7 +1124,7 @@
1124 1124  
1125 1125  
1126 1126  
1127 -1.
1288 +1.
1128 1128  11. How many RS485-Slave can RS485-BL connects?
1129 1129  
1130 1130  The RS485-BL can support max 32 RS485 devices. Each uplink command of RS485-BL can support max 16 different RS485 command. So RS485-BL can support max 16 RS485 devices pre-program in the device for uplink. For other devices no pre-program, user can use the [[downlink message (type code 0xA8) to poll their info>>path:#downlink_A8]].
... ... @@ -1141,7 +1141,7 @@
1141 1141  
1142 1142  
1143 1143  
1144 -1.
1305 +1.
1145 1145  11. Why I can’t join TTN V3 in US915 /AU915 bands?
1146 1146  
1147 1147  It might about the channels mapping. Please see for detail.
1652954654347-831.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +138.7 KB
Content
1653271044481-711.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +27.8 KB
Content
1653271276735-972.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +26.6 KB
Content
1653271581490-837.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +138.7 KB
Content
1653271648378-342.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +131.4 KB
Content
1653271657255-576.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +142.6 KB
Content
1653271763403-806.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +27.7 KB
Content
1653272787040-634.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +294.0 KB
Content
1653272817147-600.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +143.3 KB
Content
1653272901032-107.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +197.8 KB
Content
1653273818896-432.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +31.6 KB
Content
1653274001211-372.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +91.4 KB
Content
1654132684752-193.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +22.8 KB
Content
1654133913295-597.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +116.2 KB
Content
1654133954153-643.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +91.2 KB
Content
1654134704555-320.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +91.4 KB
Content
1654135840598-282.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +1.3 MB
Content
1654136105500-922.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Xiaoling
Size
... ... @@ -1,0 +1,1 @@
1 +203.7 KB
Content