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