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
1117 === 2.4.9  I2C Interface (SHT20) ===
1118
1119 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.
1120
1121
1122 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).**
1123
1124
1125 Hardware connection for SHT20 is as below: 
1126
1127
1128 [[image:image-20220711170438-16.jpeg]]
1129
1130
1131 The device will be able to get the I2C sensor data now and upload to IoT Server.
1132
1133
1134 [[image:image-20220711170438-17.png]]
1135
1136
1137 Convert the read byte to decimal and divide it by ten.
1138
1139
1140 (% style="color:blue" %)**Example:**
1141
1142 Temperature:  Read:00ec (H) = 236(D)  Value:  236 /10=23.6℃
1143
1144 Humidity:    Read:0295(H)=661(D)    Value:  661 / 10=66.1, So 66.1%
1145
1146
1147 If you want to use other I2C device, please refer the SHT20 part source code as reference.
1148
1149
1150 === 2.4.10  Distance Reading ===
1151
1152 Refer [[Ultrasonic Sensor section>>path:#Ultrasonic_Sensor]].
1153
1154
1155
1156 === 2.4.11  Ultrasonic Sensor ===
1157
1158 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]]
1159
1160
1161 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.
1162
1163
1164 The picture below shows the connection:
1165
1166
1167 [[image:image-20220711171223-18.jpeg]]
1168
1169
1170
1171 Connect to the NBSN95 and run [[**AT+CFGMOD=2**>>path:#MOD2]] to switch to ultrasonic mode (ULT).
1172
1173
1174 **Example:**
1175
1176 Distance:  Read:0155(Hex) = 3410(D)  Value:  3410 mm=341.0 cm
1177
1178 [[image:image-20220711171223-19.png]]
1179
1180
1181 You can see the serial output in ULT mode as below:
1182
1183
1184 [[image:image-20220711171223-20.png]]
1185
1186
1187
1188 === 2.4.12  ​+5V Output ===
1189
1190 (((
1191 NBSN95 will enable +5V output before all sampling and disable the +5v after all sampling. 
1192 )))
1193
1194
1195 (((
1196 The 5V output time can be controlled by AT Command.
1197 )))
1198
1199 (((
1200 (% style="color:blue" %)**AT+5VT=1000**
1201 )))
1202
1203 (((
1204 Means set 5V valid time to have 1000ms. So the real 5V output will actually have 1000ms + sampling time for other sensors.
1205 )))
1206
1207
1208
1209 == 2.5  Downlink Payload ==
1210
1211 By default, NSE01 prints the downlink payload to console port.
1212
1213 [[image:image-20220708133731-5.png]]
1214
1215
1216 (((
1217 (% style="color:blue" %)**Examples:**
1218 )))
1219
1220 (((
1221
1222 )))
1223
1224 * (((
1225 (% style="color:blue" %)**Set TDC**
1226 )))
1227
1228 (((
1229 If the payload=0100003C, it means set the END Node's TDC to 0x00003C=60(S), while type code is 01.
1230 )))
1231
1232 (((
1233 Payload:    01 00 00 1E    TDC=30S
1234 )))
1235
1236 (((
1237 Payload:    01 00 00 3C    TDC=60S
1238 )))
1239
1240 (((
1241
1242 )))
1243
1244 * (((
1245 (% style="color:blue" %)**Reset**
1246 )))
1247
1248 (((
1249 If payload = 0x04FF, it will reset the NSE01
1250 )))
1251
1252
1253 * (% style="color:blue" %)**INTMOD**
1254
1255 (((
1256 Downlink Payload: 06000003, Set AT+INTMOD=3
1257 )))
1258
1259
1260
1261 == 2.6  ​LED Indicator ==
1262
1263 (((
1264 The NSE01 has an internal LED which is to show the status of different state.
1265
1266
1267 * When power on, NSE01 will detect if sensor probe is connected, if probe detected, LED will blink four times. (no blinks in this step is no probe)
1268 * Then the LED will be on for 1 second means device is boot normally.
1269 * After NSE01 join NB-IoT network. The LED will be ON for 3 seconds.
1270 * For each uplink probe, LED will be on for 500ms.
1271 )))
1272
1273
1274
1275
1276 == 2.7  Installation in Soil ==
1277
1278 __**Measurement the soil surface**__
1279
1280 (((
1281 Choose the proper measuring position. Avoid the probe to touch rocks or hard things. Split the surface soil according to the measured deep. Keep the measured as original density. Vertical insert the probe into the soil to be measured. Make sure not shake when inserting. [[https:~~/~~/img.alicdn.com/imgextra/i3/2005165265/O1CN010rj9Oh1olPsQxrdUK_!!2005165265.jpg>>url:https://img.alicdn.com/imgextra/i3/2005165265/O1CN010rj9Oh1olPsQxrdUK_!!2005165265.jpg]]
1282 )))
1283
1284 [[image:1657259653666-883.png]] ​
1285
1286
1287 (((
1288
1289
1290 (((
1291 Dig a hole with diameter > 20CM.
1292 )))
1293
1294 (((
1295 Horizontal insert the probe to the soil and fill the hole for long term measurement.
1296 )))
1297 )))
1298
1299 [[image:1654506665940-119.png]]
1300
1301 (((
1302
1303 )))
1304
1305
1306 == 2.8  ​Firmware Change Log ==
1307
1308
1309 Download URL & Firmware Change log
1310
1311 (((
1312 [[https:~~/~~/www.dragino.com/downloads/index.php?dir=NB-IoT/NSE01/firmware/>>https://www.dragino.com/downloads/index.php?dir=NB-IoT/NSE01/firmware/]]
1313 )))
1314
1315
1316 Upgrade Instruction: [[Upgrade_Firmware>>||anchor="H5.1200BHowtoUpgradeFirmware"]]
1317
1318
1319
1320 == 2.9  ​Battery Analysis ==
1321
1322 === 2.9.1  ​Battery Type ===
1323
1324
1325 (((
1326 The NSE01 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.
1327 )))
1328
1329
1330 (((
1331 The battery is designed to last for several years depends on the actually use environment and update interval. 
1332 )))
1333
1334
1335 (((
1336 The battery related documents as below:
1337 )))
1338
1339 * [[Battery Dimension>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1340 * [[Lithium-Thionyl Chloride Battery datasheet>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1341 * [[Lithium-ion Battery-Capacitor datasheet>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1342
1343 (((
1344 [[image:image-20220708140453-6.png]]
1345 )))
1346
1347
1348
1349 === 2.9.2  Power consumption Analyze ===
1350
1351 (((
1352 Dragino battery powered product are all runs in Low Power mode. We have an update battery calculator which base on the measurement of the real device. User can use this calculator to check the battery life and calculate the battery life if want to use different transmit interval.
1353 )))
1354
1355
1356 (((
1357 Instruction to use as below:
1358 )))
1359
1360 (((
1361 (% style="color:blue" %)**Step 1:  **(%%)Downlink the up-to-date DRAGINO_Battery_Life_Prediction_Table.xlsx from: [[https:~~/~~/www.dragino.com/downloads/index.php?dir=LoRa_End_Node/Battery_Analyze/>>url:https://www.dragino.com/downloads/index.php?dir=LoRa_End_Node/Battery_Analyze/]]
1362 )))
1363
1364
1365 (((
1366 (% style="color:blue" %)**Step 2: **(%%) Open it and choose
1367 )))
1368
1369 * (((
1370 Product Model
1371 )))
1372 * (((
1373 Uplink Interval
1374 )))
1375 * (((
1376 Working Mode
1377 )))
1378
1379 (((
1380 And the Life expectation in difference case will be shown on the right.
1381 )))
1382
1383 [[image:image-20220708141352-7.jpeg]]
1384
1385
1386
1387 === 2.9.3  ​Battery Note ===
1388
1389 (((
1390 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.
1391 )))
1392
1393
1394
1395 === 2.9.4  Replace the battery ===
1396
1397 (((
1398 The default battery pack of NSE01 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).
1399 )))
1400
1401
1402
1403 = 3. ​ Access NB-IoT Module =
1404
1405 (((
1406 Users can directly access the AT command set of the NB-IoT module.
1407 )))
1408
1409 (((
1410 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/]] 
1411 )))
1412
1413 [[image:1657261278785-153.png]]
1414
1415
1416
1417 = 4.  Using the AT Commands =
1418
1419 == 4.1  Access AT Commands ==
1420
1421 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/]]
1422
1423
1424 AT+<CMD>?  : Help on <CMD>
1425
1426 AT+<CMD>         : Run <CMD>
1427
1428 AT+<CMD>=<value> : Set the value
1429
1430 AT+<CMD>=?  : Get the value
1431
1432
1433 (% style="color:#037691" %)**General Commands**(%%)      
1434
1435 AT  : Attention       
1436
1437 AT?  : Short Help     
1438
1439 ATZ  : MCU Reset    
1440
1441 AT+TDC  : Application Data Transmission Interval
1442
1443 AT+CFG  : Print all configurations
1444
1445 AT+CFGMOD           : Working mode selection
1446
1447 AT+INTMOD            : Set the trigger interrupt mode
1448
1449 AT+5VT  : Set extend the time of 5V power  
1450
1451 AT+PRO  : Choose agreement
1452
1453 AT+WEIGRE  : Get weight or set weight to 0
1454
1455 AT+WEIGAP  : Get or Set the GapValue of weight
1456
1457 AT+RXDL  : Extend the sending and receiving time
1458
1459 AT+CNTFAC  : Get or set counting parameters
1460
1461 AT+SERVADDR  : Server Address
1462
1463
1464 (% style="color:#037691" %)**COAP Management**      
1465
1466 AT+URI            : Resource parameters
1467
1468
1469 (% style="color:#037691" %)**UDP Management**
1470
1471 AT+CFM          : Upload confirmation mode (only valid for UDP)
1472
1473
1474 (% style="color:#037691" %)**MQTT Management**
1475
1476 AT+CLIENT               : Get or Set MQTT client
1477
1478 AT+UNAME  : Get or Set MQTT Username
1479
1480 AT+PWD                  : Get or Set MQTT password
1481
1482 AT+PUBTOPIC  : Get or Set MQTT publish topic
1483
1484 AT+SUBTOPIC  : Get or Set MQTT subscription topic
1485
1486
1487 (% style="color:#037691" %)**Information**          
1488
1489 AT+FDR  : Factory Data Reset
1490
1491 AT+PWORD  : Serial Access Password
1492
1493
1494
1495 = ​5.  FAQ =
1496
1497 == 5.1 ​ How to Upgrade Firmware ==
1498
1499
1500 (((
1501 User can upgrade the firmware for 1) bug fix, 2) new feature release.
1502 )))
1503
1504 (((
1505 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]]
1506 )))
1507
1508 (((
1509 (% style="color:red" %)Notice, NSE01 and LSE01 share the same mother board. They use the same connection and method to update.
1510 )))
1511
1512
1513
1514 == 5.2  Can I calibrate NSE01 to different soil types? ==
1515
1516 (((
1517 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]].
1518 )))
1519
1520
1521 = 6.  Trouble Shooting =
1522
1523 == 6.1  ​Connection problem when uploading firmware ==
1524
1525
1526 (((
1527 **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]]
1528 )))
1529
1530 (% class="wikigeneratedid" %)
1531 (((
1532
1533 )))
1534
1535
1536 == 6.2  AT Command input doesn't work ==
1537
1538 (((
1539 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.
1540
1541
1542 )))
1543
1544
1545 = 7. ​ Order Info =
1546
1547
1548 Part Number**:** (% style="color:#4f81bd" %)**NSE01**
1549
1550
1551 (% class="wikigeneratedid" %)
1552 (((
1553
1554 )))
1555
1556 = 8.  Packing Info =
1557
1558 (((
1559
1560
1561 (% style="color:#037691" %)**Package Includes**:
1562
1563 * NSE01 NB-IoT Soil Moisture & EC Sensor x 1
1564 * External antenna x 1
1565 )))
1566
1567 (((
1568
1569
1570 (% style="color:#037691" %)**Dimension and weight**:
1571
1572 * Size: 195 x 125 x 55 mm
1573 * Weight:   420g
1574 )))
1575
1576 (((
1577
1578
1579
1580
1581 )))
1582
1583 = 9.  Support =
1584
1585 * 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.
1586 * 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