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
413 == 2.3  Working Mode & Uplink Payload ==
414
415
416 (((
417 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.
418 )))
419
420
421 (((
422 For example:
423 )))
424
425 (((
426 (% 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"]].
427 )))
428
429
430 (((
431 The uplink payloads are composed in ASCII String. For example:
432 )))
433
434 (((
435 0a cd 00 ed 0a cc 00 00 ef 02 d2 1d (total 24 ASCII Chars). Representative the actually payload:
436 )))
437
438 (((
439 0x 0a cd 00 ed 0a cc 00 00 ef 02 d2 1d Total 12 bytes
440 )))
441
442
443 (((
444 (% style="color:red" %)**NOTE:**
445 )))
446
447 (((
448 (% style="color:red" %)**1. All modes share the same Payload Explanation from [[HERE>>||anchor="H2.4A0PayloadExplanationandSensorInterface"]].
449 2. By default, the device will send an uplink message every 1 hour.**
450 )))
451
452
453 === 2.3.1 CFGMOD~=1 (Default Mode) ===
454
455
456 (((
457 In this mode, the uplink payload usually contains 27 bytes. ((% style="color:red" %)Note: Time stamp field are added since firmware version v120(%%))
458 )))
459
460
461 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
462 |=(% style="width: 55px;" %)(((
463 **Size(bytes)**
464 )))|=(% 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**
465 |(% 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" %)(((
466 (((
467 MOD
468 )))
469
470 (((
471 0x01
472 )))
473 )))|(% style="width:60px" %)(((
474 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
475 )))|(% 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" %)(((
476 (((
477 [[Temperature>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
478 )))
479
480 (((
481 by
482 )))
483
484 (((
485 SHT20/SHT31
486 )))
487 )))|(% style="width:112px" %)(((
488 (((
489 [[Humidity>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
490 )))
491
492 (((
493 by
494 )))
495
496 (((
497 SHT20/SHT31
498 )))
499 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
500
501 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
502
503 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:512px" %)
504 |(% 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)**
505
506 (% style="color:red" %)**NOTE:**
507
508 (% style="color:red" %)**1. Only up to 10 sets of latest data will be cached.**
509
510 (% style="color:red" %)**2. Theoretically, the maximum upload bytes are 215.**
511
512
513 (((
514 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
515 )))
516
517 [[image:1657526816370-997.png]]
518
519
520 (((
521 The payload is ASCII string, representative same HEX: (% style="background-color:yellow" %)**0x f868411056754138 0078 0c54 19 01 0000 00 0042 00fc 0232 60da7c4e**
522
523 **where:**
524 )))
525
526 * (% style="color:#037691" %)**Device ID:**(%%) 0xf868411056754138 = 868411056754138
527
528 * (% style="color:#037691" %)**Version:**(%%)  0x0078=120=1.2.0
529
530 * (% style="color:#037691" %)**BAT:**(%%)  0x0c54 = 3156 mV = 3.156V
531
532 * (% style="color:#037691" %)**Singal:**(%%)  0x19 = 25
533
534 * (% style="color:#037691" %)**Model:** (%%)0x01 = 1
535
536 * (% style="color:#037691" %)**Temperature by DS18b20:**(%%) 0x0000 = 0
537
538 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
539
540 * (% style="color:#037691" %)**ADC:**(%%) 0x0042 = 66 = 66mv
541
542 * (% style="color:#037691" %)**Temperature by SHT20/SHT31:**(%%) 0x00fc = 252 = 25.2 °C
543
544 * (% style="color:#037691" %)**Humidity by SHT20/SHT31:**(%%) 0x0232 = 562 = 56.2 %rh
545
546 * (% style="color:#037691" %)**Timestamp:**(%%) 0x60da7c4e = 1,624,931,406 = 2021-06-29 09:50:06
547
548
549
550 === 2.3.2 CFGMOD~=2 (Distance Mode) ===
551
552
553 (((
554 This mode is target to measure the distance. Total 25 bytes, ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%))
555
556
557 )))
558
559 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
560 |=(% style="width: 55px;" %)(((
561 **Size(bytes)**
562 )))|=(% 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**
563 |(% 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" %)(((
564 (((
565 MOD
566 )))
567
568 (((
569 0x02
570 )))
571 )))|(% style="width:60px" %)(((
572 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
573 )))|(% 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" %)(((
574 (((
575 (((
576 [[Distance measure>>||anchor="H2.4.11A0UltrasonicSensor"]] by:
577 )))
578
579 (((
580 1) [[LIDAR-Lite V3HP>>||anchor="HConnectionofLIDAR-LiteV3HP:"]]
581 )))
582
583 (((
584 Or
585 )))
586
587 (((
588 2) [[Ultrasonic Sensor>>||anchor="H2.4.11A0UltrasonicSensor"]]
589 )))
590 )))
591 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
592
593 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
594
595 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:512px" %)
596 |(% 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)**
597
598 (((
599 (% style="color:red" %)**NOTE:**
600 )))
601
602 (((
603 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
604 )))
605
606 (((
607 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 193.**
608 )))
609
610
611 (((
612 (((
613 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
614 )))
615 )))
616
617
618 [[image:1657527383721-325.png]]
619
620
621 So the payload is (% style="background-color:yellow" %)**0xf868411056754138 0078 0ca9 11 02 010b 00 0ca8 0158 60dacc87 **
622
623 **where:**
624
625 * (% style="color:#037691" %)**Device ID:**(%%) 0xf868411056754138 = 868411056754138
626
627 * (% style="color:#037691" %)**Version:**(%%)  0x0078=120=1.2.0
628
629 * (% style="color:#037691" %)**BAT:**(%%)  0x0ca9 = 3241mV = 3.241 V
630
631 * (% style="color:#037691" %)**Singal:**(%%)  0x11 = 17
632
633 * (% style="color:#037691" %)**Model:** (%%)0x02 = 2
634
635 * (% style="color:#037691" %)**Temperature by DS18b20:**(%%) 0x010b= 267 = 26.7  °C
636
637 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
638
639 * (% style="color:#037691" %)**ADC:**(%%) 0x0ca8 = 3240 mv
640
641 * (% style="color:#037691" %)**Distance by LIDAR-Lite V3HP/Ultrasonic Sensor:**(%%) 0x0158 = 344 cm
642
643 * (% style="color:#037691" %)**Timestamp:** (%%)0x60dacc87 = 1,624,951,943 = 2021-06-29 15:32:23
644
645 ==== (% style="color:blue" %)**Connection of LIDAR-Lite V3HP:**(%%) ====
646
647
648 [[image:1657527422661-877.png]]
649
650
651 (% style="color:blue" %)**Connection to Ultrasonic Sensor:**
652
653 [[image:1657527441108-781.png]]
654
655
656 === 2.3.3 CFGMOD~=3 (3 ADC + I2C) ===
657
658
659 (((
660 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**(%%))
661 )))
662
663 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
664 |=(% style="width: 55px;" %)(((
665 **Size(bytes)**
666 )))|=(% 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**
667 |(% 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" %)(((
668 (((
669 MOD
670 )))
671
672 (((
673 0x03
674 )))
675 )))|(% style="width:60px" %)(((
676 [[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]1
677 )))|(% 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" %)(((
678 (((
679 [[Temperature>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
680 )))
681
682 (((
683 by
684 )))
685
686 (((
687 SHT20/SHT31
688 )))
689 )))|(% style="width:112px" %)(((
690 (((
691 [[Humidity>>||anchor="H2.4.9A0I2CInterface28SHT2029"]]
692 )))
693
694 (((
695 by
696 )))
697
698 (((
699 SHT20/SHT31
700 )))
701 )))|(% style="width:112px" %)[[ADC>>||anchor="H2.4.7A0AnalogueDigitalConverter28ADC29"]]3|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
702
703 ADC1 uses pin PA0 to measure
704
705 ADC2 uses pin PA1 to measure
706
707 ADC3 uses pin PA4 to measure
708
709
710 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
711
712
713 (% border="1" style="background-color:#ffffcc; color:green; width:510px" %)
714 |(% 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)**
715
716 (% style="color:red" %)**NOTE:**
717
718 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
719
720 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 226.**
721
722
723 (((
724 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
725 )))
726
727 [[image:1657527751330-433.png]]
728
729
730 So the payload is (% style="background-color:yellow" %)**0x f868411056754138 78 0cf0 12 03 0cbc 00 0cef 010a 024b 0cef 60dbc494**
731
732 **where:**
733
734 * (% style="color:#037691" %)**Device ID:**(%%) 0xf868411056754138 = 868411056754138
735
736 * (% style="color:#037691" %)**Version:**(%%)  0x78=120=1.2.0
737
738 * (% style="color:#037691" %)**BAT:**(%%)  0x0cf0 = 3312 mV = 3.312 V
739
740 * (% style="color:#037691" %)**Singal:**(%%)  0x12 = 18
741
742 * (% style="color:#037691" %)**Model:**(%%) 0x03 = 3
743
744 * (% style="color:#037691" %)**ADC1:**  (%%)0x0cbc= 3260mV
745
746 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
747
748 * (% style="color:#037691" %)**ADC2:**(%%) 0x0cef =3311 mv
749
750 * (% style="color:#037691" %)**Temperature by SHT20/SHT31:**(%%) 0x010a = 266 = 26.6 °C
751
752 * (% style="color:#037691" %)**Humidity by SHT20/SHT31:**(%%) 0x024b =587 = 58.7 %rh
753
754 * (% style="color:#037691" %)**ADC3:**(%%) 0x0cef = 3311 mv
755
756 * (% style="color:#037691" %)**Timestamp:** (%%)0x60dbc494 = 1,625,015,444= 2021-06-30 09:10:44
757
758
759
760 === 2.3.4 CFGMOD~=4 (3 x DS18B20) ===
761
762
763 (((
764 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**(%%))
765
766
767 )))
768
769 [[image:1657527815194-570.png]]
770
771
772 This mode has total 27 bytes. ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%)) As shown below:
773
774 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
775 |=(% style="width: 55px;" %)(((
776 **Size(bytes)**
777 )))|=(% 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**
778 |(% 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" %)(((
779 (((
780 MOD
781 )))
782
783 (((
784 0x04
785 )))
786 )))|(% style="width:60px" %)(((
787 [[Temperature1 (DS18B20) (PB3)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
788 )))|(% 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" %)(((
789 (((
790 [[Temperature2 (DS18B20) (PA9)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
791 )))
792 )))|(% style="width:112px" %)(((
793 (((
794 [[Temperature3 (DS18B20) (PA10)>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
795 )))
796 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
797
798 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
799
800
801 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:538px" %)
802 |(% 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)**
803
804 (% style="color:red" %)**NOTE:**
805
806 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
807
808 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes is 215.**
809
810
811 (((
812 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
813 )))
814
815 (((
816
817 )))
818
819 [[image:1657528339054-727.png]]
820
821
822 So the payload is (% style="background-color:yellow" %)**0x f868411056754138 0078 0cdf 15 04 010a 0cde 00 00fb 0100 60dbcb3f  **
823
824 **where:**
825
826 * (% style="color:#037691" %)**Device ID:**(%%) 0xf868411056754138 = 868411056754138
827
828 * (% style="color:#037691" %)**Version:** (%%)0x0078=120=1.2.0
829
830 * (% style="color:#037691" %)**BAT:**      (%%)0x0cdf = 3295 mV = 3.295 V
831
832 * (% style="color:#037691" %)**Singal:**(%%)  0x15 = 21
833
834 * (% style="color:#037691" %)**Model:**(%%) 0x04 = 4
835
836 * (% style="color:#037691" %)**Temperature1 by DS18b20:**(%%) 0x010a = 226 = 22.6 °C
837
838 * (% style="color:#037691" %)**ADC:** (%%)0x0cde = 3294 mv
839
840 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
841
842 * (% style="color:#037691" %)**Temperature2 by DS18b20:** (%%)0x00fb = 251 = 25.1°C
843
844 * (% style="color:#037691" %)**Temperature3 by DS18b20:**(%%) 0x0100  = 256 = 25.6 °C
845
846 * (% style="color:#037691" %)**Timestamp:**(%%)** **0x60dbcb3f = 1,625,017,151= 2021-06-30 09:39:11
847
848
849
850 === 2.3.5 CFGMOD~=5 (Weight Measurement by HX711) ===
851
852
853 [[image:1657528388617-253.png]]
854
855
856 (% style="color:red" %)**Notes about hardware connection:**
857
858 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.
859 1. HX711 support 5v VCC, but while connect the NBSN95's +5V to HX711 VCC, the value from HX711 is not stable.
860 1. Connect NBSN95 +5V to HX711 VCC via a LDO module is stable.
861
862 (% style="color:red" %)**Each HX711 need to be calibrated before used. User need to do below two steps:**
863
864 1. Zero calibration. Don't put anything on load cell and run (% style="color:blue" %)**AT+WEIGRE**(%%) to calibrate to Zero gram.
865 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.
866
867 **For example:**
868
869 (% style="color:blue" %)**AT+WEIGAP =403.0**
870
871 Response:  Weight is 401 g
872
873
874 Check the response of this command and adjust the value to match the real value for thing.
875
876 This mode has total 25 bytes. ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%)). As shown below:
877
878 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:520px" %)
879 |=(% style="width: 55px;" %)(((
880 **Size(bytes)**
881 )))|=(% 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**
882 |(% 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" %)(((
883 (((
884 MOD
885 )))
886
887 (((
888 0x05
889 )))
890 )))|(% style="width:60px" %)(((
891 [[Temperature (DS18B20)>>||anchor="H2.4.5A0Temperature28DS18B2029"]]
892 )))|(% 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" %)(((
893 (((
894 [[Weight>>||anchor="H2.4.13A0WeighSensorHX711"]]
895 )))
896 )))|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
897
898 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
899
900
901 (% border="1" style="background-color:#ffffcc; color:green; width:522px" %)
902 |(% 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)**
903
904 (% style="color:red" %)**NOTE:**
905
906 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
907
908 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 193.**
909
910
911 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
912
913
914 [[image:1657528559833-164.png]]
915
916
917 So the payload is (% style="background-color:yellow" %)**0x f868411056754138 0078 0c94 14 05 0137 0c93 00 003a 60dbe59e**
918
919 **where:**
920
921 * (% style="color:#037691" %)**Device ID:** (%%)0xf868411056754138 = 868411056754138
922
923 * (% style="color:#037691" %)**Version:**(%%)  0x0078=120=1.2.0
924
925 * (% style="color:#037691" %)**BAT:**(%%)**      **0x0c94 = 3220 mV = 3.220 V
926
927 * (% style="color:#037691" %)**Singal:**  (%%)0x14 = 20
928
929 * (% style="color:#037691" %)**Model:** (%%)0x05 = 5
930
931 * (% style="color:#037691" %)**Temperature by DS18b20:**(%%) 0x0137 = 311 = 31.1 °C
932
933 * (% style="color:#037691" %)**ADC:** (%%)0x0c93 = 3219 mv
934
935 * (% style="color:#037691" %)**Interrupt:**(%%) 0x00 = 0
936
937 * (% style="color:#037691" %)**Weigt by HX711:** (%%)0x003a  = 58 g
938
939 * (% style="color:#037691" %)**Timestamp:**(%%) 0x60dbe59e = 1,625,023,902= 2021-06-30 11:31:42
940
941
942
943 === 2.3.6 CFGMOD~=6 (Counting mode) ===
944
945
946 (((
947 In this mode, uplink payload includes in total 22 bytes, ((% style="color:red" %)**Note: Time stamp field are added since firmware version v120**(%%))
948 )))
949
950 (% border="1" cellspacing="6" style="background-color:#ffffcc; color:green; width:400px" %)
951 |=(% style="width: 55px;" %)(((
952 **Size(bytes)**
953 )))|=(% 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**
954 |(% 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" %)(((
955 (((
956 MOD 0x06
957 )))
958 )))|(% style="width:60px" %)Pulse count|(% style="width:94px" %)[[Timestamp>>||anchor="H2.4.14A0Timestamp"]]
959
960 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
961
962
963 (% border="1" style="background-color:#ffffcc; color:green; width:518px" %)
964 |(% 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)**
965
966 (% style="color:red" %)**NOTE:**
967
968 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
969
970 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 160.**
971
972
973 (((
974 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
975 )))
976
977
978 [[image:1657528693361-320.png]]
979
980 (((
981
982
983 The payload is ASCII string, representative same HEX: (% style="background-color:yellow" %)**0x f868411056754138 0078 0cc7 14 06 00000002 60dc03e5**
984
985 **~ where:**
986 )))
987
988 * (% style="color:#037691" %)**Device ID:** (%%)0xf868411056754138 = 868411056754138
989
990 * (% style="color:#037691" %)**Version:** (%%)0x0078=120=1.2.0
991
992 * (% style="color:#037691" %)**BAT:**(%%)  0x0cc7 =3271mV =3.271V
993
994 * (% style="color:#037691" %)**Singal:**(%%)  0x14 = 20
995
996 * (% style="color:#037691" %)**Model:**(%%) 0x06 = 6
997
998 * (% style="color:#037691" %)**Pulse count:**(%%)  0x00000002= 2
999
1000 * (% style="color:#037691" %)**Timestamp:**(%%)  0x60dc03e5 = 1,625,031,653= 2021-06-30 13:40:53
1001
1002
1003
1004 == 2.4  Payload Explanation and Sensor Interface ==
1005
1006 === 2.4.1  Device ID ===
1007
1008
1009 (((
1010 By default, the Device ID equal to the last 15 bits of IMEI.
1011
1012 User can use (% style="color:blue" %)**AT+DEUI** (%%)to set Device ID
1013
1014
1015 **Example**:
1016
1017 AT+DEUI=868411056754138
1018
1019 The Device ID is stored in a none-erase area, Upgrade the firmware or run AT+FDR won't erase Device ID.
1020 )))
1021
1022
1023 === 2.4.2  Version Info ===
1024
1025
1026 (((
1027 (((
1028 These bytes include the hardware and software version.
1029 )))
1030
1031 (((
1032 **Higher byte:**  Specify hardware version: always 0x01 for NBSN95
1033 )))
1034
1035 (((
1036 **Lower byte:**  Specify the software version: 0x6E=110, means firmware version 110
1037 )))
1038
1039 (((
1040 **For example:  **0x01 6E: this device is NBSN95 with firmware version 110.
1041 )))
1042 )))
1043
1044
1045 === 2.4.3  Battery Info ===
1046
1047
1048 (((
1049 Ex1: 0x0B45 = 2885mV
1050 )))
1051
1052 (((
1053 Ex2: 0x0B49 = 2889mV
1054 )))
1055
1056
1057 === 2.4.4  Signal Strength ===
1058
1059
1060 (((
1061 NB-IoT Network signal Strength.
1062 )))
1063
1064 (((
1065
1066
1067 **Ex1: 0x1d = 29**
1068 )))
1069
1070 (((
1071 (% style="color:blue" %)**0**(%%)  -113dBm or less
1072 )))
1073
1074 (((
1075 (% style="color:blue" %)**1**(%%)  -111dBm
1076 )))
1077
1078 (((
1079 (% style="color:blue" %)**2...30**(%%) -109dBm... -53dBm
1080 )))
1081
1082 (((
1083 (% style="color:blue" %)**31**  (%%) -51dBm or greater
1084 )))
1085
1086 (((
1087 (% style="color:blue" %)**99**   (%%) Not known or not detectable
1088 )))
1089
1090
1091 === 2.4.5  Temperature (DS18B20) ===
1092
1093
1094 If there is a DS18B20 connected to PB3 pin. The temperature will be uploaded in the payload.
1095
1096 (((
1097 More DS18B20 can check the [[3 DS18B20 mode>>||anchor="H2.3.4CFGMOD3D4283xDS18B2029"]]
1098 )))
1099
1100
1101 (((
1102 (% style="color:blue" %)**Connection for one DS18B20**
1103 )))
1104
1105 [[image:image-20220711164131-3.jpeg]]
1106
1107
1108 **Example**:
1109
1110 If payload is:  0x0105:  (0105 & FC00 == 0), temp = 0x0105 /10 = 26.1 degree
1111
1112 If payload is:  0xFF3F:  (FF3F & FC00 == 1) , temp = (0xFF3F - 65536)/10 = -19.3 degree.
1113
1114
1115 === 2.4.6  Digital Input ===
1116
1117
1118 The digital input is for pin PA12,
1119
1120 * When PA12 is high, the bit2 of this byte is 1.
1121
1122 * When PA12 is low, the bit2 of this byte is 0.
1123
1124 (((
1125
1126 )))
1127
1128
1129 === 2.4.7  Analogue Digital Converter (ADC) ===
1130
1131
1132 The ADC monitors the voltage on the (% style="color:blue" %)**PA0**(%%) line, in mV. Max value is from 0v to BAT voltage
1133
1134
1135 Ex: 0x021F = 543mv,
1136
1137
1138 (% style="color:blue" %)**Example1:**(%%)  Reading a Liquid Level Sensor (Read a resistance value):
1139
1140 [[image:image-20220711164848-12.png]]
1141
1142
1143
1144 (((
1145 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.
1146 )))
1147
1148
1149 (% style="color:blue" %)**Steps:**
1150
1151 1.  Solder a 10K resistor between PA0 and VCC.
1152
1153 2.  Screw liquid level sensor's two pins to PA0 and PB4.
1154
1155
1156
1157 The equipment circuit is as below:
1158
1159
1160 [[image:image-20220711164942-13.png]]
1161
1162
1163
1164 According to above diagram:
1165
1166 ([[image:image-20220711164435-6.png]]
1167
1168 So
1169
1170 [[image:image-20220711164435-7.png]]
1171
1172 [[image:image-20220711164435-8.png]] is the reading of ADC. So if ADC=0x05DC=0.9 v and VCC (BAT) is 2.9v
1173
1174
1175 The [[image:image-20220711164435-9.png]] 4.5K ohm
1176
1177 Since the buoy is linear resistance from 10 ~~ 70cm.
1178
1179
1180 The position of buoy is [[image:image-20220711164435-10.png]] , from the bottom of buoy.
1181
1182 (((
1183
1184 )))
1185
1186 === 2.4.8  Digital Interrupt ===
1187
1188
1189 (((
1190 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.
1191 )))
1192
1193
1194 (((
1195 **Example to use with door sensor**
1196 )))
1197
1198 (((
1199 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.
1200 )))
1201
1202 [[image:image-20220711165615-14.png]]
1203
1204 (((
1205 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.
1206 )))
1207
1208
1209 (((
1210 Below is the installation example:
1211 )))
1212
1213 (((
1214 Fix one piece of the magnetic sensor to the door and connect the two pins to NBSN95 as follows:
1215 )))
1216
1217 * One pin to NBSN95's PB14 pin
1218
1219 * The other pin to NBSN95's VCC pin
1220
1221 (((
1222 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.
1223 )))
1224
1225
1226 (((
1227 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.
1228 )))
1229
1230
1231 (((
1232 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.
1233 )))
1234
1235
1236 [[image:image-20220711165615-15.png]]
1237
1238
1239 The above photos shows the two parts of the magnetic switch fitted to a door.
1240
1241
1242 (((
1243 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.
1244 )))
1245
1246
1247 (((
1248 The command is:
1249 )))
1250
1251 (((
1252 (% 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/]]).
1253 )))
1254
1255
1256 Below shows some screen captures in TTN:
1257
1258
1259 (((
1260 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:
1261 )))
1262
1263 * When PB14 is high, the bit8 of this byte is 1.
1264
1265 * When PB14 is low, the bit8 of this byte is 0.
1266
1267
1268
1269 === 2.4.9  I2C Interface (SHT20) ===
1270
1271
1272 (((
1273 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.
1274 )))
1275
1276 (((
1277 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).**
1278 )))
1279
1280
1281 (((
1282 Hardware connection for SHT20 is as below: 
1283 )))
1284
1285
1286 [[image:image-20220711170438-16.jpeg]]
1287
1288
1289 The device will be able to get the I2C sensor data now and upload to IoT Server.
1290
1291
1292 [[image:image-20220711170438-17.png]]
1293
1294
1295 Convert the read byte to decimal and divide it by ten.
1296
1297
1298 (% style="color:blue" %)**Example:**
1299
1300 Temperature:  Read:00ec (H) = 236(D)  Value:  236 /10=23.6℃
1301
1302 Humidity:    Read:0295(H)=661(D)    Value:  661 / 10=66.1, So 66.1%
1303
1304
1305 If you want to use other I2C device, please refer the SHT20 part source code as reference.
1306
1307
1308 === 2.4.10  Distance Reading ===
1309
1310
1311 Refer [[Ultrasonic Sensor section>>||anchor="H2.4.11A0UltrasonicSensor"]].
1312
1313
1314 === 2.4.11  Ultrasonic Sensor ===
1315
1316
1317 (((
1318 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]]
1319 )))
1320
1321
1322 (((
1323 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.
1324 )))
1325
1326 The picture below shows the connection:
1327
1328
1329 [[image:image-20220711171223-18.jpeg]]
1330
1331
1332
1333 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).
1334
1335
1336 **Example:**
1337
1338 Distance:  Read:0155(Hex) = 3410(D)  Value:  3410 mm=341.0 cm
1339
1340 [[image:image-20220711171223-19.png]]
1341
1342
1343 You can see the serial output in ULT mode as below:
1344
1345
1346 [[image:image-20220711171223-20.png]]
1347
1348
1349 === 2.4.12  ​+5V Output ===
1350
1351
1352 (((
1353 NBSN95 will enable +5V output before all sampling and disable the +5v after all sampling. 
1354 )))
1355
1356
1357 (((
1358 The 5V output time can be controlled by AT Command.
1359 )))
1360
1361 (((
1362 (% style="color:blue" %)**AT+5VT=1000**
1363 )))
1364
1365 (((
1366 Means set 5V valid time to have 1000ms. So the real 5V output will actually have 1000ms + sampling time for other sensors.
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 === 2.4.14  Timestamp ===
1377
1378
1379 From the v1.2.0 version, the timestamp will be added after each upload link.
1380
1381
1382 The time of the timestamp is based on the time in time zone 0.
1383
1384 Such as: 0x60da837e = 1624933246 = 2021-06-29 2:20:46+32(Beijing time)
1385
1386
1387 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
1388
1389 Below is the converter example
1390
1391
1392 [[image:image-20220711171448-21.png]]
1393
1394
1395 == 2.5  Downlink Payload ==
1396
1397
1398 By default, NBSN95 prints the downlink payload to console port.
1399
1400 [[image:image-20220708133731-5.png]]
1401
1402
1403 (((
1404 (% style="color:blue" %)**Examples:**
1405 )))
1406
1407 (((
1408
1409 )))
1410
1411 * (((
1412 (% style="color:blue" %)**Set TDC**
1413 )))
1414
1415 (((
1416 If the payload=0100003C, it means set the END Node's TDC to 0x00003C=60(S), while type code is 01.
1417 )))
1418
1419 (((
1420 Payload:    01 00 00 1E    TDC=30S
1421 )))
1422
1423 (((
1424 Payload:    01 00 00 3C    TDC=60S
1425 )))
1426
1427 (((
1428
1429 )))
1430
1431 * (((
1432 (% style="color:blue" %)**Reset**
1433 )))
1434
1435 (((
1436 If payload = 0x04FF, it will reset the NBSN95
1437 )))
1438
1439
1440 * (% style="color:blue" %)**INTMOD**
1441
1442 (((
1443 Downlink Payload: 06000003, Set AT+INTMOD=3
1444 )))
1445
1446
1447 == 2.6  ​Firmware Change Log ==
1448
1449
1450 Download URL & Firmware Change log:  [[https:~~/~~/www.dropbox.com/sh/heyfnuod8qwwcm0/AACjmliw8Aeb9tYc74YoE9Qra?dl=0>>https://www.dropbox.com/sh/heyfnuod8qwwcm0/AACjmliw8Aeb9tYc74YoE9Qra?dl=0]]
1451
1452 (((
1453 Upgrade Instruction: [[Upgrade Firmware>>||anchor="H6.1200BHowtoUpgradeFirmware"]]
1454 )))
1455
1456
1457 == 2.7  Use VDD or +5V to Power External Sensor ==
1458
1459
1460 User can use VDD or +5V to power external sensor.
1461
1462
1463 (% style="color:red" %)**Note:**
1464
1465 ~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.
1466
1467 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"]].
1468
1469 (((
1470 (% style="color:red" %)**Note: Always test the actually current pass by the JP2 jumper when connect to a new type of sensor.**
1471 )))
1472
1473
1474 == 2.8 Battery & Power Consumption ==
1475
1476
1477 NBSN95 uses ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace.
1478
1479 [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
1480
1481
1482 = 3. ​ Access NB-IoT Module =
1483
1484
1485 (((
1486 Users can directly access the AT command set of the NB-IoT module.
1487
1488 (((
1489 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/]]
1490 )))
1491
1492
1493 )))
1494
1495 [[image:1657531951422-179.png]]
1496
1497
1498 = 4.  Using the AT Commands =
1499
1500 == 4.1  Access AT Commands ==
1501
1502
1503 See this link for detail: [[https:~~/~~/www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0>>https://www.dropbox.com/sh/jao1xt9kw5r3yq4/AAAMpJkZzExF2JLbRWxGoQ9Na?dl=0]]
1504
1505
1506 AT+<CMD>?  : Help on <CMD>
1507
1508 AT+<CMD>         : Run <CMD>
1509
1510 AT+<CMD>=<value> : Set the value
1511
1512 AT+<CMD>=?  : Get the value
1513
1514
1515 (% style="color:#037691" %)**General Commands**(%%)      
1516
1517 AT  : Attention       
1518
1519 AT?  : Short Help     
1520
1521 ATZ  : MCU Reset    
1522
1523 AT+TDC  : Application Data Transmission Interval
1524
1525 AT+CFG  : Print all configurations
1526
1527 AT+CFGMOD           : Working mode selection
1528
1529 AT+INTMOD            : Set the trigger interrupt mode
1530
1531 AT+5VT  : Set extend the time of 5V power  
1532
1533 AT+PRO  : Choose agreement
1534
1535 AT+WEIGRE  : Get weight or set weight to 0
1536
1537 AT+WEIGAP  : Get or Set the GapValue of weight
1538
1539 AT+RXDL  : Extend the sending and receiving time
1540
1541 AT+CNTFAC  : Get or set counting parameters
1542
1543 AT+SERVADDR  : Server Address
1544
1545
1546 (% style="color:#037691" %)**COAP Management**      
1547
1548 AT+URI            : Resource parameters
1549
1550
1551 (% style="color:#037691" %)**UDP Management**
1552
1553 AT+CFM          : Upload confirmation mode (only valid for UDP)
1554
1555
1556 (% style="color:#037691" %)**MQTT Management**
1557
1558 AT+CLIENT               : Get or Set MQTT client
1559
1560 AT+UNAME  : Get or Set MQTT Username
1561
1562 AT+PWD                  : Get or Set MQTT password
1563
1564 AT+PUBTOPIC  : Get or Set MQTT publish topic
1565
1566 AT+SUBTOPIC  : Get or Set MQTT subscription topic
1567
1568
1569 (% style="color:#037691" %)**Information** 
1570
1571 AT+LDATA  : Get the last upload data
1572
1573 AT+CDP  : Read or Clear cached data(% style="color:#037691" %)       
1574
1575 AT+FDR  : Factory Data Reset
1576
1577 AT+PWORD  : Serial Access Password
1578
1579
1580 = 5.  Developer Guide =
1581
1582 == 5.1  Get and compile Software ==
1583
1584
1585 NBSN95 is an open-source project, developer can compile their firmware for customized applications. User can get the source code from:
1586
1587 * Software Source Code: [[https:~~/~~/github.com/dragino/NBSN95>>url:https://github.com/dragino/NBSN95]]
1588 * 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/]]
1589 * Upgrade firmware instruction
1590
1591 (((
1592 See FAQ of this file.
1593 )))
1594
1595
1596 (((
1597 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**
1598 )))
1599
1600
1601 == 5.2  Get hardware source ==
1602
1603
1604 NBSN95 are the compose of two PCB modules:
1605
1606 1.  Mother board:  [[LoRa ST Sensor node mother board>>url:https://github.com/dragino/Lora/tree/master/LSN50/v2.0]].
1607
1608 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]]
1609
1610
1611 = ​6.  FAQ =
1612
1613 == 6.1 ​ How to Upgrade Firmware ==
1614
1615
1616 (((
1617 User can upgrade the firmware for 1) bug fix, 2) new feature release.
1618 )))
1619
1620 (((
1621 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]]
1622 )))
1623
1624 (((
1625 (% style="color:red" %)**Notice, NBSN95 and LSN50v2 share the same mother board. They use the same connection and method to update.**
1626 )))
1627
1628
1629 = 7.  Trouble Shooting =
1630
1631 == 7.1  ​Connection problem when uploading firmware ==
1632
1633
1634 (((
1635 **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]]
1636 )))
1637
1638
1639 == 7.2  AT Command input doesn't work ==
1640
1641
1642 (((
1643 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.
1644 )))
1645
1646
1647 = 8. ​ Order Info =
1648
1649
1650 Part Number:
1651
1652 (% style="color:blue" %)**NBSN95-YY (Base on BC95-G)**
1653
1654 **or**
1655
1656 (% style="color:blue" %)**NBSN95A-YY(Base on BC35-G)**
1657
1658
1659 (% style="color:blue" %)**YY:**
1660
1661 * (% style="color:red" %)**12**(%%):  With M12 waterproof cable hole
1662 * (% style="color:red" %)**16**(%%):  With M16 waterproof cable hole
1663 * (% style="color:red" %)**NH**(%%): No Hole
1664
1665
1666
1667 = 9.  Packing Info =
1668
1669 (((
1670
1671
1672 (% style="color:#037691" %)**Package Includes**:
1673
1674 * NBSN95 NB-IoT Soil Moisture & EC Sensor x 1
1675 * External antenna x 1
1676 )))
1677
1678 (((
1679
1680
1681 (% style="color:#037691" %)**Dimension and weight**:
1682
1683 * Device Size: 13.0 x 5 x 4.5 cm
1684 * Device Weight: 150g
1685 * Package Size / pcs : 14.0 x 8x 5 cm
1686 * Weight / pcs : 180g
1687 )))
1688
1689 (((
1690
1691
1692
1693 )))
1694
1695 = 10.  Support =
1696
1697
1698 * 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.
1699 * 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]]
1700
1701
Copyright ©2010-2022 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0