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 == 1.1 ​ What is NBSN95 NB-IoT Sensor Node ==
20
21
22 (((
23 (((
24 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.
25 )))
26
27 (((
28 (% 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.
29 )))
30
31 (((
32 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.
33 )))
34
35 (((
36 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.
37 )))
38 )))
39
40
41 [[image:1657509740279-435.png]]
42
43 (% style="display:none" %) (%%)
44
45 == 1.2 ​ Features ==
46
47
48 * STM32L072xxxx MCU
49 * NB-IoT Bands: B1/B3/B8/B5/B20/B28 @H-FDD
50 * Pre-load bootloader on USART1/USART2
51 * MDK-ARM Version 5.24a IDE
52 * I2C, LPUSART1, USB, SPI2
53 * 3x12bit ADC, 1x12bit DAC
54 * 20xDigital I/O
55 * Open-source hardware / software
56 * IP66 Waterproof Enclosure
57 * Ultra-Low Power consumption
58 * AT Commands to change parameters
59 * Micro SIM card slot for NB-IoT SIM
60 * 8500mAh Battery for long term use
61
62 (% style="display:none" %) (%%)
63
64 (% style="display:none" %) (%%)
65
66 == 1.3  Specification ==
67
68
69 (% style="color:#037691" %)**Micro Controller:**
70
71 * MCU: STM32L072xxxx
72 * Flash: 128KB
73 * RAM: 20KB
74 * EEPROM: 6KB
75 * Clock Speed: 32Mhz
76
77 (% style="color:#037691" %)**Common DC Characteristics:**
78
79 * Supply Voltage: 2.1v ~~ 3.6v
80 * Operating Temperature: -40 ~~ 85°C
81 * I/O pins: Refer to STM32L072 datasheet
82
83 (% style="color:#037691" %)**NB-IoT Spec:**
84
85 * B1 @H-FDD: 2100MHz
86 * B3 @H-FDD: 1800MHz
87 * B8 @H-FDD: 900MHz
88 * B5 @H-FDD: 850MHz
89 * B20 @H-FDD: 800MHz
90 * B28 @H-FDD: 700MHz
91
92 (% style="color:#037691" %)**Battery:**
93
94 * Li/SOCI2 un-chargeable battery
95 * Capacity: 8500mAh
96 * Self Discharge: <1% / Year @ 25°C
97 * Max continuously current: 130mA
98 * Max boost current: 2A, 1 second
99
100 (% style="color:#037691" %)**Power Consumption**
101
102 * STOP Mode: 10uA @ 3.3v
103 * Max transmit power: 350mA@3.3v
104
105 (% class="wikigeneratedid" id="H200B1.4A0Applications" %)
106
107
108
109 == 1.4  Applications ==
110
111
112 * Smart Buildings & Home Automation
113 * Logistics and Supply Chain Management
114 * Smart Metering
115 * Smart Agriculture
116 * Smart Cities
117 * Smart Factory
118
119 (% class="wikigeneratedid" id="H200B1.5FirmwareChangelog" %)
120 ​(% style="display:none" %)
121
122 (% style="display:none" %) (%%)
123
124 == 1.5  Pin Definitions & Switch ==
125
126
127 [[image:1657510398618-181.png]](% style="display:none" %)
128
129
130 (% border="1" cellspacing="0" style="width:520px" %)
131 |=(% style="width: 30px;background-color:#D9E2F3;color:#0070C0" %)**No.**|=(% style="width: 70px;background-color:#D9E2F3;color:#0070C0" %)**Signal**|=(% style="width: 60px;background-color:#D9E2F3;color:#0070C0" %)**Direction**|=(% style="width: 180px;background-color:#D9E2F3;color:#0070C0" %)**Function**|=(% style="width: 180px;background-color:#D9E2F3;color:#0070C0" %)Remark
132 |(% style="background-color:#f2f2f2; width:44px" %)1|(% style="background-color:#f2f2f2; width:86px" %)VCC(2.9V)|(% style="background-color:#f2f2f2; width:84px" %)OUTPUT|(% style="background-color:#f2f2f2; width:322px" %)VCC|(% style="background-color:#f2f2f2; width:296px" %)Directly connect to main power for board
133 |(% style="background-color:#f2f2f2; width:44px" %)2|(% style="background-color:#f2f2f2; width:86px" %)PA0|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)Used as ADC in NBSN95 image
134 |(% style="background-color:#f2f2f2; width:44px" %)3|(% style="background-color:#f2f2f2; width:86px" %)PA1|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
135 |(% style="background-color:#f2f2f2; width:44px" %)4|(% style="background-color:#f2f2f2; width:86px" %)PA2|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="background-color:#f2f2f2; width:296px" %)Used as UART_TXD in NBSN95 image
136 |(% style="background-color:#f2f2f2; width:44px" %)5|(% style="background-color:#f2f2f2; width:86px" %)PA3|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="background-color:#f2f2f2; width:296px" %)Used as UART_RXD in NBSN95 image
137 |(% style="background-color:#f2f2f2; width:44px" %)6|(% style="background-color:#f2f2f2; width:86px" %)PB6|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="background-color:#f2f2f2; width:296px" %)
138 |(% style="background-color:#f2f2f2; width:44px" %)7|(% style="background-color:#f2f2f2; width:86px" %)PB7|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="background-color:#f2f2f2; width:296px" %)
139 |(% style="background-color:#f2f2f2; width:44px" %)8|(% style="background-color:#f2f2f2; width:86px" %)PB3|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="background-color:#f2f2f2; width:296px" %)
140 |(% style="background-color:#f2f2f2; width:44px" %)9|(% style="background-color:#f2f2f2; width:86px" %)PB4|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
141 |(% style="background-color:#f2f2f2; width:44px" %)10|(% style="background-color:#f2f2f2; width:86px" %)PA9|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="background-color:#f2f2f2; width:296px" %)
142 |(% style="background-color:#f2f2f2; width:44px" %)11|(% style="background-color:#f2f2f2; width:86px" %)PA10|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip, 10k pull up to VCC|(% style="background-color:#f2f2f2; width:296px" %)
143 |(% style="background-color:#f2f2f2; width:44px" %)12|(% style="background-color:#f2f2f2; width:86px" %)GND|(% style="background-color:#f2f2f2; width:84px" %) |(% style="background-color:#f2f2f2; width:322px" %)Ground|(% style="background-color:#f2f2f2; width:296px" %)
144 |(% style="background-color:#f2f2f2; width:44px" %)13|(% style="background-color:#f2f2f2; width:86px" %)VCC(2.9V)|(% style="background-color:#f2f2f2; width:84px" %)OUTPUT|(% style="background-color:#f2f2f2; width:322px" %)VCC|(% style="background-color:#f2f2f2; width:296px" %)Directly connect to main power for board
145 |(% style="background-color:#f2f2f2; width:44px" %)14|(% style="background-color:#f2f2f2; width:86px" %)Jumper|(% style="background-color:#f2f2f2; width:84px" %) |(% style="background-color:#f2f2f2; width:322px" %)Power on/off jumper|(% style="background-color:#f2f2f2; width:296px" %)
146 |(% style="background-color:#f2f2f2; width:44px" %)15|(% style="background-color:#f2f2f2; width:86px" %)PA4|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
147 |(% style="background-color:#f2f2f2; width:44px" %)16|(% style="background-color:#f2f2f2; width:86px" %)NRST|(% style="background-color:#f2f2f2; width:84px" %)In|(% style="background-color:#f2f2f2; width:322px" %)Reset MCU|(% style="background-color:#f2f2f2; width:296px" %)
148 |(% style="background-color:#f2f2f2; width:44px" %)17|(% style="background-color:#f2f2f2; width:86px" %)PA12|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
149 |(% style="background-color:#f2f2f2; width:44px" %)18|(% style="background-color:#f2f2f2; width:86px" %)PA11|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
150 |(% style="background-color:#f2f2f2; width:44px" %)19|(% style="background-color:#f2f2f2; width:86px" %)PA14|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
151 |(% style="background-color:#f2f2f2; width:44px" %)20|(% style="background-color:#f2f2f2; width:86px" %)PB13|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
152 |(% style="background-color:#f2f2f2; width:44px" %)21|(% style="background-color:#f2f2f2; width:86px" %)PB12|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
153 |(% style="background-color:#f2f2f2; width:44px" %)22|(% style="background-color:#f2f2f2; width:86px" %)PB15|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
154 |(% style="background-color:#f2f2f2; width:44px" %)23|(% style="background-color:#f2f2f2; width:86px" %)PB14|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
155 |(% style="background-color:#f2f2f2; width:44px" %)24|(% style="background-color:#f2f2f2; width:86px" %)PA13|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)
156 |(% style="background-color:#f2f2f2; width:44px" %)25|(% style="background-color:#f2f2f2; width:86px" %)PA8|(% style="background-color:#f2f2f2; width:84px" %)In/Out|(% style="background-color:#f2f2f2; width:322px" %)Directly from STM32 chip|(% style="background-color:#f2f2f2; width:296px" %)Default use to turn on/off LED1 in NBSN95 image
157 |(% style="background-color:#f2f2f2; width:44px" %)26|(% style="background-color:#f2f2f2; width:86px" %)GND|(% style="background-color:#f2f2f2; width:84px" %) |(% style="background-color:#f2f2f2; width:322px" %)Ground|(% style="background-color:#f2f2f2; width:296px" %)
158 |(% style="background-color:#f2f2f2; width:44px" %)27|(% style="background-color:#f2f2f2; width:86px" %)+5V|(% style="background-color:#f2f2f2; width:84px" %)Out|(% style="background-color:#f2f2f2; width:322px" %)5v output power|(% style="background-color:#f2f2f2; width:296px" %)Controlled by PB5(Low to Enable, High to Disable)
159 |(% style="background-color:#f2f2f2; width:44px" %)28|(% style="background-color:#f2f2f2; width:86px" %)LED1|(% style="background-color:#f2f2f2; width:84px" %) |(% style="background-color:#f2f2f2; width:322px" %)Controlled by PA8|(% style="background-color:#f2f2f2; width:296px" %)Blink on transmit
160 |(% style="background-color:#f2f2f2; width:44px" %)29|(% style="background-color:#f2f2f2; width:86px" %)BOOT MODE|(% style="background-color:#f2f2f2; width:84px" %) |(% style="background-color:#f2f2f2; width:322px" %)Configure device in working mode or ISP program mode|(% style="background-color:#f2f2f2; width:296px" %)(((
161 (((
162 Flash: Normal Working mode and send AT Commands
163 )))
164
165 (((
166 ISP: UART Program Mode
167 )))
168 )))
169 |(% style="background-color:#f2f2f2; width:44px" %)30|(% style="background-color:#f2f2f2; width:86px" %)NRST|(% style="background-color:#f2f2f2; width:84px" %)In|(% style="background-color:#f2f2f2; width:322px" %)Reset MCU|(% style="background-color:#f2f2f2; width:296px" %)
170
171 (% style="display:none" %)
172
173
174
175 === 1.5.1 Jumper JP2 ===
176
177
178 Power on Device when put this jumper.
179
180
181 === 1.5.2 BOOT MODE / SW1 ===
182
183
184 (((
185 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.
186 )))
187
188 (((
189 2) Flash: work mode, device starts to work and send out console output for further debug
190 )))
191
192
193 === 1.5.3 Reset Button ===
194
195
196 Press to reboot the device.
197
198
199 === 1.5.4 LED ===
200
201
202 It will flash:
203
204 1.  When boot the device in flash mode
205
206 2.  Send an uplink packet
207
208
209 == 1.6 Hole Option ==
210
211
212 The NBSN95 provides different hole size options for different size sensor cable. The options provided are M12, M16. The definition is as below:
213
214
215 [[image:image-20220711135811-1.png]]
216
217
218 [[image:1657519103007-447.png]]
219
220
221 = 2.  Use NBSN95 to communicate with IoT Server =
222
223 == 2.1  How it works ==
224
225
226 (((
227 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.
228 )))
229
230
231 (((
232 The diagram below shows the working flow in default firmware of NBSN95:
233 )))
234
235 [[image:image-20220711135919-2.png]]
236
237
238 == 2.2 ​ Configure the NBSN95 ==
239
240 === 2.2.1  Power On NBSN95 ===
241
242
243 [[image:1657519498925-521.png]]
244
245
246 === 2.2.2  Test Requirement ===
247
248
249 (((
250 To use NBSN95 in your city, make sure meet below requirements:
251 )))
252
253 * Your local operator has already distributed a NB-IoT Network there.
254 * The local NB-IoT network used the band that NBSN95 supports.
255 * Your operator is able to distribute the data received in their NB-IoT network to your IoT server.
256
257 (((
258 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
259 )))
260
261
262 [[image:1657519549982-889.png]]
263
264
265 === 2.2.3  Insert SIM card ===
266
267
268 (((
269 Insert the NB-IoT Card get from your provider.
270 )))
271
272 (((
273 User need to take out the NB-IoT module and insert the SIM card like below:
274 )))
275
276
277 [[image:1657249468462-536.png]]
278
279
280 === 2.2.4  Connect USB – TTL to NBSN95 to configure it ===
281
282
283 (((
284 (((
285 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.
286 )))
287 )))
288
289 [[image:1657520237594-636.png]]
290
291
292 In the PC, use below serial tool settings:
293
294 * Baud:  (% style="color:green" %)**9600**
295 * Data bits:** (% style="color:green" %)8(%%)**
296 * Stop bits: (% style="color:green" %)**1**
297 * Parity:  (% style="color:green" %)**None**
298 * Flow Control: (% style="color:green" %)**None**
299
300 (((
301
302
303
304 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.
305
306
307 )))
308
309 [[image:1657520459085-315.png]]
310
311
312 (((
313 (% 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]]**
314 )))
315
316
317 === 2.2.5  Use CoAP protocol to uplink data ===
318
319
320 (% 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/]]**
321
322
323 **Use below commands:**
324
325 * (% style="color:blue" %)**AT+PRO=1**  (%%) ~/~/ Set to use CoAP protocol to uplink
326 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5683   ** (%%)~/~/ to set CoAP server address and port
327 * (% style="color:blue" %)**AT+URI=5,11,"mqtt",11,"coap",12,"0",15,"c=text1",23,"0" ** (%%) ~/~/Set COAP resource path
328
329 For parameter description, please refer to AT command set
330
331
332 [[image:1657249793983-486.png]]
333
334
335 (((
336 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.
337 )))
338
339 [[image:1657522754681-536.png]]
340
341
342 === 2.2.6  Use UDP protocol to uplink data(Default protocol) ===
343
344
345 This feature is supported since firmware version v1.0.1
346
347
348 * (% style="color:blue" %)**AT+PRO=2   ** (%%) ~/~/ Set to use UDP protocol to uplink
349 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5601   ** (%%) ~/~/  to set UDP server address and port
350 * (% style="color:blue" %)**AT+CFM=1       ** (%%) ~/~/ If the server does not respond, this command is unnecessary
351
352 [[image:1657522829933-263.png]]
353
354
355 [[image:image-20220913164447-1.png]]
356
357
358 === 2.2.7  Use MQTT protocol to uplink data ===
359
360
361 (((
362 This feature is supported since firmware version v110, it supports only plain MQTT now it doesn't support TLS and other related encryption.
363 )))
364
365
366 * (% style="color:blue" %)**AT+PRO=3   ** (%%) ~/~/ Set to use MQTT protocol to uplink
367 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,1883   ** (%%) ~/~/ Set MQTT server address and port
368 * (% style="color:blue" %)**AT+CLIENT=CLIENT       ** (%%)~/~/ Set up the CLIENT of MQTT
369 * (% style="color:blue" %)**AT+UNAME=UNAME                               **(%%)~/~/ Set the username of MQTT
370 * (% style="color:blue" %)**AT+PWD=PWD                                        **(%%)~/~/ Set the password of MQTT
371 * (% style="color:blue" %)**AT+PUBTOPIC=T1_PUB                           **(%%)~/~/ Set the sending topic of MQTT
372 * (% style="color:blue" %)**AT+SUBTOPIC=T1_SUB          **(%%) ~/~/ Set the subscription topic of MQTT
373
374 [[image:1657522979257-629.png]]
375
376
377 [[image:1657522993615-517.png]]
378
379
380 (((
381 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.
382 )))
383
384 (((
385 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.
386 )))
387
388
389 === 2.2.8  Use TCP protocol to uplink data ===
390
391
392 This feature is supported since firmware version v110
393
394
395 * (% style="color:blue" %)**AT+PRO=4   ** (%%) ~/~/ Set to use TCP protocol to uplink
396 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5600   **(%%) ~/~/  to set TCP server address and port
397
398 [[image:1657523736162-303.png]]
399
400
401 [[image:1657523748549-241.png]]
402
403
404 === 2.2.9  Change Update Interval ===
405
406
407 User can use below command to change the (% style="color:green" %)**uplink interval**.
408
409 * (% style="color:blue" %)**AT+TDC=600      ** (%%)~/~/ Set Update Interval to 600s
410
411
412 == 2.3  Working Mode & Uplink Payload ==
413
414
415 (((
416 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.
417 )))
418
419
420 (((
421 For example:
422 )))
423
424 (((
425 (% 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"]].
426 )))
427
428
429 (((
430 The uplink payloads are composed in ASCII String. For example:
431 )))
432
433 (((
434 0a cd 00 ed 0a cc 00 00 ef 02 d2 1d (total 24 ASCII Chars). Representative the actually payload:
435 )))
436
437 (((
438 0x 0a cd 00 ed 0a cc 00 00 ef 02 d2 1d Total 12 bytes
439 )))
440
441
442 (((
443 (% style="color:red" %)**NOTE:**
444 )))
445
446 (((
447 (% style="color:red" %)**1. All modes share the same Payload Explanation from [[HERE>>||anchor="H2.4A0PayloadExplanationandSensorInterface"]].
448 2. By default, the device will send an uplink message every 1 hour.**
449 )))
450
451
452 === 2.3.1 CFGMOD~=1 (Default Mode) ===
453
454
455 (((
456 In this mode, the uplink payload usually contains 27 bytes. ((% style="color:red" %)Note: Time stamp field are added since firmware version v120(%%))
457 )))
458
459
460 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
461 |=(% style="width: 55px;" %)(((
462 **Size(bytes)**
463 )))|=(% style="width: 35px;" %)8|=(% 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**
464 |(% 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" %)(((
465 (((
466 MOD
467 )))
468
469 (((
470 0x01
471 )))
472 )))|(% style="width:60px" %)(((
473 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
474 )))|(% 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" %)(((
475 (((
476 [[Temperature>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
477 )))
478
479 (((
480 by
481 )))
482
483 (((
484 SHT20/SHT31
485 )))
486 )))|(% style="width:112px" %)(((
487 (((
488 [[Humidity>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
489 )))
490
491 (((
492 by
493 )))
494
495 (((
496 SHT20/SHT31
497 )))
498 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
499
500 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
501
502 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:512px" %)
503 |(% 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)**
504
505 (% style="color:red" %)**NOTE:**
506
507 (% style="color:red" %)**1. Only up to 10 sets of latest data will be cached.**
508
509 (% style="color:red" %)**2. Theoretically, the maximum upload bytes are 215.**
510
511
512 (((
513 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
514 )))
515
516 [[image:1657526816370-997.png]]
517
518
519 (((
520 The payload is ASCII string, representative same HEX: (% style="background-color:yellow" %)**0x f868411056754138 0078 0c54 19 01 0000 00 0042 00fc 0232 60da7c4e**
521
522 **where:**
523 )))
524
525 * (% style="color:#037691" %)**Device ID:**(%%) 0xf868411056754138 = 868411056754138
526
527 * (% style="color:#037691" %)**Version:**(%%)  0x0078=120=1.2.0
528
529 * (% style="color:#037691" %)**BAT:**(%%)  0x0c54 = 3156 mV = 3.156V
530
531 * (% style="color:#037691" %)**Singal:**(%%)  0x19 = 25
532
533 * (% style="color:#037691" %)**Model:** (%%)0x01 = 1
534
535 * (% style="color:#037691" %)**Temperature by DS18b20:**(%%) 0x0000 = 0
536
537 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
538
539 * (% style="color:#037691" %)**ADC:**(%%) 0x0042 = 66 = 66mv
540
541 * (% style="color:#037691" %)**Temperature by SHT20/SHT31:**(%%) 0x00fc = 252 = 25.2 °C
542
543 * (% style="color:#037691" %)**Humidity by SHT20/SHT31:**(%%) 0x0232 = 562 = 56.2 %rh
544
545 * (% style="color:#037691" %)**Timestamp:**(%%) 0x60da7c4e = 1,624,931,406 = 2021-06-29 09:50:06
546
547
548 === 2.3.2 CFGMOD~=2 (Distance Mode) ===
549
550
551 (((
552 This mode is target to measure the distance. Total 25 bytes, ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%))
553
554
555 )))
556
557 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
558 |=(% style="width: 55px;" %)(((
559 **Size(bytes)**
560 )))|=(% style="width: 35px;" %)8|=(% 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**
561 |(% 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" %)(((
562 (((
563 MOD
564 )))
565
566 (((
567 0x02
568 )))
569 )))|(% style="width:60px" %)(((
570 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
571 )))|(% 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" %)(((
572 (((
573 (((
574 [[Distance measure>>||anchor="H2.4.11A0UltrasonicSensor"]] by:
575 )))
576
577 (((
578 1) [[LIDAR-Lite V3HP>>||anchor="HConnectionofLIDAR-LiteV3HP:"]]
579 )))
580
581 (((
582 Or
583 )))
584
585 (((
586 2) [[Ultrasonic Sensor>>||anchor="H2.4.11A0UltrasonicSensor"]]
587 )))
588 )))
589 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
590
591 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
592
593 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:512px" %)
594 |(% 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)**
595
596 (((
597 (% style="color:red" %)**NOTE:**
598 )))
599
600 (((
601 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
602 )))
603
604 (((
605 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 193.**
606 )))
607
608
609 (((
610 (((
611 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
612 )))
613 )))
614
615
616 [[image:1657527383721-325.png]]
617
618
619 So the payload is (% style="background-color:yellow" %)**0xf868411056754138 0078 0ca9 11 02 010b 00 0ca8 0158 60dacc87 **
620
621 **where:**
622
623 * (% style="color:#037691" %)**Device ID:**(%%) 0xf868411056754138 = 868411056754138
624
625 * (% style="color:#037691" %)**Version:**(%%)  0x0078=120=1.2.0
626
627 * (% style="color:#037691" %)**BAT:**(%%)  0x0ca9 = 3241mV = 3.241 V
628
629 * (% style="color:#037691" %)**Singal:**(%%)  0x11 = 17
630
631 * (% style="color:#037691" %)**Model:** (%%)0x02 = 2
632
633 * (% style="color:#037691" %)**Temperature by DS18b20:**(%%) 0x010b= 267 = 26.7  °C
634
635 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
636
637 * (% style="color:#037691" %)**ADC:**(%%) 0x0ca8 = 3240 mv
638
639 * (% style="color:#037691" %)**Distance by LIDAR-Lite V3HP/Ultrasonic Sensor:**(%%) 0x0158 = 344 cm
640
641 * (% style="color:#037691" %)**Timestamp:** (%%)0x60dacc87 = 1,624,951,943 = 2021-06-29 15:32:23
642
643
644 ==== (% style="color:blue" %)**Connection of LIDAR-Lite V3HP:**(%%) ====
645
646
647 [[image:1657527422661-877.png]]
648
649
650 (% style="color:blue" %)**Connection to Ultrasonic Sensor:**
651
652 [[image:1657527441108-781.png]]
653
654
655 === 2.3.3 CFGMOD~=3 (3 ADC + I2C) ===
656
657
658 (((
659 This mode has total 29 bytes. Include 3 x ADC + 1x I2C, ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%))
660 )))
661
662 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
663 |=(% style="width: 55px;" %)(((
664 **Size(bytes)**
665 )))|=(% style="width: 35px;" %)8|=(% 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**
666 |(% 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" %)(((
667 (((
668 MOD
669 )))
670
671 (((
672 0x03
673 )))
674 )))|(% style="width:60px" %)(((
675 [[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]1
676 )))|(% 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" %)(((
677 (((
678 [[Temperature>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
679 )))
680
681 (((
682 by
683 )))
684
685 (((
686 SHT20/SHT31
687 )))
688 )))|(% style="width:112px" %)(((
689 (((
690 [[Humidity>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
691 )))
692
693 (((
694 by
695 )))
696
697 (((
698 SHT20/SHT31
699 )))
700 )))|(% style="width:112px" %)[[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]3|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
701
702 ADC1 uses pin PA0 to measure
703
704 ADC2 uses pin PA1 to measure
705
706 ADC3 uses pin PA4 to measure
707
708
709 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
710
711
712 (% border="1" style="background-color:#ffffcc; color:green; width:510px" %)
713 |(% 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)**
714
715 (% style="color:red" %)**NOTE:**
716
717 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
718
719 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 226.**
720
721
722 (((
723 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
724 )))
725
726 [[image:1657527751330-433.png]]
727
728
729 So the payload is (% style="background-color:yellow" %)**0x f868411056754138 78 0cf0 12 03 0cbc 00 0cef 010a 024b 0cef 60dbc494**
730
731 **where:**
732
733 * (% style="color:#037691" %)**Device ID:**(%%) 0xf868411056754138 = 868411056754138
734
735 * (% style="color:#037691" %)**Version:**(%%)  0x78=120=1.2.0
736
737 * (% style="color:#037691" %)**BAT:**(%%)  0x0cf0 = 3312 mV = 3.312 V
738
739 * (% style="color:#037691" %)**Singal:**(%%)  0x12 = 18
740
741 * (% style="color:#037691" %)**Model:**(%%) 0x03 = 3
742
743 * (% style="color:#037691" %)**ADC1:**  (%%)0x0cbc= 3260mV
744
745 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
746
747 * (% style="color:#037691" %)**ADC2:**(%%) 0x0cef =3311 mv
748
749 * (% style="color:#037691" %)**Temperature by SHT20/SHT31:**(%%) 0x010a = 266 = 26.6 °C
750
751 * (% style="color:#037691" %)**Humidity by SHT20/SHT31:**(%%) 0x024b =587 = 58.7 %rh
752
753 * (% style="color:#037691" %)**ADC3:**(%%) 0x0cef = 3311 mv
754
755 * (% style="color:#037691" %)**Timestamp:** (%%)0x60dbc494 = 1,625,015,444= 2021-06-30 09:10:44
756
757
758 === 2.3.4 CFGMOD~=4 (3 x DS18B20) ===
759
760
761 (((
762 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**(%%))
763
764
765 )))
766
767 [[image:1657527815194-570.png]]
768
769
770 This mode has total 27 bytes. ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%)) As shown below:
771
772 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
773 |=(% style="width: 55px;" %)(((
774 **Size(bytes)**
775 )))|=(% style="width: 35px;" %)8|=(% 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**
776 |(% 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" %)(((
777 (((
778 MOD
779 )))
780
781 (((
782 0x04
783 )))
784 )))|(% style="width:60px" %)(((
785 [[Temperature1 (DS18B20) (PB3)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
786 )))|(% 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" %)(((
787 (((
788 [[Temperature2 (DS18B20) (PA9)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
789 )))
790 )))|(% style="width:112px" %)(((
791 (((
792 [[Temperature3 (DS18B20) (PA10)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
793 )))
794 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
795
796 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
797
798
799 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:538px" %)
800 |(% 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)**
801
802 (% style="color:red" %)**NOTE:**
803
804 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
805
806 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes is 215.**
807
808
809 (((
810 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
811 )))
812
813 (((
814
815 )))
816
817 [[image:1657528339054-727.png]]
818
819
820 So the payload is (% style="background-color:yellow" %)**0x f868411056754138 0078 0cdf 15 04 010a 0cde 00 00fb 0100 60dbcb3f  **
821
822 **where:**
823
824 * (% style="color:#037691" %)**Device ID:**(%%) 0xf868411056754138 = 868411056754138
825
826 * (% style="color:#037691" %)**Version:** (%%)0x0078=120=1.2.0
827
828 * (% style="color:#037691" %)**BAT:**      (%%)0x0cdf = 3295 mV = 3.295 V
829
830 * (% style="color:#037691" %)**Singal:**(%%)  0x15 = 21
831
832 * (% style="color:#037691" %)**Model:**(%%) 0x04 = 4
833
834 * (% style="color:#037691" %)**Temperature1 by DS18b20:**(%%) 0x010a = 226 = 22.6 °C
835
836 * (% style="color:#037691" %)**ADC:** (%%)0x0cde = 3294 mv
837
838 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
839
840 * (% style="color:#037691" %)**Temperature2 by DS18b20:** (%%)0x00fb = 251 = 25.1°C
841
842 * (% style="color:#037691" %)**Temperature3 by DS18b20:**(%%) 0x0100  = 256 = 25.6 °C
843
844 * (% style="color:#037691" %)**Timestamp:**(%%)** **0x60dbcb3f = 1,625,017,151= 2021-06-30 09:39:11
845
846
847 === 2.3.5 CFGMOD~=5 (Weight Measurement by HX711) ===
848
849
850 [[image:1657528388617-253.png]]
851
852
853 (% style="color:red" %)**Notes about hardware connection:**
854
855 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.
856 1. HX711 support 5v VCC, but while connect the NBSN95's +5V to HX711 VCC, the value from HX711 is not stable.
857 1. Connect NBSN95 +5V to HX711 VCC via a LDO module is stable.
858
859 (% style="color:red" %)**Each HX711 need to be calibrated before used. User need to do below two steps:**
860
861 1. Zero calibration. Don't put anything on load cell and run (% style="color:blue" %)**AT+WEIGRE**(%%) to calibrate to Zero gram.
862 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.
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 25 bytes. ((% style="color:red" %)**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;" %)8|=(% 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 (% style="color:red" %)**NOTE:**
902
903 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
904
905 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 193.**
906
907
908 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
909
910
911 [[image:1657528559833-164.png]]
912
913
914 So the payload is (% style="background-color:yellow" %)**0x f868411056754138 0078 0c94 14 05 0137 0c93 00 003a 60dbe59e**
915
916 **where:**
917
918 * (% style="color:#037691" %)**Device ID:** (%%)0xf868411056754138 = 868411056754138
919
920 * (% style="color:#037691" %)**Version:**(%%)  0x0078=120=1.2.0
921
922 * (% style="color:#037691" %)**BAT:**(%%)**      **0x0c94 = 3220 mV = 3.220 V
923
924 * (% style="color:#037691" %)**Singal:**  (%%)0x14 = 20
925
926 * (% style="color:#037691" %)**Model:** (%%)0x05 = 5
927
928 * (% style="color:#037691" %)**Temperature by DS18b20:**(%%) 0x0137 = 311 = 31.1 °C
929
930 * (% style="color:#037691" %)**ADC:** (%%)0x0c93 = 3219 mv
931
932 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
933
934 * (% style="color:#037691" %)**Weigt by HX711:** (%%)0x003a  = 58 g
935
936 * (% style="color:#037691" %)**Timestamp:**(%%) 0x60dbe59e = 1,625,023,902= 2021-06-30 11:31:42
937
938
939 === 2.3.6 CFGMOD~=6 (Counting mode) ===
940
941
942 (((
943 In this mode, uplink payload includes in total 22 bytes, ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%))
944 )))
945
946 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:400px" %)
947 |=(% style="width: 55px;" %)(((
948 **Size(bytes)**
949 )))|=(% style="width: 45px;" %)8|=(% style="width: 30px;" %)2|=(% style="width: 30px;" %)**2**|=(% style="width: 70px;" %)**1**|=(% style="width: 50px;" %)**1**|=(% style="width: 60px;" %)4|=(% style="width: 50px;" %)**4**
950 |(% 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" %)(((
951 (((
952 MOD 0x06
953 )))
954 )))|(% style="width:60px" %)Pulse count|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
955
956 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
957
958
959 (% border="1" style="background-color:#ffffcc; color:green; width:518px" %)
960 |(% 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)**
961
962 (% style="color:red" %)**NOTE:**
963
964 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
965
966 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 160.**
967
968
969 (((
970 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
971 )))
972
973
974 [[image:1657528693361-320.png]]
975
976 (((
977
978
979 The payload is ASCII string, representative same HEX: (% style="background-color:yellow" %)**0x f868411056754138 0078 0cc7 14 06 00000002 60dc03e5**
980
981 **~ where:**
982 )))
983
984 * (% style="color:#037691" %)**Device ID:** (%%)0xf868411056754138 = 868411056754138
985
986 * (% style="color:#037691" %)**Version:** (%%)0x0078=120=1.2.0
987
988 * (% style="color:#037691" %)**BAT:**(%%)  0x0cc7 =3271mV =3.271V
989
990 * (% style="color:#037691" %)**Singal:**(%%)  0x14 = 20
991
992 * (% style="color:#037691" %)**Model:**(%%) 0x06 = 6
993
994 * (% style="color:#037691" %)**Pulse count:**(%%)  0x00000002= 2
995
996 * (% style="color:#037691" %)**Timestamp:**(%%)  0x60dc03e5 = 1,625,031,653= 2021-06-30 13:40:53
997
998
999 == 2.4  Payload Explanation and Sensor Interface ==
1000
1001 === 2.4.1  Device ID ===
1002
1003
1004 (((
1005 By default, the Device ID equal to the last 15 bits of IMEI.
1006
1007 User can use (% style="color:blue" %)**AT+DEUI** (%%)to set Device ID
1008
1009
1010 **Example**:
1011
1012 AT+DEUI=868411056754138
1013
1014 The Device ID is stored in a none-erase area, Upgrade the firmware or run AT+FDR won't erase Device ID.
1015 )))
1016
1017
1018 === 2.4.2  Version Info ===
1019
1020
1021 (((
1022 (((
1023 These bytes include the hardware and software version.
1024 )))
1025
1026 (((
1027 **Higher byte:**  Specify hardware version: always 0x01 for NBSN95
1028 )))
1029
1030 (((
1031 **Lower byte:**  Specify the software version: 0x6E=110, means firmware version 110
1032 )))
1033
1034 (((
1035 **For example:  **0x01 6E: this device is NBSN95 with firmware version 110.
1036 )))
1037 )))
1038
1039
1040 === 2.4.3  Battery Info ===
1041
1042
1043 (((
1044 Ex1: 0x0B45 = 2885mV
1045 )))
1046
1047 (((
1048 Ex2: 0x0B49 = 2889mV
1049 )))
1050
1051
1052 === 2.4.4  Signal Strength ===
1053
1054
1055 (((
1056 NB-IoT Network signal Strength.
1057 )))
1058
1059 (((
1060
1061
1062 **Ex1: 0x1d = 29**
1063 )))
1064
1065 (((
1066 (% style="color:blue" %)**0**(%%)  -113dBm or less
1067 )))
1068
1069 (((
1070 (% style="color:blue" %)**1**(%%)  -111dBm
1071 )))
1072
1073 (((
1074 (% style="color:blue" %)**2...30**(%%) -109dBm... -53dBm
1075 )))
1076
1077 (((
1078 (% style="color:blue" %)**31**  (%%) -51dBm or greater
1079 )))
1080
1081 (((
1082 (% style="color:blue" %)**99**   (%%) Not known or not detectable
1083 )))
1084
1085
1086 === 2.4.5  Temperature (DS18B20) ===
1087
1088
1089 If there is a DS18B20 connected to PB3 pin. The temperature will be uploaded in the payload.
1090
1091 (((
1092 More DS18B20 can check the [[3 DS18B20 mode>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
1093 )))
1094
1095
1096 (((
1097 (% style="color:blue" %)**Connection for one DS18B20**
1098 )))
1099
1100 [[image:image-20220711164131-3.jpeg]]
1101
1102
1103 **Example**:
1104
1105 If payload is:  0x0105:  (0105 & FC00 == 0), temp = 0x0105 /10 = 26.1 degree
1106
1107 If payload is:  0xFF3F:  (FF3F & FC00 == 1) , temp = (0xFF3F - 65536)/10 = -19.3 degree.
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
1117 * When PA12 is low, the bit2 of this byte is 0.
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
1148 2.  Screw liquid level sensor's two pins to PA0 and PB4.
1149
1150
1151
1152 The equipment circuit is as below:
1153
1154
1155 [[image:image-20220711164942-13.png]]
1156
1157
1158
1159 According to above diagram:
1160
1161 ([[image:image-20220711164435-6.png]]
1162
1163 So
1164
1165 [[image:image-20220711164435-7.png]]
1166
1167 [[image:image-20220711164435-8.png]] is the reading of ADC. So if ADC=0x05DC=0.9 v and VCC (BAT) is 2.9v
1168
1169
1170 The [[image:image-20220711164435-9.png]] 4.5K ohm
1171
1172 Since the buoy is linear resistance from 10 ~~ 70cm.
1173
1174
1175 The position of buoy is [[image:image-20220711164435-10.png]] , from the bottom of buoy.
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
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 * When PB14 is high, the bit8 of this byte is 1.
1259
1260 * When PB14 is low, the bit8 of this byte is 0.
1261
1262
1263 === 2.4.9  I2C Interface (SHT20) ===
1264
1265
1266 (((
1267 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.
1268 )))
1269
1270 (((
1271 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).**
1272 )))
1273
1274
1275 (((
1276 Hardware connection for SHT20 is as below: 
1277 )))
1278
1279
1280 [[image:image-20220711170438-16.jpeg]]
1281
1282
1283 The device will be able to get the I2C sensor data now and upload to IoT Server.
1284
1285
1286 [[image:image-20220711170438-17.png]]
1287
1288
1289 Convert the read byte to decimal and divide it by ten.
1290
1291
1292 (% style="color:blue" %)**Example:**
1293
1294 Temperature:  Read:00ec (H) = 236(D)  Value:  236 /10=23.6℃
1295
1296 Humidity:    Read:0295(H)=661(D)    Value:  661 / 10=66.1, So 66.1%
1297
1298
1299 If you want to use other I2C device, please refer the SHT20 part source code as reference.
1300
1301
1302 === 2.4.10  Distance Reading ===
1303
1304
1305 Refer [[Ultrasonic Sensor section>>||anchor="H2.4.11A0UltrasonicSensor"]].
1306
1307
1308 === 2.4.11  Ultrasonic Sensor ===
1309
1310
1311 (((
1312 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]]
1313 )))
1314
1315
1316 (((
1317 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.
1318 )))
1319
1320 The picture below shows the connection:
1321
1322
1323 [[image:image-20220711171223-18.jpeg]]
1324
1325
1326
1327 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).
1328
1329
1330 **Example:**
1331
1332 Distance:  Read:0155(Hex) = 3410(D)  Value:  3410 mm=341.0 cm
1333
1334 [[image:image-20220711171223-19.png]]
1335
1336
1337 You can see the serial output in ULT mode as below:
1338
1339
1340 [[image:image-20220711171223-20.png]]
1341
1342
1343 === 2.4.12  ​+5V Output ===
1344
1345
1346 (((
1347 NBSN95 will enable +5V output before all sampling and disable the +5v after all sampling. 
1348 )))
1349
1350
1351 (((
1352 The 5V output time can be controlled by AT Command.
1353 )))
1354
1355 (((
1356 (% style="color:blue" %)**AT+5VT=1000**
1357 )))
1358
1359 (((
1360 Means set 5V valid time to have 1000ms. So the real 5V output will actually have 1000ms + sampling time for other sensors.
1361 )))
1362
1363
1364 === 2.4.13  Weigh Sensor HX711 ===
1365
1366
1367 NBSN95 supports Weigh Sensor HX711. See [[this link>>||anchor="H2.3.5CFGMOD3D528WeightMeasurementbyHX71129"]] for instruction.
1368
1369
1370 === 2.4.14  Timestamp ===
1371
1372
1373 From the v1.2.0 version, the timestamp will be added after each upload link.
1374
1375
1376 The time of the timestamp is based on the time in time zone 0.
1377
1378 Such as: 0x60da837e = 1624933246 = 2021-06-29 2:20:46+32(Beijing time)
1379
1380
1381 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
1382
1383 Below is the converter example
1384
1385
1386 [[image:image-20220711171448-21.png]]
1387
1388
1389 == 2.5  Downlink Payload ==
1390
1391
1392 By default, NBSN95 prints the downlink payload to console port.
1393
1394 [[image:image-20220708133731-5.png]]
1395
1396
1397 (((
1398 (% style="color:blue" %)**Examples:**
1399 )))
1400
1401 (((
1402
1403 )))
1404
1405 * (((
1406 (% style="color:blue" %)**Set TDC**
1407 )))
1408
1409 (((
1410 If the payload=0100003C, it means set the END Node's TDC to 0x00003C=60(S), while type code is 01.
1411 )))
1412
1413 (((
1414 Payload:    01 00 00 1E    TDC=30S
1415 )))
1416
1417 (((
1418 Payload:    01 00 00 3C    TDC=60S
1419 )))
1420
1421 (((
1422
1423 )))
1424
1425 * (((
1426 (% style="color:blue" %)**Reset**
1427 )))
1428
1429 (((
1430 If payload = 0x04FF, it will reset the NBSN95
1431 )))
1432
1433
1434 * (% style="color:blue" %)**INTMOD**
1435
1436 (((
1437 Downlink Payload: 06000003, Set AT+INTMOD=3
1438 )))
1439
1440
1441 == 2.6  ​Firmware Change Log ==
1442
1443
1444 Download URL & Firmware Change log:  [[https:~~/~~/www.dropbox.com/sh/heyfnuod8qwwcm0/AACjmliw8Aeb9tYc74YoE9Qra?dl=0>>https://www.dropbox.com/sh/heyfnuod8qwwcm0/AACjmliw8Aeb9tYc74YoE9Qra?dl=0]]
1445
1446 (((
1447 Upgrade Instruction: [[Upgrade Firmware>>||anchor="H6.1200BHowtoUpgradeFirmware"]]
1448 )))
1449
1450
1451 == 2.7  Use VDD or +5V to Power External Sensor ==
1452
1453
1454 User can use VDD or +5V to power external sensor.
1455
1456
1457 (% style="color:red" %)**Note:**
1458
1459 ~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.
1460
1461 2. +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"]].
1462
1463 (((
1464 (% style="color:red" %)**Note: Always test the actually current pass by the JP2 jumper when connect to a new type of sensor.**
1465 )))
1466
1467
1468 == 2.8 Battery & Power Consumption ==
1469
1470
1471 NBSN95 uses ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace.
1472
1473 [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
1474
1475
1476 = 3. ​ Access NB-IoT Module =
1477
1478
1479 (((
1480 Users can directly access the AT command set of the NB-IoT module.
1481
1482 (((
1483 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/]]
1484 )))
1485
1486
1487 )))
1488
1489 [[image:1657531951422-179.png]]
1490
1491
1492 = 4.  Using the AT Commands =
1493
1494 == 4.1  Access AT Commands ==
1495
1496
1497 See this link for detail: [[https:~~/~~/www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0>>https://www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0]]
1498
1499
1500 AT+<CMD>?  : Help on <CMD>
1501
1502 AT+<CMD>         : Run <CMD>
1503
1504 AT+<CMD>=<value> : Set the value
1505
1506 AT+<CMD>=?  : Get the value
1507
1508
1509 (% style="color:#037691" %)**General Commands**(%%)      
1510
1511 AT  : Attention       
1512
1513 AT?  : Short Help     
1514
1515 ATZ  : MCU Reset    
1516
1517 AT+TDC  : Application Data Transmission Interval
1518
1519 AT+CFG  : Print all configurations
1520
1521 AT+CFGMOD           : Working mode selection
1522
1523 AT+INTMOD            : Set the trigger interrupt mode
1524
1525 AT+5VT  : Set extend the time of 5V power  
1526
1527 AT+PRO  : Choose agreement
1528
1529 AT+WEIGRE  : Get weight or set weight to 0
1530
1531 AT+WEIGAP  : Get or Set the GapValue of weight
1532
1533 AT+RXDL  : Extend the sending and receiving time
1534
1535 AT+CNTFAC  : Get or set counting parameters
1536
1537 AT+SERVADDR  : Server Address
1538
1539 AT+GETSENSORVALUE   : Returns the current sensor measurement
1540
1541 AT+CUM  : Get or Set cache upload mechanism (0: Off 1: On)
1542
1543 (% style="color:#037691" %)**COAP Management**      
1544
1545 AT+URI            : Resource parameters
1546
1547
1548 (% style="color:#037691" %)**UDP Management**
1549
1550 AT+CFM          : Upload confirmation mode (only valid for UDP)
1551
1552
1553 (% style="color:#037691" %)**MQTT Management**
1554
1555 AT+CLIENT               : Get or Set MQTT client
1556
1557 AT+UNAME  : Get or Set MQTT Username
1558
1559 AT+PWD                  : Get or Set MQTT password
1560
1561 AT+PUBTOPIC  : Get or Set MQTT publish topic
1562
1563 AT+SUBTOPIC  : Get or Set MQTT subscription topic
1564
1565
1566 (% style="color:#037691" %)**Information** 
1567
1568 AT+LDATA  : Get the last upload data
1569
1570 AT+CDP  : Read or Clear cached data(% style="color:#037691" %)       
1571
1572 AT+FDR  : Factory Data Reset
1573
1574 AT+PWORD  : Serial Access Password
1575
1576
1577 = 5.  Developer Guide =
1578
1579 == 5.1  Get and compile Software ==
1580
1581
1582 NBSN95 is an open-source project, developer can compile their firmware for customized applications. User can get the source code from:
1583
1584 * Software Source Code: [[https:~~/~~/github.com/dragino/NBSN95>>url:https://github.com/dragino/NBSN95]]
1585 * 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/]]
1586 * Upgrade firmware instruction
1587
1588 (((
1589 See FAQ of this file.
1590 )))
1591
1592
1593 (((
1594 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**
1595 )))
1596
1597
1598 == 5.2  Get hardware source ==
1599
1600
1601 NBSN95 are the compose of two PCB modules:
1602
1603 1.  Mother board:  [[LoRa ST Sensor node mother board>>url:https://github.com/dragino/Lora/tree/master/LSN50/v2.0]].
1604
1605 2.  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]]
1606
1607
1608 = ​6.  FAQ =
1609
1610 == 6.1 ​ How to Upgrade Firmware ==
1611
1612
1613 (((
1614 User can upgrade the firmware for 1) bug fix, 2) new feature release.
1615 )))
1616
1617 (((
1618 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]]
1619 )))
1620
1621 (((
1622 (% style="color:red" %)**Notice, NBSN95 and LSN50v2 share the same mother board. They use the same connection and method to update.**
1623 )))
1624
1625
1626 = 7.  Trouble Shooting =
1627
1628 == 7.1  ​Connection problem when uploading firmware ==
1629
1630
1631 (((
1632 **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]]
1633 )))
1634
1635
1636 == 7.2  AT Command input doesn't work ==
1637
1638
1639 (((
1640 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.
1641
1642
1643 == 7.3 Not able to connect to NB-IoT network and keep showing "Signal Strength:99". ==
1644 )))
1645
1646 This means sensor is trying to join the NB-IoT network but fail. Please see this link for trouble shooting.
1647
1648
1649
1650 = 8. ​ Order Info =
1651
1652
1653 Part Number:
1654
1655 (% style="color:blue" %)**NBSN95-YY (Base on BC95-G)**
1656
1657 **or**
1658
1659 (% style="color:blue" %)**NBSN95A-YY(Base on BC35-G)**
1660
1661
1662 (% style="color:blue" %)**YY:**
1663
1664 * (% style="color:red" %)**12**(%%):  With M12 waterproof cable hole
1665 * (% style="color:red" %)**16**(%%):  With M16 waterproof cable hole
1666 * (% style="color:red" %)**NH**(%%): No Hole
1667
1668
1669 = 9.  Packing Info =
1670
1671 (((
1672
1673
1674 (% style="color:#037691" %)**Package Includes**:
1675
1676 * NBSN95 NB-IoT Soil Moisture & EC Sensor x 1
1677 * External antenna x 1
1678 )))
1679
1680 (((
1681
1682
1683 (% style="color:#037691" %)**Dimension and weight**:
1684
1685 * Device Size: 13.0 x 5 x 4.5 cm
1686 * Device Weight: 150g
1687 * Package Size / pcs : 14.0 x 8x 5 cm
1688 * Weight / pcs : 180g
1689 )))
1690
1691 (((
1692
1693
1694
1695 )))
1696
1697 = 10.  Support =
1698
1699
1700 * 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.
1701 * 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]]
1702
1703
Copyright ©2010-2022 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0