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