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