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

From version 29.22
edited by Xiaoling
on 2022/06/01 18:08
Change comment: There is no comment for this version
To version 6.1
edited by Xiaoling
on 2022/05/19 17:41
Change comment: Uploaded new attachment "1652953304999-717.png", version {1}

Summary

Details

Page properties
Content
... ... @@ -1,6 +1,7 @@
1 1  (% style="text-align:center" %)
2 2  [[image:1652947681187-144.png||height="385" width="385"]]
3 3  
4 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg]]
4 4  
5 5  
6 6  
... ... @@ -7,15 +7,12 @@
7 7  **RS485-BL – Waterproof RS485 to LoRaWAN Converter User Manual**
8 8  
9 9  
10 -
11 11  **Table of Contents:**
12 12  
13 -{{toc/}}
14 14  
15 15  
16 16  
17 17  
18 -
19 19  = 1.Introduction =
20 20  
21 21  == 1.1 What is RS485-BL RS485 to LoRaWAN Converter ==
... ... @@ -25,19 +25,19 @@
25 25  )))
26 26  
27 27  (((
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 +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.
29 29  )))
30 30  
31 31  (((
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 +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.
33 33  )))
34 34  
35 35  (((
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 +RS485-BL is IP67 **waterproof** and powered by **8500mAh Li-SOCI2 battery**, it is designed for long term use for several years.
37 37  )))
38 38  
39 39  (((
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 +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.
41 41  )))
42 42  
43 43  (((
... ... @@ -52,22 +52,20 @@
52 52  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.
53 53  )))
54 54  
55 -[[image:1652953304999-717.png||height="424" width="733"]]
53 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png]]
56 56  
57 -
58 -
59 59  == 1.2 Specifications ==
60 60  
61 -
62 62  **Hardware System:**
63 63  
64 64  * STM32L072CZT6 MCU
65 -* SX1276/78 Wireless Chip 
60 +* SX1276/78 Wireless Chip
66 66  * Power Consumption (exclude RS485 device):
67 67  ** Idle: 6uA@3.3v
63 +
64 +*
68 68  ** 20dB Transmit: 130mA@3.3v
69 69  
70 -
71 71  **Interface for Model:**
72 72  
73 73  * 1 x RS485 Interface
... ... @@ -77,7 +77,6 @@
77 77  * 1 x Interrupt Interface
78 78  * 1 x Controllable 5V output, max
79 79  
80 -
81 81  **LoRa Spec:**
82 82  
83 83  * Frequency Range:
... ... @@ -96,7 +96,6 @@
96 96  * 127 dB Dynamic Range RSSI.
97 97  * Automatic RF Sense and CAD with ultra-fast AFC. ​​​
98 98  
99 -
100 100  == 1.3 Features ==
101 101  
102 102  * LoRaWAN Class A & Class C protocol (default Class A)
... ... @@ -108,7 +108,6 @@
108 108  * Support Modbus protocol
109 109  * Support Interrupt uplink
110 110  
111 -
112 112  == 1.4 Applications ==
113 113  
114 114  * Smart Buildings & Home Automation
... ... @@ -118,17 +118,13 @@
118 118  * Smart Cities
119 119  * Smart Factory
120 120  
114 +== 1.5 Firmware Change log ==
121 121  
122 -== 1.5 Firmware Change log ==
123 -
124 124  [[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);"]]
125 125  
126 -
127 127  == 1.6 Hardware Change log ==
128 128  
129 129  (((
130 -
131 -
132 132  v1.4
133 133  )))
134 134  
... ... @@ -152,274 +152,233 @@
152 152  
153 153  (((
154 154  Release version ​​​​​
155 -
156 -
157 157  )))
158 158  
159 159  = 2. Pin mapping and Power ON Device =
160 160  
161 -(((
162 162  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.
163 -)))
164 164  
165 165  [[image:1652953055962-143.png||height="387" width="728"]]
166 166  
152 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png]]
167 167  
168 168  The Left TXD and RXD are TTL interface for external sensor. TTL level is controlled by 3.3/5v Jumper.
169 169  
170 170  
171 -= 3. Operation Mode =
172 172  
173 -== 3.1 How it works? ==
158 +3. Operation Mode
159 +3.1 How it works?
174 174  
175 -(((
176 176  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.
177 177  
178 -
179 -)))
180 180  
181 -== 3.2 Example to join LoRaWAN network ==
164 +1.
165 +11. Example to join LoRaWAN network
182 182  
183 -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. 
167 +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.
184 184  
185 -[[image:1652953414711-647.png||height="337" width="723"]]
169 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png]]
186 186  
187 -(((
171 +
188 188  The RS485-BL in this example connected to two RS485 devices for demonstration, user can connect to other RS485 devices via the same method.
189 -)))
190 190  
191 -(((
174 +
192 192  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:
193 -)))
194 194  
195 -(((
196 196  **Step 1**: Create a device in TTN V3 with the OTAA keys from RS485-BL.
197 -)))
198 198  
199 -(((
200 200  Each RS485-BL is shipped with a sticker with unique device EUI:
201 -)))
202 202  
203 -[[image:1652953462722-299.png]]
181 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image005.png]]
204 204  
205 -(((
183 +
184 +
185 +
206 206  User can enter this key in their LoRaWAN Server portal. Below is TTN V3 screen shot:
207 -)))
208 208  
209 -(((
210 210  Add APP EUI in the application.
211 -)))
212 212  
190 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png]]
213 213  
214 -[[image:image-20220519174512-1.png]]
192 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image007.png]]
215 215  
216 -[[image:image-20220519174512-2.png||height="328" width="731"]]
194 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png]]
217 217  
218 -[[image:image-20220519174512-3.png||height="556" width="724"]]
196 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png]]
219 219  
220 -[[image:image-20220519174512-4.png]]
221 221  
199 +
200 +
201 +
202 +
203 +
204 +
205 +
206 +
207 +
208 +
209 +
210 +
211 +
212 +
213 +
222 222  You can also choose to create the device manually.
223 223  
224 -[[image:1652953542269-423.png||height="710" width="723"]]
216 +|(((
217 +
218 +)))
225 225  
220 +
221 +
222 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png]]
223 +
226 226  Add APP KEY and DEV EUI
227 227  
228 -[[image:1652953553383-907.png||height="514" width="724"]]
226 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image011.png]]
229 229  
230 230  
231 -(((
232 232  **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.
233 -)))
234 234  
235 -[[image:1652953568895-172.png||height="232" width="724"]]
231 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image012.png]]
236 236  
237 237  
238 -== 3.3 Configure Commands to read data ==
239 239  
240 -(((
241 -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.
242 242  
243 -
244 -)))
236 +1.
237 +11. Configure Commands to read data
245 245  
246 -=== 3.3.1 onfigure UART settings for RS485 or TTL communication ===
239 +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.
247 247  
241 +
242 +1.
243 +11.
244 +111. Configure UART settings for RS485 or TTL communication
245 +
248 248  RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
249 249  
250 -**~1. RS485-MODBUS mode:**
248 +1. RS485-MODBUS mode:
251 251  
252 252  AT+MOD=1 ~/~/ Support RS485-MODBUS type sensors. User can connect multiply RS485 , Modbus sensors to the A / B pins.
253 253  
254 -**2. TTL mode:**
255 255  
253 +1. TTL mode:
254 +
256 256  AT+MOD=2 ~/~/ Support TTL Level sensors, User can connect one TTL Sensor to the TXD/RXD/GND pins.
257 257  
257 +
258 258  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.
259 259  
260 -(% border="1" style="background-color:#ffffcc; color:green; width:795px" %)
261 -|(((
262 -**AT Commands**
263 -)))|(% style="width:285px" %)(((
264 -**Description**
265 -)))|(% style="width:347px" %)(((
266 -**Example**
267 -)))
268 -|(((
269 -AT+BAUDR
270 -)))|(% style="width:285px" %)(((
271 -Set the baud rate (for RS485 connection). Default Value is: 9600.
272 -)))|(% style="width:347px" %)(((
273 -(((
260 +
261 +|**AT Commands**|**Description**|**Example**
262 +|AT+BAUDR|Set the baud rate (for RS485 connection). Default Value is: 9600.|(((
274 274  AT+BAUDR=9600
275 -)))
276 276  
277 -(((
278 278  Options: (1200,2400,4800,14400,19200,115200)
279 279  )))
280 -)))
281 -|(((
282 -AT+PARITY
283 -)))|(% style="width:285px" %)(((
284 -(((
267 +|AT+PARITY|(((
285 285  Set UART parity (for RS485 connection)
286 -)))
287 287  
288 -(((
289 289  Default Value is: no parity.
290 -)))
291 -)))|(% style="width:347px" %)(((
292 -(((
271 +)))|(((
293 293  AT+PARITY=0
294 -)))
295 295  
296 -(((
297 297  Option: 0: no parity, 1: odd parity, 2: even parity
298 298  )))
299 -)))
300 -|(((
301 -AT+STOPBIT
302 -)))|(% style="width:285px" %)(((
303 -(((
276 +|AT+STOPBIT|(((
304 304  Set serial stopbit (for RS485 connection)
305 -)))
306 306  
307 -(((
308 308  Default Value is: 1bit.
309 -)))
310 -)))|(% style="width:347px" %)(((
311 -(((
280 +)))|(((
312 312  AT+STOPBIT=0 for 1bit
313 -)))
314 314  
315 -(((
316 316  AT+STOPBIT=1 for 1.5 bit
317 -)))
318 318  
319 -(((
320 320  AT+STOPBIT=2 for 2 bits
321 321  )))
322 -)))
323 323  
324 324  
325 325  
326 -=== 3.3.2 Configure sensors ===
327 327  
328 -(((
329 -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**.
330 -)))
331 331  
332 -(((
333 -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.
334 -)))
292 +1.
293 +11.
294 +111. Configure sensors
335 335  
336 -(% border="1" style="background-color:#ffffcc; color:green; width:806px" %)
337 -|**AT Commands**|(% style="width:418px" %)**Description**|(% style="width:256px" %)**Example**
338 -|AT+CFGDEV|(% style="width:418px" %)(((
296 +Some sensors might need to configure before normal operation. User can configure such sensor via PC or through RS485-BL AT Commands AT+CFGDEV.
297 +
298 +
299 +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.
300 +
301 +|**AT Commands**|**Description**|**Example**
302 +|AT+CFGDEV|(((
339 339  This command is used to configure the RS485/TTL devices; they won’t be used during sampling.
340 340  
341 -AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,
305 +AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
342 342  
343 -mm: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
344 -)))|(% style="width:256px" %)AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
307 +m: 0: no CRC, 1: add CRC-16/MODBUS in the end of this command
308 +)))|AT+CFGDEV=xx xx xx xx xx xx xx xx xx xx xx xx,m
345 345  
346 346  Detail of AT+CFGDEV command see [[AT+CFGDEV detail>>path:#AT_CFGDEV]].
347 347  
348 348  
349 -=== 3.3.3 Configure read commands for each sampling ===
350 350  
351 -(((
314 +
315 +
316 +1.
317 +11.
318 +111. Configure read commands for each sampling
319 +
352 352  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.
353 -)))
354 354  
355 -(((
322 +
356 356  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.
357 -)))
358 358  
359 -(((
325 +
360 360  To save the LoRaWAN network bandwidth, we might need to read data from different sensors and combine their valid value into a short payload.
361 -)))
362 362  
363 -(((
328 +
364 364  This section describes how to achieve above goals.
365 -)))
366 366  
367 -(((
331 +
368 368  During each sampling, the RS485-BL can support 15 commands to read sensors. And combine the return to one or several uplink payloads.
369 -)))
370 370  
371 -(((
334 +
372 372  **Command from RS485-BL to Sensor:**
373 -)))
374 374  
375 -(((
376 376  RS485-BL can send out pre-set max 15 strings via **AT+COMMAD1**, **ATCOMMAND2**,…, to **AT+COMMANDF** . All commands are of same grammar.
377 -)))
378 378  
379 -(((
339 +
380 380  **Handle return from sensors to RS485-BL**:
381 -)))
382 382  
383 -(((
384 384  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**
385 -)))
386 386  
387 -* (((
388 -**AT+DATACUT**
389 -)))
390 390  
391 -(((
345 +* **AT+DATACUT**
346 +
392 392  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.
393 -)))
394 394  
395 -* (((
396 -**AT+SEARCH**
397 -)))
398 398  
399 -(((
350 +* **AT+SEARCH**
351 +
400 400  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.
401 -)))
402 402  
403 -(((
354 +
404 404  **Define wait timeout:**
405 -)))
406 406  
407 -(((
408 408  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
409 -)))
410 410  
411 -(((
359 +
412 412  After we got the valid value from each RS485 commands, we need to combine them together with the command **AT+DATAUP**.
413 -)))
414 414  
362 +
415 415  **Examples:**
416 416  
417 417  Below are examples for the how above AT Commands works.
418 418  
367 +
419 419  **AT+COMMANDx : **This command will be sent to RS485/TTL devices during each sampling, Max command length is 14 bytes. The grammar is:
420 420  
421 -(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:501px" %)
422 -|(% style="width:498px" %)(((
370 +|(((
423 423  **AT+COMMANDx=xx xx xx xx xx xx xx xx xx xx xx xx,m**
424 424  
425 425  **xx xx xx xx xx xx xx xx xx xx xx xx: The RS485 command to be sent**
... ... @@ -431,43 +431,46 @@
431 431  
432 432  In the RS485-BL, we should use this command AT+COMMAND1=01 03 0B B8 00 02,1 for the same.
433 433  
382 +
434 434  **AT+SEARCHx**: This command defines how to handle the return from AT+COMMANDx.
435 435  
436 -(% border="1" class="table-bordered" style="background-color:#4f81bd; color:white; width:580px" %)
437 -|(% style="width:577px" %)(((
385 +|(((
438 438  **AT+SEARCHx=aa,xx xx xx xx xx**
439 439  
440 440  * **aa: 1: prefix match mode; 2: prefix and suffix match mode**
441 441  * **xx xx xx xx xx: match string. Max 5 bytes for prefix and 5 bytes for suffix**
390 +
391 +
442 442  )))
443 443  
444 -**Examples:**
394 +Examples:
445 445  
446 446  1. For a return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
447 447  
448 448  If we set AT+SEARCH1=1,1E 56 34.      (max 5 bytes for prefix)
449 449  
450 -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**
400 +The valid data will be all bytes after 1E 56 34 , so it is 2e 30 58 5f 36 41 30 31 00 49
451 451  
452 -[[image:1653271044481-711.png]]
402 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image013.png]]
453 453  
404 +
454 454  1. For a return string from AT+COMMAND1:  16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
455 455  
456 456  If we set AT+SEARCH1=2, 1E 56 34+31 00 49
457 457  
458 -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**
409 +Device will search the bytes between 1E 56 34 and 31 00 49. So it is 2e 30 58 5f 36 41 30
459 459  
460 -[[image:1653271276735-972.png]]
411 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png]]
461 461  
413 +
462 462  **AT+DATACUTx : **This command defines how to handle the return from AT+COMMANDx, max return length is 45 bytes.
463 463  
464 -(% style="background-color:#4f81bd; color:white; width:729px" %)
465 -|(% style="width:726px" %)(((
416 +|(((
466 466  **AT+DATACUTx=a,b,c**
467 467  
468 468  * **a: length for the return of AT+COMMAND**
469 469  * **b:1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections.**
470 -* **c: define the position for valid value.  **
421 +* **c: define the position for valid value. **
471 471  )))
472 472  
473 473  Examples:
... ... @@ -474,130 +474,95 @@
474 474  
475 475  * Grab bytes:
476 476  
477 -[[image:1653271581490-837.png||height="313" width="722"]]
428 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image015.png]]
478 478  
479 479  * Grab a section.
480 480  
481 -[[image:1653271648378-342.png||height="326" width="720"]]
432 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image016.png]]
482 482  
483 483  * Grab different sections.
484 484  
485 -[[image:1653271657255-576.png||height="305" width="730"]]
436 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png]]
486 486  
487 -(((
488 -(% style="color:red" %)**Note:**
489 -)))
490 490  
491 -(((
439 +Note:
440 +
492 492  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.
493 -)))
494 494  
495 -(((
496 -**Example:**
497 -)))
443 +Example:
498 498  
499 -(((
500 -(% style="color:red" %)AT+COMMAND1=11 01 1E D0,0
501 -)))
445 +AT+COMMAND1=11 01 1E D0,0
502 502  
503 -(((
504 -(% style="color:red" %)AT+SEARCH1=1,1E 56 34
505 -)))
447 +AT+SEARCH1=1,1E 56 34
506 506  
507 -(((
508 -(% style="color:red" %)AT+DATACUT1=0,2,1~~5
509 -)))
449 +AT+DATACUT1=0,2,1~~5
510 510  
511 -(((
512 -(% style="color:red" %)Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
513 -)))
451 +Return string from AT+COMMAND1: 16 0c 1e 56 34 2e 30 58 5f 36 41 30 31 00 49
514 514  
515 -(((
516 -(% style="color:red" %)String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
517 -)))
453 +String after SEARCH command: 2e 30 58 5f 36 41 30 31 00 49
518 518  
519 -(((
520 -(% style="color:red" %)Valid payload after DataCUT command: 2e 30 58 5f 36
521 -)))
455 +Valid payload after DataCUT command: 2e 30 58 5f 36
522 522  
523 -[[image:1653271763403-806.png]]
457 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png]]
524 524  
525 -=== 3.3.4 Compose the uplink payload ===
526 526  
527 -(((
460 +
461 +
462 +1.
463 +11.
464 +111. Compose the uplink payload
465 +
528 528  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.**
529 -)))
530 530  
531 -(((
532 -(% style="color:#4f81bd" %)**Examples: AT+DATAUP=0**
533 -)))
534 534  
535 -(((
536 -Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**A SIGNLE UPLINK**.
537 -)))
469 +**Examples: AT+DATAUP=0**
538 538  
539 -(((
471 +Compose the uplink payload with value returns in sequence and send with **A SIGNLE UPLINK**.
472 +
540 540  Final Payload is
541 -)))
542 542  
543 -(((
544 -(% style="color:#4f81bd" %)Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
545 -)))
475 +Battery Info+PAYVER + VALID Value from RETURN1 + Valid Value from RETURN2 + … + RETURNx
546 546  
547 -(((
548 548  Where PAYVER is defined by AT+PAYVER, below is an example screen shot.
549 -)))
550 550  
551 -[[image:1653272787040-634.png||height="515" width="719"]]
479 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png]]
552 552  
553 -(((
554 -(% style="color:#4f81bd" %)**Examples: AT+DATAUP=1**
555 -)))
556 556  
557 -(((
558 -Compose the uplink payload with value returns in sequence and send with (% style="color:red" %)**Multiply UPLINKs**.
559 -)))
560 560  
561 -(((
483 +**Examples: AT+DATAUP=1**
484 +
485 +Compose the uplink payload with value returns in sequence and send with **Multiply UPLINKs**.
486 +
562 562  Final Payload is
563 -)))
564 564  
565 -(((
566 -(% style="color:#4f81bd" %)Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
567 -)))
489 +Battery Info+PAYVER + PAYLOAD COUNT + PAYLOAD# + DATA
568 568  
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 -)))
491 +1. Battery Info (2 bytes): Battery voltage
492 +1. PAYVER (1 byte): Defined by AT+PAYVER
493 +1. PAYLOAD COUNT (1 byte): Total how many uplinks of this sampling.
494 +1. PAYLOAD# (1 byte): Number of this uplink. (from 0,1,2,3…,to PAYLOAD COUNT)
495 +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
584 584  
585 -[[image:1653272817147-600.png||height="437" width="717"]]
497 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png]]
586 586  
499 +
587 587  So totally there will be 3 uplinks for this sampling, each uplink includes 6 bytes DATA
588 588  
589 -DATA1=RETURN1 Valid Value = (% style="background-color:#4f81bd; color:white" %) 20 20 0a 33 90 41
502 +DATA1=RETURN1 Valid Value = 20 20 0a 33 90 41
590 590  
591 -DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= (% style="background-color:#4f81bd; color:white" %)02 aa 05 81 0a 20
504 +DATA2=1^^st^^ ~~ 6^^th^^ byte of Valid value of RETURN10= 02 aa 05 81 0a 20
592 592  
593 -DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 =(% style="background-color:#4f81bd; color:white" %) 20 20 20 2d 30
506 +DATA3=7^^th^^ ~~ 11^^th^^ bytes of Valid value of RETURN10 = 20 20 20 2d 30
594 594  
508 +
509 +
595 595  Below are the uplink payloads:
596 596  
597 -[[image:1653272901032-107.png]]
512 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image021.png]]
598 598  
599 -(% style="color:red" %)Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:
600 600  
515 +Notice: the Max bytes is according to the max support bytes in different Frequency Bands for lowest SF. As below:
516 +
601 601   ~* For AU915/AS923 bands, if UplinkDwell time=0, max 51 bytes for each uplink ( so 51 -5 = 46 max valid date)
602 602  
603 603   * For AU915/AS923 bands, if UplinkDwell time=1, max 11 bytes for each uplink ( so 11 -5 = 6 max valid date).
... ... @@ -606,121 +606,91 @@
606 606  
607 607   ~* For all other bands: max 51 bytes for each uplink  ( so 51 -5 = 46 max valid date).
608 608  
609 -=== 3.3.5 Uplink on demand ===
610 610  
611 -(((
526 +
527 +1.
528 +11.
529 +111. Uplink on demand
530 +
612 612  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.
613 -)))
614 614  
615 -(((
616 616  Downlink control command:
617 -)))
618 618  
619 -(((
620 -**0x08 command**: Poll an uplink with current command set in RS485-BL.
621 -)))
535 +[[0x08 command>>path:#downlink_08]]: Poll an uplink with current command set in RS485-BL.
622 622  
623 -(((
624 -**0xA8 command**: Send a command to RS485-BL and uplink the output from sensors.
625 -)))
537 +[[0xA8 command>>path:#downlink_A8]]: Send a command to RS485-BL and uplink the output from sensors.
626 626  
627 -=== 3.3.6 Uplink on Interrupt ===
628 628  
629 -Put the interrupt sensor between 3.3v_out and GPIO ext.
630 630  
631 -[[image:1653273818896-432.png]]
541 +1.
542 +11.
543 +111. Uplink on Interrupt
632 632  
633 -(((
545 +Put the interrupt sensor between 3.3v_out and GPIO ext.[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png]]
546 +
634 634  AT+INTMOD=0  Disable Interrupt
635 -)))
636 636  
637 -(((
638 638  AT+INTMOD=1  Interrupt trigger by rising or falling edge.
639 -)))
640 640  
641 -(((
642 642  AT+INTMOD=2  Interrupt trigger by falling edge. ( Default Value)
643 -)))
644 644  
645 -(((
646 646  AT+INTMOD=3  Interrupt trigger by rising edge.
647 -)))
648 648  
649 -== 3.4 Uplink Payload ==
650 650  
651 -(% border="1" style="background-color:#4f81bd; color:white; width:850px" %)
652 -|**Size(bytes)**|(% style="width:130px" %)**2**|(% style="width:93px" %)**1**|(% style="width:509px" %)**Length depends on the return from the commands**
653 -|Value|(% style="width:130px" %)(((
654 -(((
556 +1.
557 +11. Uplink Payload
558 +
559 +
560 +|**Size(bytes)**|**2**|**1**|**Length depends on the return from the commands**
561 +|Value|(((
655 655  Battery(mV)
656 -)))
657 657  
658 -(((
659 659  &
660 -)))
661 661  
662 -(((
663 663  Interrupt _Flag
664 -)))
665 -)))|(% style="width:93px" %)(((
567 +)))|(((
666 666  PAYLOAD_VER
667 667  
668 668  
669 -)))|(% 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.
571 +)))|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.
670 670  
671 671  Below is the decoder for the first 3 bytes. The rest bytes are dynamic depends on different RS485 sensors.
672 672  
673 -(((
575 +
674 674  function Decoder(bytes, port) {
675 -)))
676 676  
677 -(((
678 678  ~/~/Payload Formats of RS485-BL Deceive
679 -)))
680 680  
681 -(((
682 682  return {
683 -)))
684 684  
685 -(((
686 686   ~/~/Battery,units:V
687 -)))
688 688  
689 -(((
690 690   BatV:((bytes[0]<<8 | bytes[1])&0x7fff)/1000,
691 -)))
692 692  
693 -(((
694 694   ~/~/GPIO_EXTI 
695 -)))
696 696  
697 -(((
698 698   EXTI_Trigger:(bytes[0] & 0x80)? "TRUE":"FALSE",
699 -)))
700 700  
701 -(((
702 702   ~/~/payload of version
703 -)))
704 704  
705 -(((
706 706   Pay_ver:bytes[2],
707 -)))
708 708  
709 -(((
710 710   };
711 -)))
712 712  
713 -(((
714 714   }
715 -)))
716 716  
717 -(((
598 +
599 +
600 +
601 +
602 +
603 +
718 718  TTN V3 uplink screen shot.
719 -)))
720 720  
721 -[[image:1653274001211-372.png||height="192" width="732"]]
606 +[[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image023.png]]
722 722  
723 -== 3.5 Configure RS485-BL via AT or Downlink ==
608 +1.
609 +11. Configure RS485-BL via AT or Downlink
724 724  
725 725  User can configure RS485-BL via [[AT Commands >>path:#_​Using_the_AT]]or LoRaWAN Downlink Commands
726 726  
... ... @@ -730,10 +730,12 @@
730 730  
731 731  * **Sensor Related Commands**: These commands are special designed for RS485-BL.  User can see these commands below:
732 732  
619 +
733 733  1.
734 734  11.
735 735  111. Common Commands:
736 736  
624 +
737 737  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]]
738 738  
739 739  
... ... @@ -741,6 +741,7 @@
741 741  11.
742 742  111. Sensor related commands:
743 743  
632 +
744 744  ==== Choose Device Type (RS485 or TTL) ====
745 745  
746 746  RS485-BL can connect to either RS485 sensors or TTL sensor. User need to specify what type of sensor need to connect.
... ... @@ -781,6 +781,7 @@
781 781  * XX XX XX XX: RS485 command total NN bytes
782 782  * 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
783 783  
673 +
784 784  **Example 1:**
785 785  
786 786  To connect a Modbus Alarm with below commands.
... ... @@ -889,6 +889,7 @@
889 889  
890 890  * AT+MBFUN=0: Disable Modbus fast reading.
891 891  
782 +
892 892  Example:
893 893  
894 894  * AT+MBFUN=1 and AT+DATACUT1/AT+DATACUT2 are not configure (0,0,0).
... ... @@ -973,7 +973,7 @@
973 973  
974 974  Etc. AT+CMDEAR=1,10 means erase AT+COMMAND1/AT+DATACUT1 to AT+COMMAND10/AT+DATACUT10
975 975  
976 -Example screen shot after clear all RS485 commands. 
867 +Example screen shot after clear all RS485 commands.
977 977  
978 978  
979 979  
... ... @@ -1017,6 +1017,7 @@
1017 1017  * A7 01 00 60   same as AT+BAUDR=9600
1018 1018  * A7 01 04 80  same as AT+BAUDR=115200
1019 1019  
911 +
1020 1020  A7 02 aa: Same as  AT+PARITY=aa  (aa value: 00 , 01 or 02)
1021 1021  
1022 1022  A7 03 aa: Same as  AT+STOPBIT=aa  (aa value: 00 , 01 or 02)
... ... @@ -1047,15 +1047,17 @@
1047 1047  1.
1048 1048  11. Buttons
1049 1049  
942 +
1050 1050  |**Button**|**Feature**
1051 1051  |**RST**|Reboot RS485-BL
1052 1052  
946 +
1053 1053  1.
1054 1054  11. +3V3 Output
1055 1055  
1056 1056  RS485-BL has a Controllable +3V3 output, user can use this output to power external sensor.
1057 1057  
1058 -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. 
952 +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.
1059 1059  
1060 1060  
1061 1061  The +3V3 output time can be controlled by AT Command.
... ... @@ -1073,7 +1073,7 @@
1073 1073  
1074 1074  RS485-BL has a Controllable +5V output, user can use this output to power external sensor.
1075 1075  
1076 -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. 
970 +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.
1077 1077  
1078 1078  
1079 1079  The 5V output time can be controlled by AT Command.
... ... @@ -1094,6 +1094,7 @@
1094 1094  |**LEDs**|**Feature**
1095 1095  |**LED1**|Blink when device transmit a packet.
1096 1096  
991 +
1097 1097  1.
1098 1098  11. Switch Jumper
1099 1099  
... ... @@ -1115,6 +1115,7 @@
1115 1115  
1116 1116  1. Case Study
1117 1117  
1013 +
1118 1118  User can check this URL for some case studies.
1119 1119  
1120 1120  [[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]]
... ... @@ -1202,6 +1202,7 @@
1202 1202  * For bug fix
1203 1203  * Change LoRaWAN bands.
1204 1204  
1101 +
1205 1205  Below shows the hardware connection for how to upload an image to RS485-BL:
1206 1206  
1207 1207  [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image030.png]]
... ... @@ -1245,6 +1245,7 @@
1245 1245  1.
1246 1246  11. How many RS485-Slave can RS485-BL connects?
1247 1247  
1145 +
1248 1248  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]].
1249 1249  
1250 1250  
... ... @@ -1255,7 +1255,7 @@
1255 1255  
1256 1256  Please see this link for debug:
1257 1257  
1258 -[[http:~~/~~/wiki.dragino.com/index.php?title=Main_Page#LoRaWAN_Communication_Debug>>url:http://wiki.dragino.com/index.php?title=Main_Page#LoRaWAN_Communication_Debug]] 
1156 +[[http:~~/~~/wiki.dragino.com/index.php?title=Main_Page#LoRaWAN_Communication_Debug>>url:http://wiki.dragino.com/index.php?title=Main_Page#LoRaWAN_Communication_Debug]]
1259 1259  
1260 1260  
1261 1261  
... ... @@ -1270,6 +1270,7 @@
1270 1270  
1271 1271  1. Order Info
1272 1272  
1171 +
1273 1273  **Part Number: RS485-BL-XXX**
1274 1274  
1275 1275  **XXX:**
... ... @@ -1285,6 +1285,7 @@
1285 1285  * **RU864**: frequency bands RU864
1286 1286  * **KZ865: **frequency bands KZ865
1287 1287  
1187 +
1288 1288  1. Packing Info
1289 1289  
1290 1290  **Package Includes**:
... ... @@ -1293,6 +1293,7 @@
1293 1293  * Stick Antenna for LoRa RF part x 1
1294 1294  * Program cable x 1
1295 1295  
1196 +
1296 1296  **Dimension and weight**:
1297 1297  
1298 1298  * Device Size: 13.5 x 7 x 3 cm
... ... @@ -1300,6 +1300,7 @@
1300 1300  * Package Size / pcs : 14.5 x 8 x 5 cm
1301 1301  * Weight / pcs : 170g
1302 1302  
1204 +
1303 1303  1. Support
1304 1304  
1305 1305  * 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.
1652953414711-647.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -119.3 KB
Content
1652953462722-299.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -202.7 KB
Content
1652953542269-423.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -118.5 KB
Content
1652953553383-907.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -94.0 KB
Content
1652953568895-172.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -109.3 KB
Content
1652954654347-831.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -138.7 KB
Content
1653271044481-711.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -27.8 KB
Content
1653271276735-972.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -26.6 KB
Content
1653271581490-837.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -138.7 KB
Content
1653271648378-342.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -131.4 KB
Content
1653271657255-576.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -142.6 KB
Content
1653271763403-806.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -27.7 KB
Content
1653272787040-634.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -294.0 KB
Content
1653272817147-600.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -143.3 KB
Content
1653272901032-107.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -197.8 KB
Content
1653273818896-432.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -31.6 KB
Content
1653274001211-372.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -91.4 KB
Content
image-20220519174512-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -32.2 KB
Content
image-20220519174512-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -42.7 KB
Content
image-20220519174512-3.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -36.3 KB
Content
image-20220519174512-4.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -19.1 KB
Content