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