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
828 === 2.3.6 CFGMOD~=6 (Counting mode) ===
829
830
831 In this mode, uplink payload includes in total 20 bytes, ((% style="color:red" %)Note: Time stamp field are added since firmware version v120(%%))
832
833
834 (% border="1" cellspacing="8" style="background-color:#ffffcc; color:green; width:638px" %)
835 |=(% 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**
836 |(% 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" %)(((
837 MOD
838
839 0x06
840 )))|(% style="width:98px" %)Pulse count|(% style="width:92px" %)[[Timestamp>>||anchor="H"]]
841
842 If the cache upload mechanism is turned on, you will receive the payload shown in the figure below.
843
844
845 (% border="1" style="background-color:#ffffcc; color:green; width:518px" %)
846 |(% 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)**
847
848 (% style="color:red" %)**NOTE:**
849
850 (% style="color:red" %)**1.    Only up to 10 sets of latest data will be cached.**
851
852 (% style="color:red" %)**2.    Theoretically, the maximum upload bytes are 160.**
853
854
855 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NB sensor uplink data.
856
857
858 [[image:1657528693361-320.png]]
859
860 The payload is ASCII string, representative same HEX: 0x72403162907100780cc714060000000260dc03e5 where:
861
862 * Device ID: 0x724031629071 = 724031629071
863 * Version: 0x0078=120=1.2.0
864
865 * BAT: 0x0cc7 =3271mV =3.271V
866 * Singal: 0x14 = 20
867 * Model: 0x06 = 6
868 * Pulse count: 0x00000002= 2
869 * Timestamp: 0x60dc03e5 = 1,625,031,653= 2021-06-30 13:40:53
870
871 (% border="1" cellspacing="10" style="background-color:#ffffcc; color:green; width:510px" %)
872 |=(% style="width: 60px;" %)(((
873 **Size(bytes)**
874 )))|=(% 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**
875 |(% 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"]]
876
877 (((
878
879 )))
880
881
882 == 2.4  Payload Explanation and Sensor Interface ==
883
884
885 === 2.4.1  Device ID ===
886
887 (((
888 By default, the Device ID equal to the last 6 bytes of IMEI.
889 )))
890
891 (((
892 User can use (% style="color:blue" %)**AT+DEUI**(%%) to set Device ID
893 )))
894
895 (((
896 **Example:**
897 )))
898
899 (((
900 AT+DEUI=A84041F15612
901 )))
902
903 (((
904 The Device ID is stored in a none-erase area, Upgrade the firmware or run AT+FDR won't erase Device ID.
905 )))
906
907
908
909 === 2.4.2  Version Info ===
910
911 (((
912 (((
913 These bytes include the hardware and software version.
914 )))
915
916 (((
917 Higher byte: Specify hardware version: always 0x01 for NBSN95
918 )))
919
920 (((
921 Lower byte: Specify the software version: 0x6E=110, means firmware version 110
922 )))
923
924
925 (((
926 For example: 0x01 6E: this device is NBSN95 with firmware version 110.
927 )))
928 )))
929
930
931
932 === 2.4.3  Battery Info ===
933
934 (((
935 Ex1: 0x0B45 = 2885mV
936 )))
937
938 (((
939 Ex2: 0x0B49 = 2889mV
940 )))
941
942
943
944 === 2.4.4  Signal Strength ===
945
946 (((
947 NB-IoT Network signal Strength.
948 )))
949
950 (((
951 **Ex1: 0x1d = 29**
952 )))
953
954 (((
955 (% style="color:blue" %)**0**(%%)  -113dBm or less
956 )))
957
958 (((
959 (% style="color:blue" %)**1**(%%)  -111dBm
960 )))
961
962 (((
963 (% style="color:blue" %)**2...30**(%%) -109dBm... -53dBm
964 )))
965
966 (((
967 (% style="color:blue" %)**31**  (%%) -51dBm or greater
968 )))
969
970 (((
971 (% style="color:blue" %)**99**   (%%) Not known or not detectable
972 )))
973
974
975
976 === 2.4.5  Temperature (DS18B20) ===
977
978 If there is a DS18B20 connected to PB3 pin. The temperature will be uploaded in the payload.
979
980 More DS18B20 can check the [[3 DS18B20 mode>>path:#ds18b20_3]]
981
982
983 **Connection for one DS18B20**
984
985 [[image:image-20220711164131-3.jpeg]]
986
987
988 **Example**:
989
990 If payload is: 0x0105:  (0105 & FC00 == 0), temp = 0x0105 /10 = 26.1 degree
991
992 If payload is: 0xFF3F:  (FF3F & FC00 == 1) , temp = (0xFF3F - 65536)/10 = -19.3 degree.
993
994
995
996 === 2.4.6  Digital Input ===
997
998 The digital input is for pin PA12,
999
1000 * When PA12 is high, the bit2 of this byte is 1.
1001 * When PA12 is low, the bit2 of this byte is 0.
1002
1003 (((
1004
1005 )))
1006
1007
1008
1009 === 2.4.7  Analogue Digital Converter (ADC) ===
1010
1011 The ADC monitors the voltage on the (% style="color:blue" %)**PA0**(%%) line, in mV. Max value is from 0v to BAT voltage
1012
1013
1014 Ex: 0x021F = 543mv,
1015
1016
1017 (% style="color:blue" %)**Example1:**(%%)  Reading a Liquid Level Sensor (Read a resistance value):
1018
1019 [[image:image-20220711164848-12.png]]
1020
1021
1022
1023 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.
1024
1025
1026 (% style="color:blue" %)Steps:
1027
1028 1. Solder a 10K resistor between PA0 and VCC.
1029 1. Screw liquid level sensor's two pins to PA0 and PB4.
1030
1031 The equipment circuit is as below:
1032
1033 [[image:image-20220711164942-13.png]]
1034
1035
1036
1037 According to above diagram:
1038
1039 ([[image:image-20220711164435-6.png]]
1040
1041 So
1042
1043 [[image:image-20220711164435-7.png]]
1044
1045 [[image:image-20220711164435-8.png]] is the reading of ADC. So if ADC=0x05DC=0.9 v and VCC (BAT) is 2.9v
1046
1047
1048 The [[image:image-20220711164435-9.png]] 4.5K ohm
1049
1050 Since the buoy is linear resistance from 10 ~~ 70cm.
1051
1052
1053 The position of buoy is [[image:image-20220711164435-10.png]] , from the bottom of buoy
1054
1055 (((
1056
1057 )))
1058
1059 (((
1060
1061 )))
1062
1063 === 2.4.8  Digital Interrupt ===
1064
1065
1066 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.
1067
1068
1069 **Example to use with door sensor**
1070
1071 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.
1072
1073 [[image:image-20220711165615-14.png]]
1074
1075 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.
1076
1077
1078 Below is the installation example:
1079
1080 Fix one piece of the magnetic sensor to the door and connect the two pins to NBSN95 as follows:
1081
1082 * One pin to NBSN95's PB14 pin
1083 * The other pin to NBSN95's VCC pin
1084
1085 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.
1086
1087
1088 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.
1089
1090
1091 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.
1092
1093
1094 [[image:image-20220711165615-15.png]]
1095
1096
1097 The above photos shows the two parts of the magnetic switch fitted to a door.
1098
1099
1100 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.
1101
1102
1103 The command is:
1104
1105 (% 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/]]).
1106
1107
1108 Below shows some screen captures in TTN:
1109
1110
1111 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:
1112
1113
1114 * When PB14 is high, the bit8 of this byte is 1.
1115 * When PB14 is low, the bit8 of this byte is 0.
1116
1117
1118
1119
1120 === 2.4.9  ​+5V Output ===
1121
1122 (((
1123 NSE01 will enable +5V output before all sampling and disable the +5v after all sampling. 
1124 )))
1125
1126
1127 (((
1128 The 5V output time can be controlled by AT Command.
1129 )))
1130
1131 (((
1132 (% style="color:blue" %)**AT+5VT=1000**
1133 )))
1134
1135 (((
1136 Means set 5V valid time to have 1000ms. So the real 5V output will actually have 1000ms + sampling time for other sensors.
1137 )))
1138
1139
1140
1141 == 2.5  Downlink Payload ==
1142
1143 By default, NSE01 prints the downlink payload to console port.
1144
1145 [[image:image-20220708133731-5.png]]
1146
1147
1148 (((
1149 (% style="color:blue" %)**Examples:**
1150 )))
1151
1152 (((
1153
1154 )))
1155
1156 * (((
1157 (% style="color:blue" %)**Set TDC**
1158 )))
1159
1160 (((
1161 If the payload=0100003C, it means set the END Node's TDC to 0x00003C=60(S), while type code is 01.
1162 )))
1163
1164 (((
1165 Payload:    01 00 00 1E    TDC=30S
1166 )))
1167
1168 (((
1169 Payload:    01 00 00 3C    TDC=60S
1170 )))
1171
1172 (((
1173
1174 )))
1175
1176 * (((
1177 (% style="color:blue" %)**Reset**
1178 )))
1179
1180 (((
1181 If payload = 0x04FF, it will reset the NSE01
1182 )))
1183
1184
1185 * (% style="color:blue" %)**INTMOD**
1186
1187 (((
1188 Downlink Payload: 06000003, Set AT+INTMOD=3
1189 )))
1190
1191
1192
1193 == 2.6  ​LED Indicator ==
1194
1195 (((
1196 The NSE01 has an internal LED which is to show the status of different state.
1197
1198
1199 * 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)
1200 * Then the LED will be on for 1 second means device is boot normally.
1201 * After NSE01 join NB-IoT network. The LED will be ON for 3 seconds.
1202 * For each uplink probe, LED will be on for 500ms.
1203 )))
1204
1205
1206
1207
1208 == 2.7  Installation in Soil ==
1209
1210 __**Measurement the soil surface**__
1211
1212 (((
1213 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]]
1214 )))
1215
1216 [[image:1657259653666-883.png]] ​
1217
1218
1219 (((
1220
1221
1222 (((
1223 Dig a hole with diameter > 20CM.
1224 )))
1225
1226 (((
1227 Horizontal insert the probe to the soil and fill the hole for long term measurement.
1228 )))
1229 )))
1230
1231 [[image:1654506665940-119.png]]
1232
1233 (((
1234
1235 )))
1236
1237
1238 == 2.8  ​Firmware Change Log ==
1239
1240
1241 Download URL & Firmware Change log
1242
1243 (((
1244 [[https:~~/~~/www.dragino.com/downloads/index.php?dir=NB-IoT/NSE01/firmware/>>https://www.dragino.com/downloads/index.php?dir=NB-IoT/NSE01/firmware/]]
1245 )))
1246
1247
1248 Upgrade Instruction: [[Upgrade_Firmware>>||anchor="H5.1200BHowtoUpgradeFirmware"]]
1249
1250
1251
1252 == 2.9  ​Battery Analysis ==
1253
1254 === 2.9.1  ​Battery Type ===
1255
1256
1257 (((
1258 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.
1259 )))
1260
1261
1262 (((
1263 The battery is designed to last for several years depends on the actually use environment and update interval. 
1264 )))
1265
1266
1267 (((
1268 The battery related documents as below:
1269 )))
1270
1271 * [[Battery Dimension>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1272 * [[Lithium-Thionyl Chloride Battery datasheet>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1273 * [[Lithium-ion Battery-Capacitor datasheet>>http://www.dragino.com/downloads/index.php?dir=datasheet/Battery/ER26500/]]
1274
1275 (((
1276 [[image:image-20220708140453-6.png]]
1277 )))
1278
1279
1280
1281 === 2.9.2  Power consumption Analyze ===
1282
1283 (((
1284 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.
1285 )))
1286
1287
1288 (((
1289 Instruction to use as below:
1290 )))
1291
1292 (((
1293 (% 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/]]
1294 )))
1295
1296
1297 (((
1298 (% style="color:blue" %)**Step 2: **(%%) Open it and choose
1299 )))
1300
1301 * (((
1302 Product Model
1303 )))
1304 * (((
1305 Uplink Interval
1306 )))
1307 * (((
1308 Working Mode
1309 )))
1310
1311 (((
1312 And the Life expectation in difference case will be shown on the right.
1313 )))
1314
1315 [[image:image-20220708141352-7.jpeg]]
1316
1317
1318
1319 === 2.9.3  ​Battery Note ===
1320
1321 (((
1322 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.
1323 )))
1324
1325
1326
1327 === 2.9.4  Replace the battery ===
1328
1329 (((
1330 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).
1331 )))
1332
1333
1334
1335 = 3. ​ Access NB-IoT Module =
1336
1337 (((
1338 Users can directly access the AT command set of the NB-IoT module.
1339 )))
1340
1341 (((
1342 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/]] 
1343 )))
1344
1345 [[image:1657261278785-153.png]]
1346
1347
1348
1349 = 4.  Using the AT Commands =
1350
1351 == 4.1  Access AT Commands ==
1352
1353 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/]]
1354
1355
1356 AT+<CMD>?  : Help on <CMD>
1357
1358 AT+<CMD>         : Run <CMD>
1359
1360 AT+<CMD>=<value> : Set the value
1361
1362 AT+<CMD>=?  : Get the value
1363
1364
1365 (% style="color:#037691" %)**General Commands**(%%)      
1366
1367 AT  : Attention       
1368
1369 AT?  : Short Help     
1370
1371 ATZ  : MCU Reset    
1372
1373 AT+TDC  : Application Data Transmission Interval
1374
1375 AT+CFG  : Print all configurations
1376
1377 AT+CFGMOD           : Working mode selection
1378
1379 AT+INTMOD            : Set the trigger interrupt mode
1380
1381 AT+5VT  : Set extend the time of 5V power  
1382
1383 AT+PRO  : Choose agreement
1384
1385 AT+WEIGRE  : Get weight or set weight to 0
1386
1387 AT+WEIGAP  : Get or Set the GapValue of weight
1388
1389 AT+RXDL  : Extend the sending and receiving time
1390
1391 AT+CNTFAC  : Get or set counting parameters
1392
1393 AT+SERVADDR  : Server Address
1394
1395
1396 (% style="color:#037691" %)**COAP Management**      
1397
1398 AT+URI            : Resource parameters
1399
1400
1401 (% style="color:#037691" %)**UDP Management**
1402
1403 AT+CFM          : Upload confirmation mode (only valid for UDP)
1404
1405
1406 (% style="color:#037691" %)**MQTT Management**
1407
1408 AT+CLIENT               : Get or Set MQTT client
1409
1410 AT+UNAME  : Get or Set MQTT Username
1411
1412 AT+PWD                  : Get or Set MQTT password
1413
1414 AT+PUBTOPIC  : Get or Set MQTT publish topic
1415
1416 AT+SUBTOPIC  : Get or Set MQTT subscription topic
1417
1418
1419 (% style="color:#037691" %)**Information**          
1420
1421 AT+FDR  : Factory Data Reset
1422
1423 AT+PWORD  : Serial Access Password
1424
1425
1426
1427 = ​5.  FAQ =
1428
1429 == 5.1 ​ How to Upgrade Firmware ==
1430
1431
1432 (((
1433 User can upgrade the firmware for 1) bug fix, 2) new feature release.
1434 )))
1435
1436 (((
1437 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]]
1438 )))
1439
1440 (((
1441 (% style="color:red" %)Notice, NSE01 and LSE01 share the same mother board. They use the same connection and method to update.
1442 )))
1443
1444
1445
1446 == 5.2  Can I calibrate NSE01 to different soil types? ==
1447
1448 (((
1449 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]].
1450 )))
1451
1452
1453 = 6.  Trouble Shooting =
1454
1455 == 6.1  ​Connection problem when uploading firmware ==
1456
1457
1458 (((
1459 **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]]
1460 )))
1461
1462 (% class="wikigeneratedid" %)
1463 (((
1464
1465 )))
1466
1467
1468 == 6.2  AT Command input doesn't work ==
1469
1470 (((
1471 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.
1472
1473
1474 )))
1475
1476
1477 = 7. ​ Order Info =
1478
1479
1480 Part Number**:** (% style="color:#4f81bd" %)**NSE01**
1481
1482
1483 (% class="wikigeneratedid" %)
1484 (((
1485
1486 )))
1487
1488 = 8.  Packing Info =
1489
1490 (((
1491
1492
1493 (% style="color:#037691" %)**Package Includes**:
1494
1495 * NSE01 NB-IoT Soil Moisture & EC Sensor x 1
1496 * External antenna x 1
1497 )))
1498
1499 (((
1500
1501
1502 (% style="color:#037691" %)**Dimension and weight**:
1503
1504 * Size: 195 x 125 x 55 mm
1505 * Weight:   420g
1506 )))
1507
1508 (((
1509
1510
1511
1512
1513 )))
1514
1515 = 9.  Support =
1516
1517 * 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.
1518 * 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