Show last authors
1 (% style="text-align:center" %)
2 [[image:1657509006180-251.png]]
3
4
5
6
7
8
9
10
11
12
13 **Table of Contents:**
14
15 {{toc/}}
16
17
18
19
20
21
22 = 1.  Introduction =
23
24
25 == 1.1 ​ What is NBSN95 NB-IoT Sensor Node ==
26
27
28 (((
29 (((
30 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.
31 )))
32
33
34 (((
35 (% 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.
36 )))
37
38
39 (((
40 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.
41 )))
42
43
44 (((
45 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.
46 )))
47 )))
48
49
50 [[image:1657509740279-435.png]]
51
52
53
54 == 1.2 ​ Features ==
55
56
57 * STM32L072CZT6 MCU
58 * NB-IoT Bands: B1/B3/B8/B5/B20/B28 @H-FDD
59 * Pre-load bootloader on USART1/USART2
60 * MDK-ARM Version 5.24a IDE
61 * I2C, LPUSART1, USB, SPI2
62 * 3x12bit ADC, 1x12bit DAC
63 * 20xDigital I/O
64 * Open-source hardware / software
65 * IP66 Waterproof Enclosure
66 * Ultra-Low Power consumption
67 * AT Commands to change parameters
68 * Micro SIM card slot for NB-IoT SIM
69 * 8500mAh Battery for long term use
70
71
72
73
74 == 1.3  Specification ==
75
76
77 (% style="color:#037691" %)**Micro Controller:**
78
79 * STM32L072CZT6 MCU
80 * MCU: STM32L072CZT6
81 * Flash: 192KB
82 * RAM: 20KB
83 * EEPROM: 6KB
84 * Clock Speed: 32Mhz
85
86 (% style="color:#037691" %)**Common DC Characteristics:**
87
88 * Supply Voltage: 2.1v ~~ 3.6v
89 * Operating Temperature: -40 ~~ 85°C
90 * I/O pins: Refer to STM32L072 datasheet
91
92 (% style="color:#037691" %)**NB-IoT Spec:**
93
94 * - B1 @H-FDD: 2100MHz
95 * - B3 @H-FDD: 1800MHz
96 * - B8 @H-FDD: 900MHz
97 * - B5 @H-FDD: 850MHz
98 * - B20 @H-FDD: 800MHz
99 * - B28 @H-FDD: 700MHz
100
101 (% style="color:#037691" %)**Battery:**
102
103 * Li/SOCI2 un-chargeable battery
104 * Capacity: 8500mAh
105 * Self Discharge: <1% / Year @ 25°C
106 * Max continuously current: 130mA
107 * Max boost current: 2A, 1 second
108
109 (% style="color:#037691" %)**Power Consumption**
110
111 * STOP Mode: 10uA @ 3.3v
112 * Max transmit power: 350mA@3.3v
113
114
115
116
117 == ​1.4  Applications ==
118
119
120 * Smart Buildings & Home Automation
121 * Logistics and Supply Chain Management
122 * Smart Metering
123 * Smart Agriculture
124 * Smart Cities
125 * Smart Factory
126
127 (% class="wikigeneratedid" id="H200B1.5FirmwareChangelog" %)
128
129
130
131
132 == 1.5  Pin Definitions & Switch ==
133
134
135 [[image:1657510398618-181.png]]
136
137 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:520px" %)
138 |=(% style="width: 30px;" %)**No.**|=(% style="width: 70px;" %)**Signal**|=(% style="width: 60px;" %)**Direction**|=(% style="width: 180px;" %)**Function**|=(% style="width: 180px;" %)**Remark**
139 |(% 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
140 |(% 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
141 |(% style="width:44px" %)3|(% style="width:86px" %)PA1|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
142 |(% 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
143 |(% 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
144 |(% 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" %)
145 |(% 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" %)
146 |(% 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" %)
147 |(% style="width:44px" %)9|(% style="width:86px" %)PB4|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
148 |(% 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" %)
149 |(% 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" %)
150 |(% style="width:44px" %)12|(% style="width:86px" %)GND|(% style="width:84px" %) |(% style="width:322px" %)Ground|(% style="width:296px" %)
151 |(% 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
152 |(% style="width:44px" %)14|(% style="width:86px" %)Jumper|(% style="width:84px" %) |(% style="width:322px" %)Power on/off jumper|(% style="width:296px" %)
153 |(% style="width:44px" %)15|(% style="width:86px" %)PA4|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
154 |(% style="width:44px" %)16|(% style="width:86px" %)NRST|(% style="width:84px" %)In|(% style="width:322px" %)Reset MCU|(% style="width:296px" %)
155 |(% style="width:44px" %)17|(% style="width:86px" %)PA12|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
156 |(% style="width:44px" %)18|(% style="width:86px" %)PA11|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
157 |(% style="width:44px" %)19|(% style="width:86px" %)PA14|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
158 |(% style="width:44px" %)20|(% style="width:86px" %)PB13|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
159 |(% style="width:44px" %)21|(% style="width:86px" %)PB12|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
160 |(% style="width:44px" %)22|(% style="width:86px" %)PB15|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
161 |(% style="width:44px" %)23|(% style="width:86px" %)PB14|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
162 |(% style="width:44px" %)24|(% style="width:86px" %)PA13|(% style="width:84px" %)In/Out|(% style="width:322px" %)Directly from STM32 chip|(% style="width:296px" %)
163 |(% 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
164 |(% style="width:44px" %)26|(% style="width:86px" %)GND|(% style="width:84px" %) |(% style="width:322px" %)Ground|(% style="width:296px" %)
165 |(% 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)
166 |(% style="width:44px" %)28|(% style="width:86px" %)LED1|(% style="width:84px" %) |(% style="width:322px" %)Controlled by PA8|(% style="width:296px" %)Blink on transmit
167 |(% 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" %)(((
168 (((
169 Flash: Normal Working mode and send AT Commands
170 )))
171
172 (((
173 ISP: UART Program Mode
174 )))
175 )))
176 |(% style="width:44px" %)30|(% style="width:86px" %)NRST|(% style="width:84px" %)In|(% style="width:322px" %)Reset MCU|(% style="width:296px" %)
177
178
179
180 === 1.5.1 Jumper JP2 ===
181
182
183 Power on Device when put this jumper.
184
185
186
187 === 1.5.2 BOOT MODE / SW1 ===
188
189
190 (((
191 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.
192 )))
193
194 (((
195 2) Flash: work mode, device starts to work and send out console output for further debug
196 )))
197
198
199
200 === 1.5.3 Reset Button ===
201
202
203 Press to reboot the device.
204
205
206
207 === 1.5.4 LED ===
208
209
210 It will flash:
211
212 1. When boot the device in flash mode
213 1. Send an uplink packet
214
215
216
217
218 == 1.6 Hole Option ==
219
220
221 The NBSN95 provides different hole size options for different size sensor cable. The options provided are M12, M16. The definition is as below:
222
223
224 [[image:image-20220711135811-1.png]]
225
226
227 [[image:1657519103007-447.png]]
228
229
230
231 = 2.  Use NBSN95 to communicate with IoT Server =
232
233
234 == 2.1  How it works ==
235
236
237 (((
238 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.
239 )))
240
241
242 (((
243 The diagram below shows the working flow in default firmware of NBSN95:
244 )))
245
246 [[image:image-20220711135919-2.png]]
247
248
249
250 == 2.2 ​ Configure the NBSN95 ==
251
252
253 === 2.2.1  Power On NBSN95 ===
254
255
256 [[image:1657519498925-521.png]]
257
258
259 === 2.2.2  Test Requirement ===
260
261
262 (((
263 To use NBSN95 in your city, make sure meet below requirements:
264 )))
265
266 * Your local operator has already distributed a NB-IoT Network there.
267 * The local NB-IoT network used the band that NBSN95 supports.
268 * Your operator is able to distribute the data received in their NB-IoT network to your IoT server.
269
270 (((
271 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
272 )))
273
274
275 [[image:1657519549982-889.png]]
276
277
278
279 === 2.2.3  Insert SIM card ===
280
281
282 (((
283 Insert the NB-IoT Card get from your provider.
284 )))
285
286 (((
287 User need to take out the NB-IoT module and insert the SIM card like below:
288 )))
289
290
291 [[image:1657249468462-536.png]]
292
293
294
295 === 2.2.4  Connect USB – TTL to NBSN95 to configure it ===
296
297
298 (((
299 (((
300 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.
301 )))
302 )))
303
304 [[image:1657520237594-636.png]]
305
306
307 In the PC, use below serial tool settings:
308
309 * Baud:  (% style="color:green" %)**9600**
310 * Data bits:** (% style="color:green" %)8(%%)**
311 * Stop bits: (% style="color:green" %)**1**
312 * Parity:  (% style="color:green" %)**None**
313 * Flow Control: (% style="color:green" %)**None**
314
315 (((
316
317
318
319 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.
320
321
322 )))
323
324 [[image:1657520459085-315.png]]
325
326
327 (((
328 (% 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]]**
329 )))
330
331
332
333 === 2.2.5  Use CoAP protocol to uplink data ===
334
335
336 (% 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/]]**
337
338
339 **Use below commands:**
340
341 * (% style="color:blue" %)**AT+PRO=1**  (%%) ~/~/ Set to use CoAP protocol to uplink
342 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5683   ** (%%)~/~/ to set CoAP server address and port
343 * (% style="color:blue" %)**AT+URI=5,11,"mqtt",11,"coap",12,"0",15,"c=text1",23,"0" ** (%%) ~/~/Set COAP resource path
344
345 For parameter description, please refer to AT command set
346
347
348 [[image:1657249793983-486.png]]
349
350
351 (((
352 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.
353 )))
354
355 [[image:1657522754681-536.png]]
356
357
358
359 === 2.2.6  Use UDP protocol to uplink data(Default protocol) ===
360
361
362 This feature is supported since firmware version v1.0.1
363
364
365 * (% style="color:blue" %)**AT+PRO=2   ** (%%) ~/~/ Set to use UDP protocol to uplink
366 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5601   ** (%%) ~/~/ to set UDP server address and port
367 * (% style="color:blue" %)**AT+CFM=1       ** (%%) ~/~/If the server does not respond, this command is unnecessary
368
369
370
371 [[image:1657522829933-263.png]]
372
373
374 [[image:1657522854411-706.png]]
375
376
377
378 === 2.2.7  Use MQTT protocol to uplink data ===
379
380
381 (((
382 This feature is supported since firmware version v110, it supports only plain MQTT now it doesn't support TLS and other related encryption.
383 )))
384
385
386 * (% style="color:blue" %)**AT+PRO=3   ** (%%) ~/~/Set to use MQTT protocol to uplink
387 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,1883   ** (%%) ~/~/Set MQTT server address and port
388 * (% style="color:blue" %)**AT+CLIENT=CLIENT       ** (%%)~/~/Set up the CLIENT of MQTT
389 * (% style="color:blue" %)**AT+UNAME=UNAME                               **(%%)~/~/Set the username of MQTT
390 * (% style="color:blue" %)**AT+PWD=PWD                                        **(%%)~/~/Set the password of MQTT
391 * (% style="color:blue" %)**AT+PUBTOPIC=T1_PUB                           **(%%)~/~/Set the sending topic of MQTT
392 * (% style="color:blue" %)**AT+SUBTOPIC=T1_SUB          **(%%) ~/~/Set the subscription topic of MQTT
393
394
395 [[image:1657522979257-629.png]]
396
397
398 [[image:1657522993615-517.png]]
399
400
401 (((
402 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.
403 )))
404
405
406 (((
407 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.
408 )))
409
410 (((
411
412 )))
413
414
415 === 2.2.8  Use TCP protocol to uplink data ===
416
417
418 This feature is supported since firmware version v110
419
420
421 * (% style="color:blue" %)**AT+PRO=4   ** (%%) ~/~/ Set to use TCP protocol to uplink
422 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5600   **(%%) ~/~/ to set TCP server address and port
423
424
425
426 [[image:1657523736162-303.png]]
427
428
429 [[image:1657523748549-241.png]]
430
431
432
433
434 === 2.2.9  Change Update Interval ===
435
436
437 User can use below command to change the (% style="color:green" %)**uplink interval**.
438
439 * (% style="color:blue" %)**AT+TDC=600      ** (%%)~/~/ Set Update Interval to 600s
440
441 (((
442
443 )))
444
445
446
447 == 2.3  Working Mode & Uplink Payload ==
448
449
450 (((
451 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.
452 )))
453
454
455 (((
456 For example:
457 )))
458
459 (((
460 (% 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"]].
461 )))
462
463
464 (((
465 The uplink payloads are composed in ASCII String. For example:
466 )))
467
468 (((
469 0a cd 00 ed 0a cc 00 00 ef 02 d2 1d (total 24 ASCII Chars). Representative the actually payload:
470 )))
471
472 (((
473 0x 0a cd 00 ed 0a cc 00 00 ef 02 d2 1d Total 12 bytes
474 )))
475
476
477 (((
478 (% style="color:red" %)**NOTE:**
479 )))
480
481 (((
482 (% style="color:red" %)**1. All modes share the same Payload Explanation from [[HERE>>||anchor="H2.4A0PayloadExplanationandSensorInterface"]].
483 2. By default, the device will send an uplink message every 1 hour.**
484 )))
485
486
487
488 === 2.3.1 CFGMOD~=1 (Default Mode) ===
489
490
491 (((
492 In this mode, the uplink payload usually contains 25 bytes. ((% style="color:red" %)Note: Time stamp field are added since firmware version v120(%%))
493 )))
494
495
496 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
497 |=(% style="width: 55px;" %)(((
498 **Size(bytes)**
499 )))|=(% 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**
500 |(% 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" %)(((
501 (((
502 MOD
503 )))
504
505 (((
506 0x01
507 )))
508 )))|(% style="width:60px" %)(((
509 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
510 )))|(% 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" %)(((
511 (((
512 [[Temperature>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
513 )))
514
515 (((
516 by
517 )))
518
519 (((
520 SHT20/SHT31
521 )))
522 )))|(% style="width:112px" %)(((
523 (((
524 [[Humidity>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
525 )))
526
527 (((
528 by
529 )))
530
531 (((
532 SHT20/SHT31
533 )))
534 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
535
536 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
537
538 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:512px" %)
539 |(% 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)**
540
541 (% style="color:red" %)**NOTE:**
542
543 (% style="color:red" %)**1. Only up to 10 sets of latest data will be cached.**
544
545 (% style="color:red" %)**2. Theoretically, the maximum upload bytes are 215.**
546
547
548 (((
549 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
550 )))
551
552 [[image:1657526816370-997.png]]
553
554
555 (((
556 The payload is ASCII string, representative same HEX: 0x72403155615900780c541901000000004200fc023260da7c4e where:
557 )))
558
559 * Device ID: 0x724031556159 = 724031556159
560 * Version: 0x0078=120=1.2.0
561 * BAT: 0x0c54 = 3156 mV = 3.156V
562 * Singal: 0x19 = 25
563 * Model: 0x01 = 1
564 * Temperature by DS18b20: 0x0000 = 0
565 * Interrupt: 0x00 = 0
566 * ADC: 0x0042 = 66 = 66mv
567 * Temperature by SHT20/SHT31: 0x00fc = 252 = 25.2 °C
568 * Humidity by SHT20/SHT31: 0x0232 = 562 = 56.2 %rh
569 * Timestamp: 0x60da7c4e = 1,624,931,406 = 2021-06-29 09:50:06
570
571
572
573
574 === 2.3.2 CFGMOD~=2 (Distance Mode) ===
575
576
577 (((
578 This mode is target to measure the distance. Total 23 bytes, ((% style="color:red" %)Note: Time stamp field are added since firmware version v120(%%))
579
580
581 )))
582
583 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
584 |=(% style="width: 55px;" %)(((
585 **Size(bytes)**
586 )))|=(% 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**
587 |(% 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" %)(((
588 (((
589 MOD
590 )))
591
592 (((
593 0x02
594 )))
595 )))|(% style="width:60px" %)(((
596 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
597 )))|(% 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" %)(((
598 (((
599 (((
600 [[Distance measure>>||anchor="H2.4.11A0UltrasonicSensor"]] by:
601 )))
602
603 (((
604 1) [[LIDAR-Lite V3HP>>||anchor="HConnectionofLIDAR-LiteV3HP:"]]
605 )))
606
607 (((
608 Or
609 )))
610
611 (((
612 2) [[Ultrasonic Sensor>>||anchor="H2.4.11A0UltrasonicSensor"]]
613 )))
614 )))
615 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
616
617 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
618
619 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:512px" %)
620 |(% 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)**
621
622
623 (((
624 (% style="color:red" %)**NOTE:**
625 )))
626
627 (((
628 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
629 )))
630
631 (((
632 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 193.**
633 )))
634
635
636 (((
637 (((
638 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
639 )))
640 )))
641
642
643 [[image:1657527383721-325.png]]
644
645
646 So the payload is 0x72403162907100780ca91102010b000ca8015860dacc87 where:
647
648 * Device ID: 0x724031629071 = 724031629071
649 * Version: 0x0078=120=1.2.0
650 * BAT: 0x0ca9 = 3241mV = 3.241 V
651 * Singal: 0x11 = 17
652 * Model: 0x02 = 2
653 * Temperature by DS18b20: 0x010b= 267 = 26.7  °C
654 * Interrupt: 0x00 = 0
655 * ADC: 0x0ca8 = 3240 mv
656 * Distance by LIDAR-Lite V3HP/Ultrasonic Sensor: 0x0158 = 344 cm
657 * Timestamp: 0x60dacc87 = 1,624,951,943 = 2021-06-29 15:32:23
658
659
660 ==== (% style="color:blue" %)Connection of LIDAR-Lite V3HP:(%%) ====
661
662 [[image:1657527422661-877.png]]
663
664
665 (% style="color:blue" %)**Connection to Ultrasonic Sensor:**
666
667 [[image:1657527441108-781.png]]
668
669
670
671 === 2.3.3 CFGMOD~=3 (3 ADC + I2C) ===
672
673
674 (((
675 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(%%))
676 )))
677
678 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
679 |=(% style="width: 55px;" %)(((
680 **Size(bytes)**
681 )))|=(% 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**
682 |(% 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" %)(((
683 (((
684 MOD
685 )))
686
687 (((
688 0x03
689 )))
690 )))|(% style="width:60px" %)(((
691 [[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]1
692 )))|(% 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" %)(((
693 (((
694 [[Temperature>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
695 )))
696
697 (((
698 by
699 )))
700
701 (((
702 SHT20/SHT31
703 )))
704 )))|(% style="width:112px" %)(((
705 (((
706 [[Humidity>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
707 )))
708
709 (((
710 by
711 )))
712
713 (((
714 SHT20/SHT31
715 )))
716 )))|(% style="width:112px" %)[[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]3|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
717
718 ADC1 uses pin PA0 to measure
719
720 ADC2 uses pin PA1 to measure
721
722 ADC3 uses pin PA4 to measure
723
724
725 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
726
727
728 (% border="1" style="background-color:#ffffcc; color:green; width:510px" %)
729 |(% 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)**
730
731
732 (% style="color:red" %)**NOTE:**
733
734 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
735
736 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 226.**
737
738
739 (((
740 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
741 )))
742
743 [[image:1657527751330-433.png]]
744
745
746 So the payload is 0x724031629071780cf012030cbc000cef010a024b0cef60dbc494 where:
747
748 * Device ID: 0x724031629071 = 724031629071
749 * Version: 0x78=120=1.2.0
750 * BAT: 0x0cf0 = 3312 mV = 3.312 V
751 * Singal: 0x12 = 18
752 * Model: 0x03 = 3
753 * ADC1: 0x0cbc= 3260mV
754 * Interrupt: 0x00 = 0
755 * ADC2: 0x0cef =3311 mv
756 * Temperature by SHT20/SHT31: 0x010a = 266 = 26.6 °C
757 * Humidity by SHT20/SHT31: 0x024b =587 = 58.7 %rh
758 * ADC2: 0x0cef = 3311 mv
759 * Timestamp: 0x60dbc494 = 1,625,015,444= 2021-06-30 09:10:44
760
761
762
763
764 === 2.3.4 CFGMOD~=4 (3 x DS18B20) ===
765
766
767 (((
768 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(%%))
769
770
771 )))
772
773 [[image:1657527815194-570.png]]
774
775
776 This mode has total 25 bytes. ((% style="color:red" %)Note: Time stamp field are added since firmware version v120(%%)) As shown below:
777
778 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
779 |=(% style="width: 55px;" %)(((
780 **Size(bytes)**
781 )))|=(% 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**
782 |(% 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" %)(((
783 (((
784 MOD
785 )))
786
787 (((
788 0x04
789 )))
790 )))|(% style="width:60px" %)(((
791 [[Temperature1 (DS18B20) (PB3)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
792 )))|(% 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" %)(((
793 (((
794 [[Temperature2 (DS18B20) (PA9)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
795 )))
796 )))|(% style="width:112px" %)(((
797 (((
798 [[Temperature3 (DS18B20) (PA10)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
799 )))
800 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
801
802 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
803
804
805 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:538px" %)
806 |(% 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)**
807
808
809 (% style="color:red" %)**NOTE:**
810
811 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
812
813 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes is 215.**
814
815
816 (((
817 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
818 )))
819
820 (((
821
822 )))
823
824 [[image:1657528339054-727.png]]
825
826
827 So the payload is 0x72403162907100780cdf1504010a0cde0000fb010060dbcb3f  where:
828
829 * Device ID: 0x724031629071 = 724031629071
830 * Version: 0x0078=120=1.2.0
831 * BAT: 0x0cdf = 3295 mV = 3.295 V
832 * Singal: 0x15 = 21
833 * Model: 0x04 = 4
834 * Temperature by DS18b20: 0x010a = 226 = 22.6 °C
835 * ADC: 0x0cde = 3294 mv
836 * Interrupt: 0x00 = 0
837 * Temperature by DS18b20: 0x00fb = 251 = 25.1°C
838 * Temperature by DS18b20: 0x0100  = 256 = 25.6 °C
839 * Timestamp: 0x60dbcb3f = 1,625,017,151= 2021-06-30 09:39:11
840
841
842
843
844 === 2.3.5 CFGMOD~=5 (Weight Measurement by HX711) ===
845
846
847 [[image:1657528388617-253.png]]
848
849
850 (% style="color:red" %)**Notes about hardware connection:**
851
852 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.
853 1. HX711 support 5v VCC, but while connect the NBSN95's +5V to HX711 VCC, the value from HX711 is not stable.
854 1. Connect NBSN95 +5V to HX711 VCC via a LDO module is stable.
855
856
857
858 (% style="color:red" %)**Each HX711 need to be calibrated before used. User need to do below two steps:**
859
860 1. Zero calibration. Don't put anything on load cell and run (% style="color:blue" %)**AT+WEIGRE**(%%) to calibrate to Zero gram.
861 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.
862
863
864 For example:
865
866 (% style="color:blue" %)**AT+WEIGAP =403.0**
867
868 Response:  Weight is 401 g
869
870
871 Check the response of this command and adjust the value to match the real value for thing.
872
873 This mode has total 23 bytes. (Note: Time stamp field are added since firmware version v120). As shown below:
874
875 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
876 |=(% style="width: 55px;" %)(((
877 **Size(bytes)**
878 )))|=(% 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**
879 |(% 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" %)(((
880 (((
881 MOD
882 )))
883
884 (((
885 0x05
886 )))
887 )))|(% style="width:60px" %)(((
888 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
889 )))|(% 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" %)(((
890 (((
891 [[Weight>>||anchor="H2.4.13A0WeighSensorHX711"]]
892 )))
893 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
894
895 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
896
897
898 (% border="1" style="background-color:#ffffcc; color:green; width:522px" %)
899 |(% 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)**
900
901
902 (% style="color:red" %)**NOTE:**
903
904 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
905
906 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 193.**
907
908
909 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
910
911
912 [[image:1657528559833-164.png]]
913
914
915 So the payload is 0x72403162907100780c94140501370c9300003a60dbe59e where:
916
917 * Device ID: 0x724031629071 =724031629071
918 * Version: 0x0078=120=1.2.0
919 * BAT: 0x0c75 = 3220 mV = 3.220 V
920 * Singal: 0x14 = 20
921 * Model: 0x05 = 5
922 * Temperature by DS18b20: 0x0137 = 311 = 31.1 °C
923 * ADC: 0x0c74 = 3219 mv
924 * Interrupt: 0x00 = 0
925 * Weigt by HX711: 0x003a  = 58 g
926 * Timestamp: 0x60dbe59e = 1,625,023,902= 2021-06-30 11:31:42
927
928
929
930
931 === 2.3.6 CFGMOD~=6 (Counting mode) ===
932
933
934 (((
935 In this mode, uplink payload includes in total 20 bytes, ((% style="color:red" %)Note: Time stamp field are added since firmware version v120(%%))
936 )))
937
938 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:400px" %)
939 |=(% style="width: 55px;" %)(((
940 **Size(bytes)**
941 )))|=(% 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**
942 |(% 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" %)(((
943 (((
944 MOD 0x06
945 )))
946 )))|(% style="width:60px" %)Pulse count|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
947
948 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
949
950
951 (% border="1" style="background-color:#ffffcc; color:green; width:518px" %)
952 |(% 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)**
953
954
955 (% style="color:red" %)**NOTE:**
956
957 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
958
959 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 160.**
960
961
962 (((
963 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
964 )))
965
966
967 [[image:1657528693361-320.png]]
968
969 (((
970
971
972 The payload is ASCII string, representative same HEX: 0x72403162907100780cc714060000000260dc03e5 where:
973 )))
974
975 * Device ID: 0x724031629071 = 724031629071
976 * Version: 0x0078=120=1.2.0
977 * BAT: 0x0cc7 =3271mV =3.271V
978 * Singal: 0x14 = 20
979 * Model: 0x06 = 6
980 * Pulse count: 0x00000002= 2
981 * Timestamp: 0x60dc03e5 = 1,625,031,653= 2021-06-30 13:40:53
982
983
984
985
986 == 2.4  Payload Explanation and Sensor Interface ==
987
988
989 === 2.4.1  Device ID ===
990
991
992 (((
993 By default, the Device ID equal to the last 6 bytes of IMEI.
994 )))
995
996 (((
997 User can use (% style="color:blue" %)**AT+DEUI**(%%) to set Device ID
998 )))
999
1000 (((
1001 **Example:**
1002 )))
1003
1004 (((
1005 AT+DEUI=A84041F15612
1006 )))
1007
1008 (((
1009 The Device ID is stored in a none-erase area, Upgrade the firmware or run AT+FDR won't erase Device ID.
1010 )))
1011
1012
1013
1014 === 2.4.2  Version Info ===
1015
1016
1017 (((
1018 (((
1019 These bytes include the hardware and software version.
1020 )))
1021
1022 (((
1023 Higher byte: Specify hardware version: always 0x01 for NBSN95
1024 )))
1025
1026 (((
1027 Lower byte: Specify the software version: 0x6E=110, means firmware version 110
1028 )))
1029
1030
1031 (((
1032 For example: 0x01 6E: this device is NBSN95 with firmware version 110.
1033 )))
1034 )))
1035
1036
1037
1038 === 2.4.3  Battery Info ===
1039
1040
1041 (((
1042 Ex1: 0x0B45 = 2885mV
1043 )))
1044
1045 (((
1046 Ex2: 0x0B49 = 2889mV
1047 )))
1048
1049
1050
1051 === 2.4.4  Signal Strength ===
1052
1053
1054 (((
1055 NB-IoT Network signal Strength.
1056 )))
1057
1058 (((
1059 **Ex1: 0x1d = 29**
1060 )))
1061
1062 (((
1063 (% style="color:blue" %)**0**(%%)  -113dBm or less
1064 )))
1065
1066 (((
1067 (% style="color:blue" %)**1**(%%)  -111dBm
1068 )))
1069
1070 (((
1071 (% style="color:blue" %)**2...30**(%%) -109dBm... -53dBm
1072 )))
1073
1074 (((
1075 (% style="color:blue" %)**31**  (%%) -51dBm or greater
1076 )))
1077
1078 (((
1079 (% style="color:blue" %)**99**   (%%) Not known or not detectable
1080 )))
1081
1082
1083
1084 === 2.4.5  Temperature (DS18B20) ===
1085
1086
1087 If there is a DS18B20 connected to PB3 pin. The temperature will be uploaded in the payload.
1088
1089 (((
1090 More DS18B20 can check the [[3 DS18B20 mode>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
1091 )))
1092
1093
1094 (((
1095 **Connection for one DS18B20**
1096 )))
1097
1098 [[image:image-20220711164131-3.jpeg]]
1099
1100
1101 **Example**:
1102
1103 If payload is: 0x0105:  (0105 & FC00 == 0), temp = 0x0105 /10 = 26.1 degree
1104
1105 If payload is: 0xFF3F:  (FF3F & FC00 == 1) , temp = (0xFF3F - 65536)/10 = -19.3 degree.
1106
1107
1108
1109 === 2.4.6  Digital Input ===
1110
1111
1112 The digital input is for pin PA12,
1113
1114 * When PA12 is high, the bit2 of this byte is 1.
1115 * When PA12 is low, the bit2 of this byte is 0.
1116
1117 (((
1118
1119 )))
1120
1121
1122
1123 === 2.4.7  Analogue Digital Converter (ADC) ===
1124
1125
1126 The ADC monitors the voltage on the (% style="color:blue" %)**PA0**(%%) line, in mV. Max value is from 0v to BAT voltage
1127
1128
1129 Ex: 0x021F = 543mv,
1130
1131
1132 (% style="color:blue" %)**Example1:**(%%)  Reading a Liquid Level Sensor (Read a resistance value):
1133
1134 [[image:image-20220711164848-12.png]]
1135
1136
1137
1138 (((
1139 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.
1140 )))
1141
1142
1143 (% style="color:blue" %)**Steps:**
1144
1145 1. Solder a 10K resistor between PA0 and VCC.
1146 1. Screw liquid level sensor's two pins to PA0 and PB4.
1147
1148 The equipment circuit is as below:
1149
1150
1151 [[image:image-20220711164942-13.png]]
1152
1153
1154
1155 According to above diagram:
1156
1157 ([[image:image-20220711164435-6.png]]
1158
1159 So
1160
1161 [[image:image-20220711164435-7.png]]
1162
1163 [[image:image-20220711164435-8.png]] is the reading of ADC. So if ADC=0x05DC=0.9 v and VCC (BAT) is 2.9v
1164
1165
1166 The [[image:image-20220711164435-9.png]] 4.5K ohm
1167
1168 Since the buoy is linear resistance from 10 ~~ 70cm.
1169
1170
1171 The position of buoy is [[image:image-20220711164435-10.png]] , from the bottom of buoy.
1172
1173 (((
1174
1175 )))
1176
1177 (((
1178
1179 )))
1180
1181 === 2.4.8  Digital Interrupt ===
1182
1183
1184 (((
1185 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.
1186 )))
1187
1188
1189 (((
1190 **Example to use with door sensor**
1191 )))
1192
1193 (((
1194 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.
1195 )))
1196
1197 [[image:image-20220711165615-14.png]]
1198
1199 (((
1200 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.
1201 )))
1202
1203
1204 (((
1205 Below is the installation example:
1206 )))
1207
1208 (((
1209 Fix one piece of the magnetic sensor to the door and connect the two pins to NBSN95 as follows:
1210 )))
1211
1212 * One pin to NBSN95's PB14 pin
1213 * The other pin to NBSN95's VCC pin
1214
1215 (((
1216 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.
1217 )))
1218
1219
1220 (((
1221 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.
1222 )))
1223
1224
1225 (((
1226 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.
1227 )))
1228
1229
1230 [[image:image-20220711165615-15.png]]
1231
1232
1233 The above photos shows the two parts of the magnetic switch fitted to a door.
1234
1235
1236 (((
1237 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.
1238 )))
1239
1240
1241 (((
1242 The command is:
1243 )))
1244
1245 (((
1246 (% 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/]]).
1247 )))
1248
1249
1250 Below shows some screen captures in TTN:
1251
1252
1253 (((
1254 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:
1255 )))
1256
1257
1258 * When PB14 is high, the bit8 of this byte is 1.
1259 * When PB14 is low, the bit8 of this byte is 0.
1260
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 (((
1476 (% style="color:red" %)**Note: Always test the actually current pass by the JP2 jumper when connect to a new type of sensor.**
1477 )))
1478
1479
1480
1481 == 2.8  ​Battery Analysis ==
1482
1483
1484 === 2.8.1  ​Battery Type ===
1485
1486
1487 (((
1488 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.
1489 )))
1490
1491
1492 (((
1493 The battery is designed to last for several years depends on the actually use environment and update interval. 
1494 )))
1495
1496
1497 (((
1498 The battery related documents as below:
1499 )))
1500
1501 * [[Battery Dimension>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1502 * [[Lithium-Thionyl Chloride Battery datasheet>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1503 * [[Lithium-ion Battery-Capacitor datasheet>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1504
1505 (((
1506 [[image:image-20220708140453-6.png]]
1507 )))
1508
1509
1510
1511 === 2.8.2  Power consumption Analyze ===
1512
1513
1514 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.
1515
1516 (((
1517
1518 )))
1519
1520
1521 === 2.8.3  ​Battery Note ===
1522
1523
1524 (((
1525 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.
1526 )))
1527
1528
1529
1530 === 2.8.4  Replace the battery ===
1531
1532
1533 (((
1534 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.
1535 )))
1536
1537
1538 (((
1539 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).
1540 )))
1541
1542 (((
1543
1544 )))
1545
1546
1547
1548 = 3. ​ Access NB-IoT Module =
1549
1550
1551 (((
1552 Users can directly access the AT command set of the NB-IoT module.
1553
1554 (((
1555 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/]]
1556 )))
1557
1558
1559 )))
1560
1561 [[image:1657531951422-179.png]]
1562
1563
1564
1565 = 4.  Using the AT Commands =
1566
1567
1568 == 4.1  Access AT Commands ==
1569
1570
1571 See this link for detail: [[https:~~/~~/www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0>>https://www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0]]
1572
1573
1574 AT+<CMD>?  : Help on <CMD>
1575
1576 AT+<CMD>         : Run <CMD>
1577
1578 AT+<CMD>=<value> : Set the value
1579
1580 AT+<CMD>=?  : Get the value
1581
1582
1583 (% style="color:#037691" %)**General Commands**(%%)      
1584
1585 AT  : Attention       
1586
1587 AT?  : Short Help     
1588
1589 ATZ  : MCU Reset    
1590
1591 AT+TDC  : Application Data Transmission Interval
1592
1593 AT+CFG  : Print all configurations
1594
1595 AT+CFGMOD           : Working mode selection
1596
1597 AT+INTMOD            : Set the trigger interrupt mode
1598
1599 AT+5VT  : Set extend the time of 5V power  
1600
1601 AT+PRO  : Choose agreement
1602
1603 AT+WEIGRE  : Get weight or set weight to 0
1604
1605 AT+WEIGAP  : Get or Set the GapValue of weight
1606
1607 AT+RXDL  : Extend the sending and receiving time
1608
1609 AT+CNTFAC  : Get or set counting parameters
1610
1611 AT+SERVADDR  : Server Address
1612
1613
1614 (% style="color:#037691" %)**COAP Management**      
1615
1616 AT+URI            : Resource parameters
1617
1618
1619 (% style="color:#037691" %)**UDP Management**
1620
1621 AT+CFM          : Upload confirmation mode (only valid for UDP)
1622
1623
1624 (% style="color:#037691" %)**MQTT Management**
1625
1626 AT+CLIENT               : Get or Set MQTT client
1627
1628 AT+UNAME  : Get or Set MQTT Username
1629
1630 AT+PWD                  : Get or Set MQTT password
1631
1632 AT+PUBTOPIC  : Get or Set MQTT publish topic
1633
1634 AT+SUBTOPIC  : Get or Set MQTT subscription topic
1635
1636
1637 (% style="color:#037691" %)**Information** 
1638
1639 AT+LDATA  : Get the last upload data
1640
1641 AT+CDP  : Read or Clear cached data(% style="color:#037691" %)       
1642
1643 AT+FDR  : Factory Data Reset
1644
1645 AT+PWORD  : Serial Access Password
1646
1647
1648
1649 = 5.  Developer Guide =
1650
1651
1652 == 5.1  Get and compile Software ==
1653
1654
1655 NBSN95 is an open-source project, developer can compile their firmware for customized applications. User can get the source code from:
1656
1657 * Software Source Code: [[https:~~/~~/github.com/dragino/NBSN95>>url:https://github.com/dragino/NBSN95]]
1658 * 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/]]
1659 * Upgrade firmware instruction
1660
1661 (((
1662 See FAQ of this file.
1663 )))
1664
1665
1666 (((
1667 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**
1668 )))
1669
1670
1671
1672 == 5.2  Get hardware source ==
1673
1674
1675 NBSN95 are the compose of two PCB modules:
1676
1677 1. Mother board:  [[LoRa ST Sensor node mother board>>url:https://github.com/dragino/Lora/tree/master/LSN50/v2.0]].
1678 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]]
1679
1680
1681
1682
1683 = ​6.  FAQ =
1684
1685
1686 == 6.1 ​ How to Upgrade Firmware ==
1687
1688
1689 (((
1690 User can upgrade the firmware for 1) bug fix, 2) new feature release.
1691 )))
1692
1693 (((
1694 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]]
1695 )))
1696
1697 (((
1698 (% style="color:red" %)**Notice, NBSN95 and LSN50v2 share the same mother board. They use the same connection and method to update.**
1699 )))
1700
1701
1702
1703 = 7.  Trouble Shooting =
1704
1705
1706 == 7.1  ​Connection problem when uploading firmware ==
1707
1708
1709 (((
1710 **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]]
1711 )))
1712
1713 (% class="wikigeneratedid" %)
1714 (((
1715
1716 )))
1717
1718
1719 == 7.2  AT Command input doesn't work ==
1720
1721
1722 (((
1723 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.
1724
1725
1726 )))
1727
1728
1729 = 8. ​ Order Info =
1730
1731
1732 Part Number:
1733
1734 (% style="color:blue" %)**NBSN95-YY (Base on BC95-G)**
1735
1736 **or**
1737
1738 (% style="color:blue" %)**NBSN95A-YY(Base on BC35-G)**
1739
1740
1741 (% style="color:blue" %)**YY:**
1742
1743 * (% style="color:red" %)**12**(%%):  With M12 waterproof cable hole
1744 * (% style="color:red" %)**16**(%%):  With M16 waterproof cable hole
1745 * (% style="color:red" %)**NH**(%%): No Hole
1746
1747
1748
1749
1750 = 9.  Packing Info =
1751
1752 (((
1753
1754
1755 (% style="color:#037691" %)**Package Includes**:
1756
1757 * NBSN95 NB-IoT Soil Moisture & EC Sensor x 1
1758 * External antenna x 1
1759 )))
1760
1761 (((
1762
1763
1764 (% style="color:#037691" %)**Dimension and weight**:
1765
1766 * Device Size: 13.0 x 5 x 4.5 cm
1767 * Device Weight: 150g
1768 * Package Size / pcs : 14.0 x 8x 5 cm
1769 * Weight / pcs : 180g
1770 )))
1771
1772 (((
1773
1774
1775
1776
1777 )))
1778
1779 = 10.  Support =
1780
1781
1782 * 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.
1783 * 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]]
1784
1785
1786
Copyright ©2010-2022 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0