Show last authors
1 (% style="text-align:center" %)
2 [[image:1657509006180-251.png||height="409" width="409"]]
3
4
5
6
7
8 **Table of Contents:**
9
10 {{toc/}}
11
12
13
14
15
16
17 = 1.  Introduction =
18
19
20 == 1.1 ​ What is NBSN95 NB-IoT Sensor Node ==
21
22
23 (((
24 (((
25 NBSN95 is a Long Range NB-IoT Sensor Node. It is designed for (% style="color:blue" %)**outdoor data logging **(%%)and powered by (% style="color:blue" %)**Li/SOCl2 battery**(%%) for long term use and secure data transmission. It is designed to facilitate developers to quickly deploy industrial level NB-IoT solutions. It helps users to turn the idea into a practical application and make the Internet of Things a reality. It is easy to program, create and connect your things everywhere.
26 )))
27
28
29 (((
30 (% style="color:blue" %)**NarrowBand-Internet of Things (NB-IoT)**(%%) is a standards-based low power wide area (LPWA) technology developed to enable a wide range of new IoT devices and services. NB-IoT significantly improves the power consumption of user devices, system capacity and spectrum efficiency, especially in deep coverage.
31 )))
32
33
34 (((
35 NBSN95 uses STM32l0x chip from ST, STML0x is the (% style="color:blue" %)**ultra-low-power**(%%) STM32L072xx microcontrollers incorporate the connectivity power of the universal serial bus (USB 2.0 crystal-less) with the high-performance ARM® Cortex®-M0+ 32-bit RISC core operating at a 32 MHz frequency, a memory protection unit (MPU), high-speed embedded memories (192 Kbytes of Flash program memory, 6 Kbytes of data EEPROM and 20 Kbytes of RAM) plus an extensive range of enhanced I/Os and peripherals.
36 )))
37
38
39 (((
40 NBSN95 is an (% style="color:blue" %)**open source product**(%%), it is based on the STM32Cube HAL drivers and lots of libraries can be found in ST site for rapid development.
41 )))
42 )))
43
44
45 [[image:1657509740279-435.png]]
46
47
48 (% style="display:none" %) (%%)
49
50 == 1.2 ​ Features ==
51
52
53 * STM32L072CZT6 MCU
54 * NB-IoT Bands: B1/B3/B8/B5/B20/B28 @H-FDD
55 * Pre-load bootloader on USART1/USART2
56 * MDK-ARM Version 5.24a IDE
57 * I2C, LPUSART1, USB, SPI2
58 * 3x12bit ADC, 1x12bit DAC
59 * 20xDigital I/O
60 * Open-source hardware / software
61 * IP66 Waterproof Enclosure
62 * Ultra-Low Power consumption
63 * AT Commands to change parameters
64 * Micro SIM card slot for NB-IoT SIM
65 * 8500mAh Battery for long term use
66
67 (% style="display:none" %) (%%)
68
69 (% style="display:none" %) (%%)
70
71 == 1.3  Specification ==
72
73
74 (% style="color:#037691" %)**Micro Controller:**
75
76 * STM32L072CZT6 MCU
77 * MCU: STM32L072CZT6
78 * Flash: 192KB
79 * RAM: 20KB
80 * EEPROM: 6KB
81 * Clock Speed: 32Mhz
82
83 (% style="color:#037691" %)**Common DC Characteristics:**
84
85 * Supply Voltage: 2.1v ~~ 3.6v
86 * Operating Temperature: -40 ~~ 85°C
87 * I/O pins: Refer to STM32L072 datasheet
88
89 (% style="color:#037691" %)**NB-IoT Spec:**
90
91 * - B1 @H-FDD: 2100MHz
92 * - B3 @H-FDD: 1800MHz
93 * - B8 @H-FDD: 900MHz
94 * - B5 @H-FDD: 850MHz
95 * - B20 @H-FDD: 800MHz
96 * - B28 @H-FDD: 700MHz
97
98 (% style="color:#037691" %)**Battery:**
99
100 * Li/SOCI2 un-chargeable battery
101 * Capacity: 8500mAh
102 * Self Discharge: <1% / Year @ 25°C
103 * Max continuously current: 130mA
104 * Max boost current: 2A, 1 second
105
106 (% style="color:#037691" %)**Power Consumption**
107
108 * STOP Mode: 10uA @ 3.3v
109 * Max transmit power: 350mA@3.3v
110
111
112
113 == ​1.4  Applications ==
114
115
116 * Smart Buildings & Home Automation
117 * Logistics and Supply Chain Management
118 * Smart Metering
119 * Smart Agriculture
120 * Smart Cities
121 * Smart Factory
122
123 (% class="wikigeneratedid" id="H200B1.5FirmwareChangelog" %)
124 ​(% style="display:none" %)
125
126 (% style="display:none" %) (%%)
127
128 (% style="display:none" %) (%%)
129
130 == 1.5  Pin Definitions & Switch ==
131
132
133 [[image:1657510398618-181.png]](% style="display:none" %)
134
135
136 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:520px" %)
137 |=(% style="width: 30px;" %)**No.**|=(% style="width: 70px;" %)**Signal**|=(% style="width: 60px;" %)**Direction**|=(% style="width: 180px;" %)**Function**|=(% style="width: 180px;" %)Remark
138 |(% style="width:44px" %)1|(% style="width:86px" %)VCC(2.9V)|(% style="width:84px" %)OUTPUT|(% style="width:322px" %)VCC|(% style="width:296px" %)Directly connect to main power for board
139 |(% style="width:44px" %)2|(% style="width:86px" %)PA0|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)Used as ADC in NBSN95 image
140 |(% style="width:44px" %)3|(% style="width:86px" %)PA1|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
141 |(% style="width:44px" %)4|(% style="width:86px" %)PA2|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="width:296px" %)Used as UART_TXD in NBSN95 image
142 |(% style="width:44px" %)5|(% style="width:86px" %)PA3|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="width:296px" %)Used as UART_RXD in NBSN95 image
143 |(% style="width:44px" %)6|(% style="width:86px" %)PB6|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="width:296px" %)
144 |(% style="width:44px" %)7|(% style="width:86px" %)PB7|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="width:296px" %)
145 |(% style="width:44px" %)8|(% style="width:86px" %)PB3|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="width:296px" %)
146 |(% style="width:44px" %)9|(% style="width:86px" %)PB4|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
147 |(% style="width:44px" %)10|(% style="width:86px" %)PA9|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="width:296px" %)
148 |(% style="width:44px" %)11|(% style="width:86px" %)PA10|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="width:296px" %)
149 |(% style="width:44px" %)12|(% style="width:86px" %)GND|(% style="width:84px" %) |(% style="width:322px" %)Ground|(% style="width:296px" %)
150 |(% style="width:44px" %)13|(% style="width:86px" %)VCC(2.9V)|(% style="width:84px" %)OUTPUT|(% style="width:322px" %)VCC|(% style="width:296px" %)Directly connect to main power for board
151 |(% style="width:44px" %)14|(% style="width:86px" %)Jumper|(% style="width:84px" %) |(% style="width:322px" %)Power on/off jumper|(% style="width:296px" %)
152 |(% style="width:44px" %)15|(% style="width:86px" %)PA4|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
153 |(% style="width:44px" %)16|(% style="width:86px" %)NRST|(% style="width:84px" %)In|(% style="width:322px" %)Reset MCU|(% style="width:296px" %)
154 |(% style="width:44px" %)17|(% style="width:86px" %)PA12|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
155 |(% style="width:44px" %)18|(% style="width:86px" %)PA11|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
156 |(% style="width:44px" %)19|(% style="width:86px" %)PA14|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
157 |(% style="width:44px" %)20|(% style="width:86px" %)PB13|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
158 |(% style="width:44px" %)21|(% style="width:86px" %)PB12|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
159 |(% style="width:44px" %)22|(% style="width:86px" %)PB15|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
160 |(% style="width:44px" %)23|(% style="width:86px" %)PB14|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
161 |(% style="width:44px" %)24|(% style="width:86px" %)PA13|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
162 |(% style="width:44px" %)25|(% style="width:86px" %)PA8|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)Default use to turn on/off LED1 in NBSN95 image
163 |(% style="width:44px" %)26|(% style="width:86px" %)GND|(% style="width:84px" %) |(% style="width:322px" %)Ground|(% style="width:296px" %)
164 |(% style="width:44px" %)27|(% style="width:86px" %)+5V|(% style="width:84px" %)Out|(% style="width:322px" %)5v output power|(% style="width:296px" %)Controlled by PB5(Low to Enable, High to Disable)
165 |(% style="width:44px" %)28|(% style="width:86px" %)LED1|(% style="width:84px" %) |(% style="width:322px" %)Controlled by PA8|(% style="width:296px" %)Blink on transmit
166 |(% style="width:44px" %)29|(% style="width:86px" %)BOOT MODE|(% style="width:84px" %) |(% style="width:322px" %)Configure device in working mode or ISP program mode|(% style="width:296px" %)(((
167 (((
168 Flash: Normal Working mode and send AT Commands
169 )))
170
171 (((
172 ISP: UART Program Mode
173 )))
174 )))
175 |(% style="width:44px" %)30|(% style="width:86px" %)NRST|(% style="width:84px" %)In|(% style="width:322px" %)Reset MCU|(% style="width:296px" %)
176
177
178
179 === 1.5.1 Jumper JP2 ===
180
181
182 Power on Device when put this jumper.
183
184
185
186 === 1.5.2 BOOT MODE / SW1 ===
187
188
189 (((
190 1) ISP: upgrade mode, device won't have any signal in this mode. but ready for upgrade firmware. LED won't work. Firmware won't run.
191 )))
192
193 (((
194 2) Flash: work mode, device starts to work and send out console output for further debug
195 )))
196
197
198
199 === 1.5.3 Reset Button ===
200
201
202 Press to reboot the device.
203
204
205
206 === 1.5.4 LED ===
207
208
209 It will flash:
210
211 1. When boot the device in flash mode
212 1. Send an uplink packet
213
214
215
216
217 == 1.6 Hole Option ==
218
219
220 The NBSN95 provides different hole size options for different size sensor cable. The options provided are M12, M16. The definition is as below:
221
222
223 [[image:image-20220711135811-1.png]]
224
225
226 [[image:1657519103007-447.png]]
227
228
229
230 = 2.  Use NBSN95 to communicate with IoT Server =
231
232
233 == 2.1  How it works ==
234
235
236 (((
237 The NBSN95 is equipped with a NB-IoT module, the pre-loaded firmware in NBSN95 will get environment data from sensors and send the value to local NB-IoT network via the NB-IoT module.  The NB-IoT network will forward this value to IoT server via the protocol defined by NBSN95.
238 )))
239
240
241 (((
242 The diagram below shows the working flow in default firmware of NBSN95:
243 )))
244
245 [[image:image-20220711135919-2.png]]
246
247
248
249 == 2.2 ​ Configure the NBSN95 ==
250
251
252 === 2.2.1  Power On NBSN95 ===
253
254
255 [[image:1657519498925-521.png]]
256
257
258 === 2.2.2  Test Requirement ===
259
260
261 (((
262 To use NBSN95 in your city, make sure meet below requirements:
263 )))
264
265 * Your local operator has already distributed a NB-IoT Network there.
266 * The local NB-IoT network used the band that NBSN95 supports.
267 * Your operator is able to distribute the data received in their NB-IoT network to your IoT server.
268
269 (((
270 Below figure shows our testing structure. Here we have NB-IoT network coverage by China Mobile, the band they use is B8.  The NBSN95 will use CoAP((% style="color:red" %)120.24.4.116:5683)(%%) or raw UDP((% style="color:red" %)120.24.4.116:5601)(%%) or MQTT((% style="color:red" %)120.24.4.116:1883)(%%)or TCP((% style="color:red" %)120.24.4.116:5600)(%%)protocol to send data to the test server
271 )))
272
273
274 [[image:1657519549982-889.png]]
275
276
277
278 === 2.2.3  Insert SIM card ===
279
280
281 (((
282 Insert the NB-IoT Card get from your provider.
283 )))
284
285 (((
286 User need to take out the NB-IoT module and insert the SIM card like below:
287 )))
288
289
290 [[image:1657249468462-536.png]]
291
292
293
294 === 2.2.4  Connect USB – TTL to NBSN95 to configure it ===
295
296
297 (((
298 (((
299 User need to configure NBSN95 via serial port to set the (% style="color:blue" %)**Server Address** / **Uplink Topic** (%%)to define where and how-to uplink packets. NBSN95 support AT Commands, user can use a USB to TTL adapter to connect to NBSN95 and use AT Commands to configure it, as below.
300 )))
301 )))
302
303 [[image:1657520237594-636.png]]
304
305
306 In the PC, use below serial tool settings:
307
308 * Baud:  (% style="color:green" %)**9600**
309 * Data bits:** (% style="color:green" %)8(%%)**
310 * Stop bits: (% style="color:green" %)**1**
311 * Parity:  (% style="color:green" %)**None**
312 * Flow Control: (% style="color:green" %)**None**
313
314 (((
315
316
317
318 Make sure the switch is in FLASH position, then power on device by connecting the jumper on NBSN95. NBSN95 will output system info once power on as below, we can enter the (% style="color:green" %)**password: 12345678**(%%) to access AT Command input.
319
320
321 )))
322
323 [[image:1657520459085-315.png]]
324
325
326 (((
327 (% style="color:red" %)**Note: the valid AT Commands can be found at:  **(%%)**[[https:~~/~~/www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0>>https://www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0]]**
328 )))
329
330
331
332 === 2.2.5  Use CoAP protocol to uplink data ===
333
334
335 (% style="color:red" %)**Note: if you don't have CoAP server, you can refer this link to set up one: **(%%)**[[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Set%20up%20CoAP%20Server/>>http://wiki.dragino.com/xwiki/bin/view/Main/Set%20up%20CoAP%20Server/]]**
336
337
338 **Use below commands:**
339
340 * (% style="color:blue" %)**AT+PRO=1**  (%%) ~/~/ Set to use CoAP protocol to uplink
341 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5683   ** (%%)~/~/ to set CoAP server address and port
342 * (% style="color:blue" %)**AT+URI=5,11,"mqtt",11,"coap",12,"0",15,"c=text1",23,"0" ** (%%) ~/~/Set COAP resource path
343
344 For parameter description, please refer to AT command set
345
346
347 [[image:1657249793983-486.png]]
348
349
350 (((
351 After configure the server address and (% style="color:green" %)**reset the device**(%%) (via AT+ATZ ), NSE01 will start to uplink sensor values to CoAP server.
352 )))
353
354 [[image:1657522754681-536.png]]
355
356
357
358 === 2.2.6  Use UDP protocol to uplink data(Default protocol) ===
359
360
361 This feature is supported since firmware version v1.0.1
362
363
364 * (% style="color:blue" %)**AT+PRO=2   ** (%%) ~/~/ Set to use UDP protocol to uplink
365 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5601   ** (%%) ~/~/  to set UDP server address and port
366 * (% style="color:blue" %)**AT+CFM=1       ** (%%) ~/~/ If the server does not respond, this command is unnecessary
367
368
369 [[image:1657522829933-263.png]]
370
371
372 [[image:image-20220913164447-1.png]]
373
374
375
376 === 2.2.7  Use MQTT protocol to uplink data ===
377
378
379 (((
380 This feature is supported since firmware version v110, it supports only plain MQTT now it doesn't support TLS and other related encryption.
381 )))
382
383
384 * (% style="color:blue" %)**AT+PRO=3   ** (%%) ~/~/ Set to use MQTT protocol to uplink
385 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,1883   ** (%%) ~/~/ Set MQTT server address and port
386 * (% style="color:blue" %)**AT+CLIENT=CLIENT       ** (%%)~/~/ Set up the CLIENT of MQTT
387 * (% style="color:blue" %)**AT+UNAME=UNAME                               **(%%)~/~/ Set the username of MQTT
388 * (% style="color:blue" %)**AT+PWD=PWD                                        **(%%)~/~/ Set the password of MQTT
389 * (% style="color:blue" %)**AT+PUBTOPIC=T1_PUB                           **(%%)~/~/ Set the sending topic of MQTT
390 * (% style="color:blue" %)**AT+SUBTOPIC=T1_SUB          **(%%) ~/~/ Set the subscription topic of MQTT
391
392 [[image:1657522979257-629.png]]
393
394
395 [[image:1657522993615-517.png]]
396
397
398 (((
399 To save battery life, NBSN95 will establish a subscription before each uplink and close the subscription 3 seconds after uplink successful. Any downlink commands from server will only arrive during the subscription period.
400 )))
401
402
403 (((
404 MQTT protocol has a much higher power consumption compare vs UDP / CoAP protocol. Please check the power analyze document and adjust the uplink period to a suitable interval.
405 )))
406
407 (((
408
409 )))
410
411
412 === 2.2.8  Use TCP protocol to uplink data ===
413
414
415 This feature is supported since firmware version v110
416
417
418 * (% style="color:blue" %)**AT+PRO=4   ** (%%) ~/~/ Set to use TCP protocol to uplink
419 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5600   **(%%) ~/~/  to set TCP server address and port
420
421
422 [[image:1657523736162-303.png]]
423
424
425 [[image:1657523748549-241.png]]
426
427
428
429 === 2.2.9  Change Update Interval ===
430
431
432 User can use below command to change the (% style="color:green" %)**uplink interval**.
433
434 * (% style="color:blue" %)**AT+TDC=600      ** (%%)~/~/ Set Update Interval to 600s
435
436 (((
437
438 )))
439
440
441
442 == 2.3  Working Mode & Uplink Payload ==
443
444
445 (((
446 NBSN95 has different working mode for the connections of different type of sensors. This section describes these modes. User can use the AT Command (% style="color:blue" %)**AT+CFGMOD**(%%) to set NBSN95 to different working modes.
447 )))
448
449
450 (((
451 For example:
452 )))
453
454 (((
455 (% style="color:blue" %)**AT+CFGMOD=2     ** (%%) ~/~/** **will set the NBSN95 to work in MOD=2 distance mode which target to measure distance via [[Ultrasonic Sensor>>||anchor="H2.4.11A0UltrasonicSensor"]].
456 )))
457
458
459 (((
460 The uplink payloads are composed in ASCII String. For example:
461 )))
462
463 (((
464 0a cd 00 ed 0a cc 00 00 ef 02 d2 1d (total 24 ASCII Chars). Representative the actually payload:
465 )))
466
467 (((
468 0x 0a cd 00 ed 0a cc 00 00 ef 02 d2 1d Total 12 bytes
469 )))
470
471
472 (((
473 (% style="color:red" %)**NOTE:**
474 )))
475
476 (((
477 (% style="color:red" %)**1. All modes share the same Payload Explanation from [[HERE>>||anchor="H2.4A0PayloadExplanationandSensorInterface"]].
478 2. By default, the device will send an uplink message every 1 hour.**
479 )))
480
481
482
483 === 2.3.1 CFGMOD~=1 (Default Mode) ===
484
485
486 (((
487 In this mode, the uplink payload usually contains 25 bytes. ((% style="color:red" %)Note: Time stamp field are added since firmware version v120(%%))
488 )))
489
490
491 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
492 |=(% style="width: 55px;" %)(((
493 **Size(bytes)**
494 )))|=(% style="width: 35px;" %)6|=(% style="width: 25px;" %)2|=(% style="width: 25px;" %)**2**|=(% style="width: 40px;" %)**1**|=(% style="width: 30px;" %)**1**|=(% style="width: 58px;" %)**2**|=(% style="width: 50px;" %)**1**|=(% style="width: 25px;" %)**2**|=(% style="width: 63px;" %)**2**|=(% style="width: 63px;" %)**2**|=(% style="width: 50px;" %)**4**
495 |(% style="width:46px" %)**Value**|(% style="width:46px" %)[[Device ID>>||anchor="H2.4.1A0A0DeviceID"]]|(% style="width:46px" %)[[Ver>>||anchor="H2.4.2A0VersionInfo"]]|(% style="width:46px" %)[[BAT>>||anchor="H2.4.3A0BatteryInfo"]]|(% style="width:120px" %)[[Signal Strength>>||anchor="H2.4.4A0SignalStrength"]]|(% style="width:55px" %)(((
496 (((
497 MOD
498 )))
499
500 (((
501 0x01
502 )))
503 )))|(% style="width:60px" %)(((
504 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
505 )))|(% style="width:159px" %)[[Digital in>>||anchor="H2.4.6A0DigitalInput"]] & [[Interrupt>>||anchor="H2.4.8A0DigitalInterrupt"]]|(% style="width:49px" %)[[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]|(% style="width:104px" %)(((
506 (((
507 [[Temperature>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
508 )))
509
510 (((
511 by
512 )))
513
514 (((
515 SHT20/SHT31
516 )))
517 )))|(% style="width:112px" %)(((
518 (((
519 [[Humidity>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
520 )))
521
522 (((
523 by
524 )))
525
526 (((
527 SHT20/SHT31
528 )))
529 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
530
531 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
532
533 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:512px" %)
534 |(% style="width:115px" %)**Frame header**|(% style="width:118px" %)**Frame data(1)**|(% style="width:116px" %)**Frame data(2)**|(% style="width:39px" %)**F…**|(% style="width:117px" %)**Frame data(X)**
535
536 (% style="color:red" %)**NOTE:**
537
538 (% style="color:red" %)**1. Only up to 10 sets of latest data will be cached.**
539
540 (% style="color:red" %)**2. Theoretically, the maximum upload bytes are 215.**
541
542
543 (((
544 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
545 )))
546
547 [[image:1657526816370-997.png]]
548
549
550 (((
551 The payload is ASCII string, representative same HEX: 0x72403155615900780c541901000000004200fc023260da7c4e where:
552 )))
553
554 * Device ID: 0x724031556159 = 724031556159
555 * Version: 0x0078=120=1.2.0
556 * BAT: 0x0c54 = 3156 mV = 3.156V
557 * Singal: 0x19 = 25
558 * Model: 0x01 = 1
559 * Temperature by DS18b20: 0x0000 = 0
560 * Interrupt: 0x00 = 0
561 * ADC: 0x0042 = 66 = 66mv
562 * Temperature by SHT20/SHT31: 0x00fc = 252 = 25.2 °C
563 * Humidity by SHT20/SHT31: 0x0232 = 562 = 56.2 %rh
564 * Timestamp: 0x60da7c4e = 1,624,931,406 = 2021-06-29 09:50:06
565
566
567
568 === 2.3.2 CFGMOD~=2 (Distance Mode) ===
569
570
571 (((
572 This mode is target to measure the distance. Total 23 bytes, ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%))
573
574
575 )))
576
577 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
578 |=(% style="width: 55px;" %)(((
579 **Size(bytes)**
580 )))|=(% style="width: 35px;" %)6|=(% style="width: 30px;" %)2|=(% style="width: 30px;" %)**2**|=(% style="width: 40px;" %)**1**|=(% style="width: 30px;" %)**1**|=(% style="width: 58px;" %)**2**|=(% style="width: 50px;" %)**1**|=(% style="width: 30px;" %)**2**|=(% style="width: 100px;" %)**2**|=(% style="width: 50px;" %)**4**
581 |(% style="width:46px" %)**Value**|(% style="width:46px" %)[[Device ID>>||anchor="H2.4.1A0A0DeviceID"]]|(% style="width:46px" %)[[Ver>>||anchor="H2.4.2A0VersionInfo"]]|(% style="width:46px" %)[[BAT>>||anchor="H2.4.3A0BatteryInfo"]]|(% style="width:120px" %)[[Signal Strength>>||anchor="H2.4.4A0SignalStrength"]]|(% style="width:55px" %)(((
582 (((
583 MOD
584 )))
585
586 (((
587 0x02
588 )))
589 )))|(% style="width:60px" %)(((
590 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
591 )))|(% style="width:159px" %)[[Digital in>>||anchor="H2.4.6A0DigitalInput"]] & [[Interrupt>>||anchor="H2.4.8A0DigitalInterrupt"]]|(% style="width:49px" %)[[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]|(% style="width:104px" %)(((
592 (((
593 (((
594 [[Distance measure>>||anchor="H2.4.11A0UltrasonicSensor"]] by:
595 )))
596
597 (((
598 1) [[LIDAR-Lite V3HP>>||anchor="HConnectionofLIDAR-LiteV3HP:"]]
599 )))
600
601 (((
602 Or
603 )))
604
605 (((
606 2) [[Ultrasonic Sensor>>||anchor="H2.4.11A0UltrasonicSensor"]]
607 )))
608 )))
609 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
610
611 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
612
613 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:512px" %)
614 |(% style="width:115px" %)**Frame header**|(% style="width:118px" %)**Frame data(1)**|(% style="width:116px" %)**Frame data(2)**|(% style="width:39px" %)**F…**|(% style="width:117px" %)**Frame data(X)**
615
616 (((
617 (% style="color:red" %)**NOTE:**
618 )))
619
620 (((
621 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
622 )))
623
624 (((
625 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 193.**
626 )))
627
628
629 (((
630 (((
631 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
632 )))
633 )))
634
635
636 [[image:1657527383721-325.png]]
637
638
639 So the payload is 0x72403162907100780ca91102010b000ca8015860dacc87 where:
640
641 * Device ID: 0x724031629071 = 724031629071
642 * Version: 0x0078=120=1.2.0
643 * BAT: 0x0ca9 = 3241mV = 3.241 V
644 * Singal: 0x11 = 17
645 * Model: 0x02 = 2
646 * Temperature by DS18b20: 0x010b= 267 = 26.7  °C
647 * Interrupt: 0x00 = 0
648 * ADC: 0x0ca8 = 3240 mv
649 * Distance by LIDAR-Lite V3HP/Ultrasonic Sensor: 0x0158 = 344 cm
650 * Timestamp: 0x60dacc87 = 1,624,951,943 = 2021-06-29 15:32:23
651
652
653
654
655
656 ==== (% style="color:blue" %)Connection of LIDAR-Lite V3HP:(%%) ====
657
658
659 [[image:1657527422661-877.png]]
660
661
662 (% style="color:blue" %)**Connection to Ultrasonic Sensor:**
663
664 [[image:1657527441108-781.png]]
665
666
667
668 === 2.3.3 CFGMOD~=3 (3 ADC + I2C) ===
669
670
671 (((
672 This mode has total 26 bytes. Include 3 x ADC + 1x I2C, ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%))
673 )))
674
675 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
676 |=(% style="width: 55px;" %)(((
677 **Size(bytes)**
678 )))|=(% style="width: 35px;" %)6|=(% style="width: 25px;" %)2|=(% style="width: 25px;" %)**2**|=(% style="width: 40px;" %)**1**|=(% style="width: 30px;" %)**1**|=(% style="width: 30px;" %)**2**|=(% style="width: 50px;" %)**1**|=(% style="width: 28px;" %)**2**|=(% style="width: 61px;" %)**2**|=(% style="width: 61px;" %)**2**|=(% style="width: 30px;" %)2|=(% style="width: 50px;" %)**4**
679 |(% style="width:46px" %)**Value**|(% style="width:46px" %)[[Device ID>>||anchor="H2.4.1A0A0DeviceID"]]|(% style="width:46px" %)[[Ver>>||anchor="H2.4.2A0VersionInfo"]]|(% style="width:46px" %)[[BAT>>||anchor="H2.4.3A0BatteryInfo"]]|(% style="width:120px" %)[[Signal Strength>>||anchor="H2.4.4A0SignalStrength"]]|(% style="width:55px" %)(((
680 (((
681 MOD
682 )))
683
684 (((
685 0x03
686 )))
687 )))|(% style="width:60px" %)(((
688 [[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]1
689 )))|(% style="width:159px" %)[[Digital in>>||anchor="H2.4.6A0DigitalInput"]] & [[Interrupt>>||anchor="H2.4.8A0DigitalInterrupt"]]|(% style="width:49px" %)[[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]2|(% style="width:104px" %)(((
690 (((
691 [[Temperature>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
692 )))
693
694 (((
695 by
696 )))
697
698 (((
699 SHT20/SHT31
700 )))
701 )))|(% style="width:112px" %)(((
702 (((
703 [[Humidity>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
704 )))
705
706 (((
707 by
708 )))
709
710 (((
711 SHT20/SHT31
712 )))
713 )))|(% style="width:112px" %)[[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]3|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
714
715 ADC1 uses pin PA0 to measure
716
717 ADC2 uses pin PA1 to measure
718
719 ADC3 uses pin PA4 to measure
720
721
722 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
723
724
725 (% border="1" style="background-color:#ffffcc; color:green; width:510px" %)
726 |(% style="width:114px" %)**Frame header**|(% style="width:119px" %)**Frame data(1)**|(% style="width:118px" %)**Frame data(2)**|(% style="width:39px" %)**F…**|(% style="width:117px" %)**Frame data(X)**
727
728 (% style="color:red" %)**NOTE:**
729
730 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
731
732 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 226.**
733
734
735 (((
736 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
737 )))
738
739 [[image:1657527751330-433.png]]
740
741
742 So the payload is 0x724031629071780cf012030cbc000cef010a024b0cef60dbc494 where:
743
744 * Device ID: 0x724031629071 = 724031629071
745 * Version: 0x78=120=1.2.0
746 * BAT: 0x0cf0 = 3312 mV = 3.312 V
747 * Singal: 0x12 = 18
748 * Model: 0x03 = 3
749 * ADC1: 0x0cbc= 3260mV
750 * Interrupt: 0x00 = 0
751 * ADC2: 0x0cef =3311 mv
752 * Temperature by SHT20/SHT31: 0x010a = 266 = 26.6 °C
753 * Humidity by SHT20/SHT31: 0x024b =587 = 58.7 %rh
754 * ADC2: 0x0cef = 3311 mv
755 * Timestamp: 0x60dbc494 = 1,625,015,444= 2021-06-30 09:10:44
756
757
758
759
760
761 === 2.3.4 CFGMOD~=4 (3 x DS18B20) ===
762
763
764 (((
765 Hardware connection is as below, ((% style="color:red" %)**Note: R3 & R4 should change from 10k to 4.7k to support DS18B20, Software set to AT+CFGMOD=4**(%%))
766
767
768 )))
769
770 [[image:1657527815194-570.png]]
771
772
773 This mode has total 25 bytes. ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%)) As shown below:
774
775 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
776 |=(% style="width: 55px;" %)(((
777 **Size(bytes)**
778 )))|=(% style="width: 35px;" %)6|=(% style="width: 25px;" %)2|=(% style="width: 25px;" %)**2**|=(% style="width: 40px;" %)**1**|=(% style="width: 30px;" %)**1**|=(% style="width: 58px;" %)**2**|=(% style="width: 30px;" %)2|=(% style="width: 48px;" %)**1**|=(% style="width: 61px;" %)**2**|=(% style="width: 61px;" %)**2**|=(% style="width: 50px;" %)**4**
779 |(% style="width:46px" %)**Value**|(% style="width:46px" %)[[Device ID>>||anchor="H2.4.1A0A0DeviceID"]]|(% style="width:46px" %)[[Ver>>||anchor="H2.4.2A0VersionInfo"]]|(% style="width:46px" %)[[BAT>>||anchor="H2.4.3A0BatteryInfo"]]|(% style="width:120px" %)[[Signal Strength>>||anchor="H2.4.4A0SignalStrength"]]|(% style="width:55px" %)(((
780 (((
781 MOD
782 )))
783
784 (((
785 0x04
786 )))
787 )))|(% style="width:60px" %)(((
788 [[Temperature1 (DS18B20) (PB3)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
789 )))|(% style="width:60px" %)[[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]|(% style="width:159px" %)[[Digital in>>||anchor="H2.4.6A0DigitalInput"]] & [[Interrupt>>||anchor="H2.4.8A0DigitalInterrupt"]]|(% style="width:104px" %)(((
790 (((
791 [[Temperature2 (DS18B20) (PA9)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
792 )))
793 )))|(% style="width:112px" %)(((
794 (((
795 [[Temperature3 (DS18B20) (PA10)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
796 )))
797 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
798
799 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
800
801
802 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:538px" %)
803 |(% style="width:115px" %)**Frame header**|(% style="width:125px" %)**FFrame data(1)**|(% style="width:126px" %)**FFrame data(2)**|(% style="width:40px" %)**F…**|(% style="width:126px" %)**FFrame data(X)**
804
805 (% style="color:red" %)**NOTE:**
806
807 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
808
809 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes is 215.**
810
811
812 (((
813 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
814 )))
815
816 (((
817
818 )))
819
820 [[image:1657528339054-727.png]]
821
822
823 So the payload is 0x72403162907100780cdf1504010a0cde0000fb010060dbcb3f  where:
824
825 * Device ID: 0x724031629071 = 724031629071
826 * Version: 0x0078=120=1.2.0
827 * BAT: 0x0cdf = 3295 mV = 3.295 V
828 * Singal: 0x15 = 21
829 * Model: 0x04 = 4
830 * Temperature by DS18b20: 0x010a = 226 = 22.6 °C
831 * ADC: 0x0cde = 3294 mv
832 * Interrupt: 0x00 = 0
833 * Temperature by DS18b20: 0x00fb = 251 = 25.1°C
834 * Temperature by DS18b20: 0x0100  = 256 = 25.6 °C
835 * Timestamp: 0x60dbcb3f = 1,625,017,151= 2021-06-30 09:39:11
836
837
838
839 === 2.3.5 CFGMOD~=5 (Weight Measurement by HX711) ===
840
841
842 [[image:1657528388617-253.png]]
843
844
845 (% style="color:red" %)**Notes about hardware connection:**
846
847 1. Don't connect the HX711 module VCC to NBSN95 3.3v VCC, in this case, the NBSN95 will always power on HX711 and the battery will run out soon.
848 1. HX711 support 5v VCC, but while connect the NBSN95's +5V to HX711 VCC, the value from HX711 is not stable.
849 1. Connect NBSN95 +5V to HX711 VCC via a LDO module is stable.
850
851
852
853 (% style="color:red" %)**Each HX711 need to be calibrated before used. User need to do below two steps:**
854
855 1. Zero calibration. Don't put anything on load cell and run (% style="color:blue" %)**AT+WEIGRE**(%%) to calibrate to Zero gram.
856 1. Adjust calibration factor (default value 400): Put a known weight thing on load cell and run (% style="color:blue" %)**AT+WEIGAP**(%%) to adjust the Calibration Factor.
857
858
859
860
861 For example:
862
863 (% style="color:blue" %)**AT+WEIGAP =403.0**
864
865 Response:  Weight is 401 g
866
867
868 Check the response of this command and adjust the value to match the real value for thing.
869
870 This mode has total 23 bytes. ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%)). As shown below:
871
872 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
873 |=(% style="width: 55px;" %)(((
874 **Size(bytes)**
875 )))|=(% style="width: 45px;" %)6|=(% style="width: 30px;" %)2|=(% style="width: 30px;" %)**2**|=(% style="width: 65px;" %)**1**|=(% style="width: 30px;" %)**1**|=(% style="width: 58px;" %)**2**|=(% style="width: 30px;" %)**2**|=(% style="width: 85px;" %)**1**|=(% style="width: 40px;" %)**2**|=(% style="width: 50px;" %)**4**
876 |(% style="width:46px" %)**Value**|(% style="width:46px" %)[[Device ID>>||anchor="H2.4.1A0A0DeviceID"]]|(% style="width:46px" %)[[Ver>>||anchor="H2.4.2A0VersionInfo"]]|(% style="width:46px" %)[[BAT>>||anchor="H2.4.3A0BatteryInfo"]]|(% style="width:120px" %)[[Signal Strength>>||anchor="H2.4.4A0SignalStrength"]]|(% style="width:55px" %)(((
877 (((
878 MOD
879 )))
880
881 (((
882 0x05
883 )))
884 )))|(% style="width:60px" %)(((
885 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
886 )))|(% style="width:60px" %)[[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]|(% style="width:159px" %)[[Digital in>>||anchor="H2.4.6A0DigitalInput"]] & [[Interrupt>>||anchor="H2.4.8A0DigitalInterrupt"]]|(% style="width:104px" %)(((
887 (((
888 [[Weight>>||anchor="H2.4.13A0WeighSensorHX711"]]
889 )))
890 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
891
892 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
893
894
895 (% border="1" style="background-color:#ffffcc; color:green; width:522px" %)
896 |(% style="width:116px" %)**Frame header**|(% style="width:122px" %)**Frame data (1)**|(% style="width:122px" %)**Frame data (2)**|(% style="width:41px" %)**F…**|(% style="width:118px" %)**Frame data(X)**
897
898 (% style="color:red" %)**NOTE:**
899
900 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
901
902 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 193.**
903
904
905 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
906
907
908 [[image:1657528559833-164.png]]
909
910
911 So the payload is 0x72403162907100780c94140501370c9300003a60dbe59e where:
912
913 * Device ID: 0x724031629071 =724031629071
914 * Version: 0x0078=120=1.2.0
915 * BAT: 0x0c75 = 3220 mV = 3.220 V
916 * Singal: 0x14 = 20
917 * Model: 0x05 = 5
918 * Temperature by DS18b20: 0x0137 = 311 = 31.1 °C
919 * ADC: 0x0c74 = 3219 mv
920 * Interrupt: 0x00 = 0
921 * Weigt by HX711: 0x003a  = 58 g
922 * Timestamp: 0x60dbe59e = 1,625,023,902= 2021-06-30 11:31:42
923
924
925
926
927
928 === 2.3.6 CFGMOD~=6 (Counting mode) ===
929
930
931 (((
932 In this mode, uplink payload includes in total 20 bytes, ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%))
933 )))
934
935 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:400px" %)
936 |=(% style="width: 55px;" %)(((
937 **Size(bytes)**
938 )))|=(% style="width: 45px;" %)6|=(% style="width: 30px;" %)2|=(% style="width: 30px;" %)**2**|=(% style="width: 70px;" %)**1**|=(% style="width: 50px;" %)**1**|=(% style="width: 60px;" %)4|=(% style="width: 50px;" %)**4**
939 |(% style="width:46px" %)**Value**|(% style="width:46px" %)[[Device ID>>||anchor="H2.4.1A0A0DeviceID"]]|(% style="width:46px" %)[[Ver>>||anchor="H2.4.2A0VersionInfo"]]|(% style="width:46px" %)[[BAT>>||anchor="H2.4.3A0BatteryInfo"]]|(% style="width:120px" %)[[Signal Strength>>||anchor="H2.4.4A0SignalStrength"]]|(% style="width:55px" %)(((
940 (((
941 MOD 0x06
942 )))
943 )))|(% style="width:60px" %)Pulse count|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
944
945 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
946
947
948 (% border="1" style="background-color:#ffffcc; color:green; width:518px" %)
949 |(% style="width:116px" %)**Frame header**|(% style="width:121px" %)**Frame data (1)**|(% style="width:121px" %)**Frame data (2)**|(% style="width:39px" %)**F…**|(% style="width:118px" %)**Frame data(X)**
950
951 (% style="color:red" %)**NOTE:**
952
953 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
954
955 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 160.**
956
957
958 (((
959 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
960 )))
961
962
963 [[image:1657528693361-320.png]]
964
965 (((
966
967
968 The payload is ASCII string, representative same HEX: 0x72403162907100780cc714060000000260dc03e5 where:
969 )))
970
971 * Device ID: 0x724031629071 = 724031629071
972 * Version: 0x0078=120=1.2.0
973 * BAT: 0x0cc7 =3271mV =3.271V
974 * Singal: 0x14 = 20
975 * Model: 0x06 = 6
976 * Pulse count: 0x00000002= 2
977 * Timestamp: 0x60dc03e5 = 1,625,031,653= 2021-06-30 13:40:53
978
979
980
981
982
983 == 2.4  Payload Explanation and Sensor Interface ==
984
985
986 === 2.4.1  Device ID ===
987
988
989 (((
990 By default, the Device ID equal to the last 6 bytes of IMEI.
991 )))
992
993 (((
994 User can use (% style="color:blue" %)**AT+DEUI**(%%) to set Device ID
995 )))
996
997 (((
998
999
1000 **Example:**
1001 )))
1002
1003 (((
1004 AT+DEUI=A84041F15612
1005 )))
1006
1007 (((
1008 The Device ID is stored in a none-erase area, Upgrade the firmware or run AT+FDR won't erase Device ID.
1009 )))
1010
1011
1012
1013 === 2.4.2  Version Info ===
1014
1015
1016 (((
1017 (((
1018 These bytes include the hardware and software version.
1019 )))
1020
1021 (((
1022 Higher byte: Specify hardware version: always 0x01 for NBSN95
1023 )))
1024
1025 (((
1026 Lower byte: Specify the software version: 0x6E=110, means firmware version 110
1027 )))
1028
1029
1030 (((
1031 For example: 0x01 6E: this device is NBSN95 with firmware version 110.
1032 )))
1033 )))
1034
1035
1036
1037 === 2.4.3  Battery Info ===
1038
1039
1040 (((
1041 Ex1: 0x0B45 = 2885mV
1042 )))
1043
1044 (((
1045 Ex2: 0x0B49 = 2889mV
1046 )))
1047
1048
1049
1050 === 2.4.4  Signal Strength ===
1051
1052
1053 (((
1054 NB-IoT Network signal Strength.
1055 )))
1056
1057 (((
1058
1059
1060 **Ex1: 0x1d = 29**
1061 )))
1062
1063 (((
1064 (% style="color:blue" %)**0**(%%)  -113dBm or less
1065 )))
1066
1067 (((
1068 (% style="color:blue" %)**1**(%%)  -111dBm
1069 )))
1070
1071 (((
1072 (% style="color:blue" %)**2...30**(%%) -109dBm... -53dBm
1073 )))
1074
1075 (((
1076 (% style="color:blue" %)**31**  (%%) -51dBm or greater
1077 )))
1078
1079 (((
1080 (% style="color:blue" %)**99**   (%%) Not known or not detectable
1081 )))
1082
1083
1084
1085 === 2.4.5  Temperature (DS18B20) ===
1086
1087
1088 If there is a DS18B20 connected to PB3 pin. The temperature will be uploaded in the payload.
1089
1090 (((
1091 More DS18B20 can check the [[3 DS18B20 mode>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
1092 )))
1093
1094
1095 (((
1096 **Connection for one DS18B20**
1097 )))
1098
1099 [[image:image-20220711164131-3.jpeg]]
1100
1101
1102 **Example**:
1103
1104 If payload is: 0x0105:  (0105 & FC00 == 0), temp = 0x0105 /10 = 26.1 degree
1105
1106 If payload is: 0xFF3F:  (FF3F & FC00 == 1) , temp = (0xFF3F - 65536)/10 = -19.3 degree.
1107
1108
1109
1110 === 2.4.6  Digital Input ===
1111
1112
1113 The digital input is for pin PA12,
1114
1115 * When PA12 is high, the bit2 of this byte is 1.
1116 * When PA12 is low, the bit2 of this byte is 0.
1117
1118 (((
1119
1120 )))
1121
1122
1123
1124 === 2.4.7  Analogue Digital Converter (ADC) ===
1125
1126
1127 The ADC monitors the voltage on the (% style="color:blue" %)**PA0**(%%) line, in mV. Max value is from 0v to BAT voltage
1128
1129
1130 Ex: 0x021F = 543mv,
1131
1132
1133 (% style="color:blue" %)**Example1:**(%%)  Reading a Liquid Level Sensor (Read a resistance value):
1134
1135 [[image:image-20220711164848-12.png]]
1136
1137
1138
1139 (((
1140 In the NBSN95, we can use PB4 and PA0 pin to calculate the resistance for the liquid level sensor. The bottom of this sensor equal to 0ohm and top position equals to 10kohm.
1141 )))
1142
1143
1144 (% style="color:blue" %)**Steps:**
1145
1146 1. Solder a 10K resistor between PA0 and VCC.
1147 1. Screw liquid level sensor's two pins to PA0 and PB4.
1148
1149 The equipment circuit is as below:
1150
1151
1152 [[image:image-20220711164942-13.png]]
1153
1154
1155
1156 According to above diagram:
1157
1158 ([[image:image-20220711164435-6.png]]
1159
1160 So
1161
1162 [[image:image-20220711164435-7.png]]
1163
1164 [[image:image-20220711164435-8.png]] is the reading of ADC. So if ADC=0x05DC=0.9 v and VCC (BAT) is 2.9v
1165
1166
1167 The [[image:image-20220711164435-9.png]] 4.5K ohm
1168
1169 Since the buoy is linear resistance from 10 ~~ 70cm.
1170
1171
1172 The position of buoy is [[image:image-20220711164435-10.png]] , from the bottom of buoy.
1173
1174 (((
1175
1176 )))
1177
1178 (((
1179
1180 )))
1181
1182 === 2.4.8  Digital Interrupt ===
1183
1184
1185 (((
1186 Digital Interrupt refers to pin PB14, and there are different trigger methods. When there is a trigger, the NBSN95 will send a packet to the server.
1187 )))
1188
1189
1190 (((
1191 **Example to use with door sensor**
1192 )))
1193
1194 (((
1195 The door sensor is shown at right. It is a two wire magnetic contact switch used for detecting the open/close status of doors or windows.
1196 )))
1197
1198 [[image:image-20220711165615-14.png]]
1199
1200 (((
1201 When the two pieces are close to each other, the 2 wire output will be short or open (depending on the type), while if the two pieces are away from each other, the 2 wire output will be the opposite status. So we can use NBSN95 interrupt interface to detect the status for the door or window.
1202 )))
1203
1204
1205 (((
1206 Below is the installation example:
1207 )))
1208
1209 (((
1210 Fix one piece of the magnetic sensor to the door and connect the two pins to NBSN95 as follows:
1211 )))
1212
1213 * One pin to NBSN95's PB14 pin
1214 * The other pin to NBSN95's VCC pin
1215
1216 (((
1217 Install the other piece to the door. Find a place where the two pieces will be close to each other when the door is closed. For this particular magnetic sensor, when the door is closed, the output will be short, and PB14 will be at the VCC voltage.
1218 )))
1219
1220
1221 (((
1222 Door sensors have two types:  NC (Normal close) and NO (Normal Open). The connection for both type sensors are the same. But the decoding for payload is reverse, user need to modify this in the IoT Server decoder.
1223 )))
1224
1225
1226 (((
1227 When door sensor is shorted, there will extra power consumption in the circuit, the extra current is 3v3/R14 = 3v2/1Mohm = 0.3uA which can be ignored.
1228 )))
1229
1230
1231 [[image:image-20220711165615-15.png]]
1232
1233
1234 The above photos shows the two parts of the magnetic switch fitted to a door.
1235
1236
1237 (((
1238 The software by default uses the falling edge on the signal line as an interrupt. We need to modify it to accept both the rising edge (0v ~-~-> VCC , door close) and the falling edge (VCC ~-~-> 0v , door open) as the interrupt.
1239 )))
1240
1241
1242 (((
1243 The command is:
1244 )))
1245
1246 (((
1247 (% style="color:blue" %)**AT+INTMOD=1     ** (%%) ~/~/(more info about INMOD please refer [[AT Command Manual>>url:http://www.dragino.com/downloads/index.php?dir=NB-IoT/NBSN50/]]).
1248 )))
1249
1250
1251 Below shows some screen captures in TTN:
1252
1253
1254 (((
1255 In MOD=1, user can use the (% style="color:blue" %)**Digital Input & Interrupt** (%%)byte to see the status for door open or close. The Decode is:
1256 )))
1257
1258
1259 * When PB14 is high, the bit8 of this byte is 1.
1260 * When PB14 is low, the bit8 of this byte is 0.
1261
1262
1263
1264 === 2.4.9  I2C Interface (SHT20) ===
1265
1266
1267 (((
1268 The (% style="color:blue" %)**PB6(SDA)**(%%) and (% style="color:blue" %)**PB7(SCK)**(%%) are I2C interface. User can use these pins to connect to an I2C device and get the sensor data.
1269 )))
1270
1271 (((
1272 There is an example to show how to use the I2C interface to connect to the SHT20 Temperature and Humidity Sensor. This is support in [[**AT+CFGMOD=1**>>||anchor="H2.3.1CFGMOD3D128DefaultMode29"]]** (default value).**
1273 )))
1274
1275
1276 (((
1277 Hardware connection for SHT20 is as below: 
1278 )))
1279
1280
1281 [[image:image-20220711170438-16.jpeg]]
1282
1283
1284 The device will be able to get the I2C sensor data now and upload to IoT Server.
1285
1286
1287 [[image:image-20220711170438-17.png]]
1288
1289
1290 Convert the read byte to decimal and divide it by ten.
1291
1292
1293 (% style="color:blue" %)**Example:**
1294
1295 Temperature:  Read:00ec (H) = 236(D)  Value:  236 /10=23.6℃
1296
1297 Humidity:    Read:0295(H)=661(D)    Value:  661 / 10=66.1, So 66.1%
1298
1299
1300 If you want to use other I2C device, please refer the SHT20 part source code as reference.
1301
1302
1303
1304 === 2.4.10  Distance Reading ===
1305
1306
1307 Refer [[Ultrasonic Sensor section>>||anchor="H2.4.11A0UltrasonicSensor"]].
1308
1309
1310
1311 === 2.4.11  Ultrasonic Sensor ===
1312
1313
1314 (((
1315 The NBSN95 firmware supports ultrasonic sensor (with AT+CFGMOD=2) such as SEN0208 from DF-Robot. This Fundamental Principles of this sensor can be found at this link: [[https:~~/~~/wiki.dfrobot.com/Weather_-_proof_Ultrasonic_Sensor_with_Separate_Probe_SKU~~_~~__SEN0208>>url:https://wiki.dfrobot.com/Weather_-_proof_Ultrasonic_Sensor_with_Separate_Probe_SKU___SEN0208]]
1316 )))
1317
1318
1319 (((
1320 The NBSN95 detects the pulse width of the sensor and converts it to mm output. The accuracy will be within 1 centimeter. The usable range (the distance between the ultrasonic probe and the measured object) is between 24cm and 600cm.
1321 )))
1322
1323
1324 The picture below shows the connection:
1325
1326
1327 [[image:image-20220711171223-18.jpeg]]
1328
1329
1330
1331 Connect to the NBSN95 and run [[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)**AT+CFGMOD=2**>>||anchor="H2.3.2CFGMOD3D228DistanceMode29"]](%%) to switch to ultrasonic mode (ULT).
1332
1333
1334 **Example:**
1335
1336 Distance:  Read:0155(Hex) = 3410(D)  Value:  3410 mm=341.0 cm
1337
1338 [[image:image-20220711171223-19.png]]
1339
1340
1341 You can see the serial output in ULT mode as below:
1342
1343
1344 [[image:image-20220711171223-20.png]]
1345
1346
1347
1348 === 2.4.12  ​+5V Output ===
1349
1350
1351 (((
1352 NBSN95 will enable +5V output before all sampling and disable the +5v after all sampling. 
1353 )))
1354
1355
1356 (((
1357 The 5V output time can be controlled by AT Command.
1358 )))
1359
1360 (((
1361 (% style="color:blue" %)**AT+5VT=1000**
1362 )))
1363
1364 (((
1365 Means set 5V valid time to have 1000ms. So the real 5V output will actually have 1000ms + sampling time for other sensors.
1366 )))
1367
1368
1369
1370 === 2.4.13  Weigh Sensor HX711 ===
1371
1372
1373 NBSN95 supports Weigh Sensor HX711. See [[this link>>||anchor="H2.3.5CFGMOD3D528WeightMeasurementbyHX71129"]] for instruction.
1374
1375
1376
1377 === 2.4.14  Timestamp ===
1378
1379
1380 From the v1.2.0 version, the timestamp will be added after each upload link.
1381
1382
1383 The time of the timestamp is based on the time in time zone 0.
1384
1385 Such as: 0x60da837e = 1624933246 = 2021-06-29 2:20:46+32(Beijing time)
1386
1387
1388 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
1389
1390 Below is the converter example
1391
1392
1393 [[image:image-20220711171448-21.png]]
1394
1395
1396
1397 == 2.5  Downlink Payload ==
1398
1399
1400 By default, NBSN95 prints the downlink payload to console port.
1401
1402 [[image:image-20220708133731-5.png]]
1403
1404
1405 (((
1406 (% style="color:blue" %)**Examples:**
1407 )))
1408
1409 (((
1410
1411 )))
1412
1413 * (((
1414 (% style="color:blue" %)**Set TDC**
1415 )))
1416
1417 (((
1418 If the payload=0100003C, it means set the END Node's TDC to 0x00003C=60(S), while type code is 01.
1419 )))
1420
1421 (((
1422 Payload:    01 00 00 1E    TDC=30S
1423 )))
1424
1425 (((
1426 Payload:    01 00 00 3C    TDC=60S
1427 )))
1428
1429 (((
1430
1431 )))
1432
1433 * (((
1434 (% style="color:blue" %)**Reset**
1435 )))
1436
1437 (((
1438 If payload = 0x04FF, it will reset the NBSN95
1439 )))
1440
1441
1442 * (% style="color:blue" %)**INTMOD**
1443
1444 (((
1445 Downlink Payload: 06000003, Set AT+INTMOD=3
1446 )))
1447
1448
1449
1450 == 2.6  ​Firmware Change Log ==
1451
1452
1453 Download URL & Firmware Change log:  [[https:~~/~~/www.dropbox.com/sh/heyfnuod8qwwcm0/AACjmliw8Aeb9tYc74YoE9Qra?dl=0>>https://www.dropbox.com/sh/heyfnuod8qwwcm0/AACjmliw8Aeb9tYc74YoE9Qra?dl=0]]
1454
1455
1456 (((
1457 Upgrade Instruction: [[Upgrade Firmware>>||anchor="H6.1200BHowtoUpgradeFirmware"]]
1458 )))
1459
1460
1461
1462 == 2.7  Use VDD or +5V to Power External Sensor ==
1463
1464
1465 User can use VDD or +5V to power external sensor.
1466
1467
1468 (% style="color:red" %)**Note:**
1469
1470 1. VDD is 2.5~~3.3v from the battery + diode, the VDD is always on, so when use VDD to power external sensor, make sure the sensor has a low power consumption in sleep mode ( less 50 uA) to get a long battery life.
1471 1. +5V output is only ON when sampling. And MCU will turn off it after sampling. So if sensor can support 5v, +5V out is the best choice. [[See here for more info>>||anchor="H2.4.12A0200B2B5VOutput"]].
1472
1473
1474 (((
1475 (% style="color:red" %)**Note: Always test the actually current pass by the JP2 jumper when connect to a new type of sensor.**
1476 )))
1477
1478
1479
1480 == 2.8  ​Battery Analysis ==
1481
1482
1483 === 2.8.1  ​Battery Type ===
1484
1485
1486 (((
1487 The NBSN95 battery is a combination of an 8500mAh Li/SOCI2 Battery and a Super Capacitor. The battery is none-rechargeable battery type with a low discharge rate (<2% per year). This type of battery is commonly used in IoT devices such as water meter.
1488 )))
1489
1490
1491 (((
1492 The battery is designed to last for several years depends on the actually use environment and update interval. 
1493 )))
1494
1495
1496 (((
1497 The battery related documents as below:
1498 )))
1499
1500 * [[Battery Dimension>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1501 * [[Lithium-Thionyl Chloride Battery datasheet>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1502 * [[Lithium-ion Battery-Capacitor datasheet>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1503
1504 (((
1505 [[image:image-20220708140453-6.png]]
1506 )))
1507
1508
1509
1510 === 2.8.2  Power consumption Analyze ===
1511
1512
1513 The file **DRAGINO_NBSN95-Power-Analyzer.pdf** from [[https:~~/~~/www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0>>https://www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0]] describes a detail measurement to analyze the power consumption in different case. User can use it for design guideline for their project.
1514
1515 (((
1516
1517 )))
1518
1519
1520 === 2.8.3  ​Battery Note ===
1521
1522
1523 (((
1524 The Li-SICO battery is designed for small current / long period application. It is not good to use a high current, short period transmit method. The recommended minimum period for use of this battery is 5 minutes. If you use a shorter period time to transmit LoRa, then the battery life may be decreased.
1525 )))
1526
1527
1528
1529 === 2.8.4  Replace the battery ===
1530
1531
1532 (((
1533 You can change the battery in the NBSN95.The type of battery is not limited as long as the output is between 3v to 3.6v. On the main board, there is a diode (D1) between the battery and the main circuit. If you need to use a battery with less than 3.3v, please remove the D1 and shortcut the two pads of it so there won't be voltage drop between battery and main board.
1534 )))
1535
1536
1537 (((
1538 The default battery pack of NBSN95 includes a ER26500 plus super capacitor. If user can't find this pack locally, they can find ER26500 or equivalence without the SPC1520 capacitor, which will also work in most case. The SPC can enlarge the battery life for high frequency use (update period below 5 minutes).
1539 )))
1540
1541 (((
1542
1543 )))
1544
1545
1546 = 3. ​ Access NB-IoT Module =
1547
1548
1549 (((
1550 Users can directly access the AT command set of the NB-IoT module.
1551
1552 (((
1553 The AT Command set can refer the BC95-G AT Command: [[https:~~/~~/www.dragino.com/downloads/index.php?dir=datasheet/other_vendors/BC95-G/>>url:https://www.dragino.com/downloads/index.php?dir=datasheet/other_vendors/BC95-G/]]
1554 )))
1555
1556
1557 )))
1558
1559 [[image:1657531951422-179.png]]
1560
1561
1562
1563 = 4.  Using the AT Commands =
1564
1565
1566 == 4.1  Access AT Commands ==
1567
1568
1569 See this link for detail: [[https:~~/~~/www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0>>https://www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0]]
1570
1571
1572 AT+<CMD>?  : Help on <CMD>
1573
1574 AT+<CMD>         : Run <CMD>
1575
1576 AT+<CMD>=<value> : Set the value
1577
1578 AT+<CMD>=?  : Get the value
1579
1580
1581 (% style="color:#037691" %)**General Commands**(%%)      
1582
1583 AT  : Attention       
1584
1585 AT?  : Short Help     
1586
1587 ATZ  : MCU Reset    
1588
1589 AT+TDC  : Application Data Transmission Interval
1590
1591 AT+CFG  : Print all configurations
1592
1593 AT+CFGMOD           : Working mode selection
1594
1595 AT+INTMOD            : Set the trigger interrupt mode
1596
1597 AT+5VT  : Set extend the time of 5V power  
1598
1599 AT+PRO  : Choose agreement
1600
1601 AT+WEIGRE  : Get weight or set weight to 0
1602
1603 AT+WEIGAP  : Get or Set the GapValue of weight
1604
1605 AT+RXDL  : Extend the sending and receiving time
1606
1607 AT+CNTFAC  : Get or set counting parameters
1608
1609 AT+SERVADDR  : Server Address
1610
1611
1612 (% style="color:#037691" %)**COAP Management**      
1613
1614 AT+URI            : Resource parameters
1615
1616
1617 (% style="color:#037691" %)**UDP Management**
1618
1619 AT+CFM          : Upload confirmation mode (only valid for UDP)
1620
1621
1622 (% style="color:#037691" %)**MQTT Management**
1623
1624 AT+CLIENT               : Get or Set MQTT client
1625
1626 AT+UNAME  : Get or Set MQTT Username
1627
1628 AT+PWD                  : Get or Set MQTT password
1629
1630 AT+PUBTOPIC  : Get or Set MQTT publish topic
1631
1632 AT+SUBTOPIC  : Get or Set MQTT subscription topic
1633
1634
1635 (% style="color:#037691" %)**Information** 
1636
1637 AT+LDATA  : Get the last upload data
1638
1639 AT+CDP  : Read or Clear cached data(% style="color:#037691" %)       
1640
1641 AT+FDR  : Factory Data Reset
1642
1643 AT+PWORD  : Serial Access Password
1644
1645
1646
1647 = 5.  Developer Guide =
1648
1649
1650 == 5.1  Get and compile Software ==
1651
1652
1653 NBSN95 is an open-source project, developer can compile their firmware for customized applications. User can get the source code from:
1654
1655 * Software Source Code: [[https:~~/~~/github.com/dragino/NBSN95>>url:https://github.com/dragino/NBSN95]]
1656 * Compile instruction:  [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Compile%20Instruction%20~~-~~-%20STM32/>>http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Compile%20Instruction%20--%20STM32/]]
1657 * Upgrade firmware instruction
1658
1659 (((
1660 See FAQ of this file.
1661 )))
1662
1663
1664 (((
1665 The project file is in: (% style="color:#4472c4" %)** NBSN95-95.v1.0.0\NBSN95-95.v1.0.0\MDK-ARM\NBSN95-95.v1.0.0.uvprojx**
1666 )))
1667
1668
1669
1670 == 5.2  Get hardware source ==
1671
1672
1673 NBSN95 are the compose of two PCB modules:
1674
1675 1. Mother board:  [[LoRa ST Sensor node mother board>>url:https://github.com/dragino/Lora/tree/master/LSN50/v2.0]].
1676 1. NB-IoT Module: [[https:~~/~~/github.com/dragino/NB-IoT/tree/master/NB%20ST/BC95>>url:https://github.com/dragino/NB-IoT/tree/master/NB%20ST/BC95]]
1677
1678
1679
1680
1681 = ​6.  FAQ =
1682
1683
1684 == 6.1 ​ How to Upgrade Firmware ==
1685
1686
1687 (((
1688 User can upgrade the firmware for 1) bug fix, 2) new feature release.
1689 )))
1690
1691 (((
1692 Please see this link for how to upgrade:  [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/#H2.HardwareUpgradeMethodSupportList>>http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/#H2.HardwareUpgradeMethodSupportList]]
1693 )))
1694
1695 (((
1696 (% style="color:red" %)**Notice, NBSN95 and LSN50v2 share the same mother board. They use the same connection and method to update.**
1697 )))
1698
1699
1700
1701 = 7.  Trouble Shooting =
1702
1703
1704 == 7.1  ​Connection problem when uploading firmware ==
1705
1706
1707 (((
1708 **Please see: **[[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/#H3.3Troubleshooting>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/#H3.3Troubleshooting]]
1709 )))
1710
1711 (% class="wikigeneratedid" %)
1712 (((
1713
1714 )))
1715
1716
1717 == 7.2  AT Command input doesn't work ==
1718
1719
1720 (((
1721 In the case if user can see the console output but can't type input to the device. Please check if you already include the (% style="color:green" %)**ENTER**(%%) while sending out the command. Some serial tool doesn't send (% style="color:green" %)**ENTER**(%%) while press the send key, user need to add ENTER in their string.
1722
1723
1724 )))
1725
1726
1727 = 8. ​ Order Info =
1728
1729
1730 Part Number:
1731
1732 (% style="color:blue" %)**NBSN95-YY (Base on BC95-G)**
1733
1734 **or**
1735
1736 (% style="color:blue" %)**NBSN95A-YY(Base on BC35-G)**
1737
1738
1739 (% style="color:blue" %)**YY:**
1740
1741 * (% style="color:red" %)**12**(%%):  With M12 waterproof cable hole
1742 * (% style="color:red" %)**16**(%%):  With M16 waterproof cable hole
1743 * (% style="color:red" %)**NH**(%%): No Hole
1744
1745
1746
1747 = 9.  Packing Info =
1748
1749 (((
1750
1751
1752 (% style="color:#037691" %)**Package Includes**:
1753
1754 * NBSN95 NB-IoT Soil Moisture & EC Sensor x 1
1755 * External antenna x 1
1756 )))
1757
1758 (((
1759
1760
1761 (% style="color:#037691" %)**Dimension and weight**:
1762
1763 * Device Size: 13.0 x 5 x 4.5 cm
1764 * Device Weight: 150g
1765 * Package Size / pcs : 14.0 x 8x 5 cm
1766 * Weight / pcs : 180g
1767 )))
1768
1769 (((
1770
1771
1772
1773
1774 )))
1775
1776 = 10.  Support =
1777
1778
1779 * 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.
1780 * Provide as much information as possible regarding your enquiry (product models, accurately describe your problem and steps to replicate it etc) and send a mail to [[support@dragino.com>>url:http://../../../../../../D:%5C%E5%B8%82%E5%9C%BA%E8%B5%84%E6%96%99%5C%E8%AF%B4%E6%98%8E%E4%B9%A6%5CLoRa%5CLT%E7%B3%BB%E5%88%97%5Csupport@dragino.com]]
1781
1782
Copyright ©2010-2022 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0