Wiki source code of NLMS01-NB-IoT Leaf Moisture Sensor User Manual
Last modified by Mengting Qiu on 2024/04/02 16:54
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
38.23 | 1 | |
2 | |||
![]() |
28.1 | 3 | (% style="text-align:center" %) |
4 | [[image:image-20220907171221-1.jpeg]] | ||
![]() |
25.1 | 5 | |
![]() |
28.1 | 6 | |
![]() |
25.1 | 7 | |
![]() |
38.23 | 8 | |
9 | |||
10 | |||
11 | |||
12 | |||
![]() |
28.1 | 13 | {{toc/}} |
![]() |
25.1 | 14 | |
![]() |
28.1 | 15 | |
16 | |||
![]() |
32.2 | 17 | = 1. Introduction = |
![]() |
25.1 | 18 | |
![]() |
32.2 | 19 | == 1.1 What is NLMS01 Leaf Moisture Sensor == |
![]() |
26.1 | 20 | |
![]() |
25.1 | 21 | |
![]() |
38.6 | 22 | ((( |
![]() |
32.2 | 23 | The Dragino NLMS01 is a (% style="color:blue" %)**NB-IOT Leaf Moisture Sensor**(%%) for IoT of Agriculture. It is designed to measure the leaf moisture and temperature, so to send to the platform to analyze the leaf status such as : watering, moisturizing, dew, frozen. The probe is IP67 waterproof. |
![]() |
25.1 | 24 | |
![]() |
32.2 | 25 | NLMS01 detects leaf's(% style="color:blue" %)** moisture and temperature use FDR method**(%%), it senses the dielectric constant cause by liquid over the leaf surface, and cover the value to leaf moisture. The probe is design in a leaf shape to best simulate the real leaf characterizes. The probe has as density as 15 leaf vein lines per centimeter which make it can senses small drop and more accuracy. |
26 | |||
![]() |
25.1 | 27 | 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. |
![]() |
38.9 | 28 | |
29 | NLMS01 supports different uplink methods include (% style="color:blue" %)**TCP,MQTT,UDP and CoAP **(%%)for different application requirement. | ||
30 | |||
31 | NLMS01 is powered by (% style="color:blue" %)**8500mAh Li-SOCI2 battery**(%%), It is designed for long term use up to 5 years. (Actually Battery life depends on the use environment, update period & uplink method). | ||
32 | |||
33 | To use NLMS01, user needs to check if there is NB-IoT coverage in local area and with the bands NLMS01 supports. If the local operate support it, user needs to get a (% style="color:blue" %)**NB-IoT SIM card**(%%) from local operator and install NLMS01 to get NB-IoT network connection. | ||
![]() |
38.6 | 34 | ))) |
![]() |
25.1 | 35 | |
![]() |
32.2 | 36 | |
![]() |
25.1 | 37 | [[image:image-20220907171221-2.png]] |
38 | |||
![]() |
32.2 | 39 | |
![]() |
25.1 | 40 | [[image:image-20220907171221-3.png]] |
41 | |||
42 | |||
![]() |
32.2 | 43 | == 1.2 Features == |
![]() |
25.1 | 44 | |
![]() |
32.2 | 45 | |
46 | * NB-IoT Bands: B1/B3/B8/B5/B20/B28 @H-FDD | ||
47 | * Monitor Leaf moisture | ||
48 | * Monitor Leaf temperature | ||
49 | * Moisture and Temperature alarm function | ||
50 | * Monitor Battery Level | ||
51 | * Uplink on periodically | ||
52 | * Downlink to change configure | ||
53 | * IP66 Waterproof Enclosure | ||
54 | * IP67 rate for the Sensor Probe | ||
55 | * Ultra-Low Power consumption | ||
56 | * AT Commands to change parameters | ||
57 | * Micro SIM card slot for NB-IoT SIM | ||
58 | * 8500mAh Battery for long term use | ||
59 | |||
60 | ((( | ||
61 | |||
62 | |||
63 | |||
![]() |
26.1 | 64 | ))) |
![]() |
25.1 | 65 | |
![]() |
26.1 | 66 | == 1.3 Specification == |
![]() |
25.1 | 67 | |
68 | |||
![]() |
32.2 | 69 | (% style="color:#037691" %)**Common DC Characteristics:** |
70 | |||
![]() |
25.1 | 71 | * Supply Voltage: 2.1v ~~ 3.6v |
72 | * Operating Temperature: -40 ~~ 85°C | ||
73 | |||
![]() |
32.2 | 74 | (% style="color:#037691" %)**NB-IoT Spec:** |
75 | |||
![]() |
38.13 | 76 | * B1 @H-FDD: 2100MHz |
77 | * B3 @H-FDD: 1800MHz | ||
78 | * B8 @H-FDD: 900MHz | ||
79 | * B5 @H-FDD: 850MHz | ||
80 | * B20 @H-FDD: 800MHz | ||
81 | * B28 @H-FDD: 700MHz | ||
![]() |
25.1 | 82 | |
![]() |
33.2 | 83 | == 1.4 Probe Specification == |
![]() |
32.2 | 84 | |
85 | |||
![]() |
33.2 | 86 | (% style="color:#037691" %)**Leaf Moisture: percentage of water drop over total leaf surface** |
![]() |
25.1 | 87 | |
88 | * Range 0-100% | ||
89 | * Resolution: 0.1% | ||
90 | * Accuracy: ±3%(0-50%);±6%(>50%) | ||
91 | * IP67 Protection | ||
92 | * Length: 3.5 meters | ||
93 | |||
![]() |
33.2 | 94 | (% style="color:#037691" %)**Leaf Temperature:** |
![]() |
25.1 | 95 | |
96 | * Range -50℃~80℃ | ||
97 | * Resolution: 0.1℃ | ||
98 | * Accuracy: <±0.5℃(-10℃~70℃),<±1.0℃ (others) | ||
99 | * IP67 Protection | ||
100 | * Length: 3.5 meters | ||
101 | |||
![]() |
33.2 | 102 | == 1.5 Applications == |
![]() |
25.1 | 103 | |
![]() |
33.2 | 104 | |
![]() |
25.1 | 105 | * Smart Agriculture |
106 | |||
![]() |
33.2 | 107 | == 1.6 Pin mapping and power on == |
![]() |
25.1 | 108 | |
![]() |
33.2 | 109 | |
![]() |
25.1 | 110 | [[image:image-20220907171221-4.png]] |
111 | |||
112 | **~ ** | ||
113 | |||
![]() |
26.1 | 114 | = 2. Use NLMS01 to communicate with IoT Server = |
![]() |
25.1 | 115 | |
![]() |
26.1 | 116 | == 2.1 How it works == |
![]() |
25.1 | 117 | |
![]() |
33.2 | 118 | |
![]() |
25.1 | 119 | The NLMS01 is equipped with a NB-IoT module, the pre-loaded firmware in NLMS01 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 NLMS01. |
120 | |||
121 | The diagram below shows the working flow in default firmware of NLMS01: | ||
122 | |||
![]() |
33.2 | 123 | |
![]() |
25.1 | 124 | [[image:image-20220907171221-5.png]] |
125 | |||
![]() |
33.2 | 126 | |
![]() |
27.1 | 127 | == 2.2 Configure the NLMS01 == |
![]() |
25.1 | 128 | |
![]() |
27.1 | 129 | === 2.2.1 Test Requirement === |
![]() |
25.1 | 130 | |
![]() |
33.2 | 131 | |
![]() |
25.1 | 132 | To use NLMS01 in your city, make sure meet below requirements: |
133 | |||
134 | * Your local operator has already distributed a NB-IoT Network there. | ||
135 | * The local NB-IoT network used the band that NLMS01 supports. | ||
136 | * Your operator is able to distribute the data received in their NB-IoT network to your IoT server. | ||
137 | |||
![]() |
33.2 | 138 | Below figure shows our testing structure. Here we have NB-IoT network coverage by China Mobile, the band they use is B8. The NLMS01 will use(% style="color:#037691" %)** CoAP(120.24.4.116:5683) **(%%)or raw(% style="color:#037691" %)** UDP(120.24.4.116:5601)** or(%%) (% style="color:#037691" %)**MQTT(120.24.4.116:1883)**(%%)or (% style="color:#037691" %)**TCP(120.24.4.116:5600)**(%%)protocol to send data to the test server |
![]() |
25.1 | 139 | |
![]() |
33.2 | 140 | |
![]() |
25.1 | 141 | [[image:image-20220907171221-6.png]] |
142 | |||
![]() |
33.2 | 143 | |
![]() |
27.1 | 144 | === 2.2.2 Insert SIM card === |
![]() |
25.1 | 145 | |
![]() |
33.2 | 146 | |
![]() |
25.1 | 147 | Insert the NB-IoT Card get from your provider. |
148 | |||
149 | User need to take out the NB-IoT module and insert the SIM card like below: | ||
150 | |||
![]() |
33.2 | 151 | |
![]() |
25.1 | 152 | [[image:image-20220907171221-7.png]] |
153 | |||
![]() |
33.2 | 154 | |
![]() |
27.1 | 155 | === 2.2.3 Connect USB – TTL to NLMS01 to configure it === |
![]() |
25.1 | 156 | |
157 | |||
![]() |
33.2 | 158 | User need to configure NLMS01 via serial port to set the (% style="color:#037691" %)**Server Address** / **Uplink Topic** (%%)to define where and how-to uplink packets. NLMS01 support AT Commands, user can use a USB to TTL adapter to connect to NLMS01 and use AT Commands to configure it, as below. |
![]() |
25.1 | 159 | |
160 | |||
![]() |
33.2 | 161 | (% style="color:blue" %)**Connection:** |
![]() |
25.1 | 162 | |
![]() |
33.2 | 163 | **~ (% style="background-color:yellow" %)USB TTL GND <~-~-~-~-> GND(%%)** |
![]() |
25.1 | 164 | |
![]() |
33.2 | 165 | **~ (% style="background-color:yellow" %)USB TTL TXD <~-~-~-~-> UART_RXD(%%)** |
166 | |||
167 | **~ (% style="background-color:yellow" %)USB TTL RXD <~-~-~-~-> UART_TXD(%%)** | ||
168 | |||
169 | |||
![]() |
25.1 | 170 | In the PC, use below serial tool settings: |
171 | |||
![]() |
33.2 | 172 | * Baud: (% style="color:green" %)**9600** |
173 | * Data bits:** (% style="color:green" %)8(%%)** | ||
174 | * Stop bits: (% style="color:green" %)**1** | ||
175 | * Parity: (% style="color:green" %)**None** | ||
176 | * Flow Control: (% style="color:green" %)**None** | ||
![]() |
25.1 | 177 | |
![]() |
33.2 | 178 | Make sure the switch is in FLASH position, then power on device by connecting the jumper on NLMS01. NLMS01 will output system info once power on as below, we can enter the (% style="color:green" %)**password: 12345678**(%%) to access AT Command input. |
![]() |
25.1 | 179 | |
![]() |
33.2 | 180 | [[image:image-20220913090720-1.png]] |
![]() |
25.1 | 181 | |
182 | |||
![]() |
33.2 | 183 | (% style="color:red" %)**Note: the valid AT Commands can be found at: **(%%)[[**https:~~/~~/www.dropbox.com/sh/351dwor6joz8nwh/AADn1BQaAAxLF_QMyU8NkW47a?dl=0**>>url:https://www.dropbox.com/sh/351dwor6joz8nwh/AADn1BQaAAxLF_QMyU8NkW47a?dl=0]] |
184 | |||
185 | |||
![]() |
27.1 | 186 | === 2.2.4 Use CoAP protocol to uplink data === |
![]() |
25.1 | 187 | |
188 | |||
![]() |
33.2 | 189 | (% 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/**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Set%20up%20CoAP%20Server/]] |
![]() |
25.1 | 190 | |
191 | |||
![]() |
33.2 | 192 | (% style="color:blue" %)**Use below commands:** |
193 | |||
194 | * (% style="color:#037691" %)**AT+PRO=1** (%%) ~/~/ Set to use CoAP protocol to uplink | ||
195 | * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5683 ** (%%) ~/~/ to set CoAP server address and port | ||
196 | * (% style="color:#037691" %)**AT+URI=5,11,"mqtt",11,"coap",12,"0",15,"c=text1",23,"0" ** (%%) ~/~/ Set COAP resource path | ||
197 | |||
![]() |
25.1 | 198 | For parameter description, please refer to AT command set |
199 | |||
200 | [[image:image-20220907171221-9.png]] | ||
201 | |||
202 | |||
![]() |
33.2 | 203 | After configure the server address and (% style="color:#037691" %)**reset the device**(%%) (via AT+ATZ ), NLMS01 will start to uplink sensor values to CoAP server. |
204 | |||
![]() |
25.1 | 205 | [[image:image-20220907171221-10.png]] |
206 | |||
![]() |
33.2 | 207 | |
![]() |
27.1 | 208 | === 2.2.5 Use UDP protocol to uplink data(Default protocol) === |
![]() |
25.1 | 209 | |
![]() |
33.2 | 210 | |
![]() |
25.1 | 211 | This feature is supported since firmware version v1.0.1 |
212 | |||
![]() |
33.2 | 213 | * (% style="color:#037691" %)**AT+PRO=2 ** (%%) ~/~/ Set to use UDP protocol to uplink |
![]() |
33.4 | 214 | * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5601 ** (%%) ~/~/ to set UDP server address and port |
![]() |
25.1 | 215 | |
216 | [[image:image-20220907171221-11.png]] | ||
217 | |||
![]() |
33.2 | 218 | |
![]() |
25.1 | 219 | [[image:image-20220907171221-12.png]] |
220 | |||
221 | | ||
222 | |||
![]() |
27.1 | 223 | === 2.2.6 Use MQTT protocol to uplink data === |
![]() |
25.1 | 224 | |
![]() |
33.2 | 225 | |
![]() |
25.1 | 226 | This feature is supported since firmware version v110 |
227 | |||
![]() |
33.2 | 228 | * (% style="color:#037691" %)**AT+PRO=3 ** (%%) ~/~/ Set to use MQTT protocol to uplink |
229 | * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,1883 ** (%%) ~/~/ Set MQTT server address and port | ||
230 | * (% style="color:#037691" %)**AT+CLIENT=CLIENT ** (%%) ~/~/ Set up the CLIENT of MQTT | ||
231 | * (% style="color:#037691" %)**AT+UNAME=UNAME **(%%)** **~/~/ Set the username of MQTT | ||
232 | * (% style="color:#037691" %)**AT+PWD=PWD **(%%)** **~/~/ Set the password of MQTT | ||
233 | * (% style="color:#037691" %)**AT+PUBTOPIC=PUB ** (%%) ~/~/ Set the sending topic of MQTT | ||
234 | * (% style="color:#037691" %)**AT+SUBTOPIC=SUB ** (%%) ~/~/ Set the subscription topic of MQTT | ||
![]() |
25.1 | 235 | |
236 | [[image:image-20220907171221-13.png]] | ||
237 | |||
![]() |
33.2 | 238 | |
239 | |||
![]() |
25.1 | 240 | [[image:image-20220907171221-14.png]] |
241 | |||
242 | | ||
243 | |||
244 | 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. | ||
245 | |||
![]() |
33.2 | 246 | |
![]() |
27.1 | 247 | === 2.2.7 Use TCP protocol to uplink data === |
![]() |
25.1 | 248 | |
![]() |
33.2 | 249 | |
![]() |
25.1 | 250 | This feature is supported since firmware version v110 |
251 | |||
![]() |
33.2 | 252 | * (% style="color:#037691" %)**AT+PRO=4 ** (%%) ~/~/ Set to use TCP protocol to uplink |
253 | * (% style="color:#037691" %)**AT+SERVADDR=120.24.4.116,5600 ** (%%) ~/~/ to set TCP server address and port | ||
![]() |
25.1 | 254 | |
255 | [[image:image-20220907171221-15.png]] | ||
256 | |||
![]() |
33.2 | 257 | |
258 | |||
![]() |
25.1 | 259 | [[image:image-20220907171221-16.png]] |
260 | |||
261 | | ||
262 | |||
![]() |
33.2 | 263 | |
![]() |
27.1 | 264 | === 2.2.8 Change Update Interval === |
![]() |
25.1 | 265 | |
![]() |
33.2 | 266 | |
![]() |
25.1 | 267 | User can use below command to change the **uplink interval**. |
268 | |||
![]() |
33.2 | 269 | * (% style="color:#037691" %)**AT+TDC=7200 ** (%%) ~/~/ Set Update Interval to 7200s (2 hour) |
![]() |
25.1 | 270 | |
![]() |
33.2 | 271 | (% style="color:red" %)**NOTE: By default, the device will send an uplink message every 2 hour. Each Uplink Include 8 set of records in this 2 hour (15 minute interval / record).** |
272 | |||
273 | |||
![]() |
26.1 | 274 | == 2.3 Uplink Payload == |
![]() |
25.1 | 275 | |
![]() |
33.2 | 276 | |
![]() |
25.1 | 277 | In this mode, uplink payload includes 87 bytes in total by default. |
278 | |||
279 | Each time the device uploads a data package, 8 sets of recorded data will be attached. Up to 32 sets of recorded data can be uploaded. | ||
280 | |||
![]() |
38.23 | 281 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:517px" %) |
![]() |
38.25 | 282 | |(% style="background-color:#4f81bd; color:white; width:50px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:white; width:40px" %)**8**|(% style="background-color:#4f81bd; color:white; width:20px" %)**2**|(% style="background-color:#4f81bd; color:white; width:20px" %)**2**|(% style="background-color:#4f81bd; color:white; width:50px" %)**1**|(% style="background-color:#4f81bd; color:white; width:30px" %)**1**|(% style="background-color:#4f81bd; color:white; width:40px" %)**1**|(% style="background-color:#4f81bd; color:white; width:40px" %)**2**|(% style="background-color:#4f81bd; color:white; width:50px" %)**2**|(% style="background-color:#4f81bd; color:white; width:50px" %)**4**|(% style="background-color:#4f81bd; color:white; width:50px" %)**2**|(% style="background-color:#4f81bd; color:white; width:40px" %)**2**|(% style="background-color:#4f81bd; color:white; width:37px" %)**4** |
![]() |
38.18 | 283 | |(% style="width:96px" %)Value|(% style="width:82px" %)Device ID|(% style="width:42px" %)Ver|(% style="width:48px" %)BAT|(% style="width:124px" %)Signal Strength|(% style="width:58px" %)MOD|(% style="width:82px" %)Interrupt|(% style="width:113px" %)Leaf moisture|(% style="width:134px" %)Leaf Temperature|(% style="width:100px" %)Time stamp|(% style="width:137px" %)Leaf Temperature|(% style="width:110px" %)Leaf moisture|(% style="width:122px" %)Time stamp ..... |
![]() |
33.2 | 284 | |
![]() |
25.1 | 285 | If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NLMS01 uplink data. |
286 | |||
![]() |
33.2 | 287 | |
![]() |
25.1 | 288 | [[image:image-20220907171221-17.png]] |
289 | |||
![]() |
33.2 | 290 | |
![]() |
25.1 | 291 | The payload is ASCII string, representative same HEX: |
292 | |||
![]() |
33.7 | 293 | **0x (% style="color:red" %)__f868411056754138__ (% style="color:blue" %)__0064 __ (% style="color:green" %)__0c78__ (% style="color:#00b0f0" %)__17__ (% style="color:#7030a0" %)__01__ (% style="color:#d60093" %)__00__ (% style="color:#a14d07" %)__0225 __ (% style="color:#0020b0" %) __010b__ (% style="color:#420042" %)__6315537b__ (% style="color:#663300" %)//__010b0226631550fb__ __010e022663154d77 01110225631549f1 011502246315466b 01190223631542e5 011d022163153f62 011e022163153bde 011e022163153859__//(%%)** |
![]() |
25.1 | 294 | |
![]() |
33.7 | 295 | where: |
296 | |||
![]() |
38.2 | 297 | * (% style="color:#037691" %)**Device ID:**(%%) 0xf868411056754138 = f868411056754138 |
![]() |
25.1 | 298 | |
![]() |
38.2 | 299 | * (% style="color:#037691" %)**Version:**(%%) 0x0064=100=1.0.0 |
300 | |||
![]() |
38.3 | 301 | * (% style="color:#037691" %)**BAT:** (%%)0x0c78 = 3192 mV = 3.192V |
![]() |
38.2 | 302 | |
303 | * (% style="color:#037691" %)**Singal:**(%%) 0x17 = 23 | ||
304 | |||
305 | * (% style="color:#037691" %)**Mod:**(%%) 0x01 = 1 | ||
306 | |||
307 | * (% style="color:#037691" %)**Interrupt:**(%%) 0x00= 0 | ||
308 | |||
309 | * (% style="color:#037691" %)**Leaf moisture:**(%%) 0x0225= 549 = 54.9% | ||
310 | |||
311 | * (% style="color:#037691" %)**Leaf Temperature: **(%%)0x010B =267=26.7 °C | ||
312 | |||
![]() |
38.3 | 313 | * (% style="color:#037691" %)**Time stamp :** (%%)0x6315537b =1662342011 ([[Unix Epoch Time>>https://www.epochconverter.com/]]) |
![]() |
38.2 | 314 | |
315 | * (% style="color:#037691" %)**Leaf Temperature, Leaf moisture,Time stamp : **(%%)010b0226631550fb | ||
316 | |||
317 | * (% style="color:#037691" %)**8 sets of recorded data: **(%%)Leaf Temperature, Leaf moisture,Time stamp : 010e022663154d77,....... | ||
318 | |||
![]() |
26.1 | 319 | == 2.4 Payload Explanation and Sensor Interface == |
![]() |
25.1 | 320 | |
![]() |
27.1 | 321 | === 2.4.1 Device ID === |
![]() |
25.1 | 322 | |
![]() |
33.3 | 323 | |
![]() |
25.1 | 324 | By default, the Device ID equal to the last 15 bits of IMEI. |
325 | |||
![]() |
33.4 | 326 | User can use (% style="color:#037691" %)**AT+DEUI**(%%) to set Device ID |
![]() |
25.1 | 327 | |
![]() |
33.3 | 328 | |
![]() |
33.4 | 329 | (% style="color:blue" %)**Example**: |
![]() |
25.1 | 330 | |
331 | AT+DEUI=868411056754138 | ||
332 | |||
333 | The Device ID is stored in a none-erase area, Upgrade the firmware or run AT+FDR won't erase Device ID. | ||
334 | |||
![]() |
33.3 | 335 | |
![]() |
27.1 | 336 | === 2.4.2 Version Info === |
![]() |
25.1 | 337 | |
![]() |
33.3 | 338 | |
![]() |
25.1 | 339 | Specify the software version: 0x64=100, means firmware version 1.00. |
340 | |||
341 | For example: 0x00 64 : this device is NLMS01 with firmware version 1.0.0. | ||
342 | |||
![]() |
33.3 | 343 | |
![]() |
27.1 | 344 | === 2.4.3 Battery Info === |
![]() |
25.1 | 345 | |
![]() |
33.3 | 346 | |
![]() |
25.1 | 347 | Check the battery voltage for NLMS01. |
348 | |||
349 | Ex1: 0x0B45 = 2885mV | ||
350 | |||
351 | Ex2: 0x0B49 = 2889mV | ||
352 | |||
![]() |
33.3 | 353 | |
![]() |
27.1 | 354 | === 2.4.4 Signal Strength === |
![]() |
25.1 | 355 | |
![]() |
33.3 | 356 | |
![]() |
25.1 | 357 | NB-IoT Network signal Strength. |
358 | |||
359 | |||
![]() |
33.4 | 360 | (% style="color:blue" %)**Ex1: 0x1d = 29** |
361 | |||
![]() |
25.1 | 362 | **0** -113dBm or less |
363 | |||
364 | **1** -111dBm | ||
365 | |||
366 | **2...30** -109dBm... -53dBm | ||
367 | |||
368 | **31** -51dBm or greater | ||
369 | |||
370 | **99** Not known or not detectable | ||
371 | |||
![]() |
33.3 | 372 | |
![]() |
27.1 | 373 | === 2.4.5 Leaf moisture === |
![]() |
25.1 | 374 | |
![]() |
33.3 | 375 | |
![]() |
33.4 | 376 | Get the moisture of the (% style="color:#037691" %)**Leaf**(%%). The value range of the register is 300-1000(Decimal), divide this value by 100 to get the percentage of moisture in the Leaf. |
![]() |
25.1 | 377 | |
![]() |
33.4 | 378 | For example, if the data you get from the register is (% style="color:#037691" %)**__0x05 0xDC__**(%%), the moisture content in the (% style="color:#037691" %)**Leaf**(%%) is |
![]() |
25.1 | 379 | |
![]() |
33.4 | 380 | (% style="color:blue" %)**0229(H) = 549(D) /100 = 54.9.** |
![]() |
25.1 | 381 | |
![]() |
33.3 | 382 | |
![]() |
27.1 | 383 | === 2.4.6 Leaf Temperature === |
![]() |
25.1 | 384 | |
![]() |
33.3 | 385 | |
![]() |
33.4 | 386 | Get the temperature in the Leaf. The value range of the register is -4000 - +800(Decimal), divide this value by 100 to get the temperature in the Leaf. For example, if the data you get from the register is (% style="color:#037691" %)**__0x09 0xEC__**(%%), the temperature content in the (% style="color:#037691" %)**Leaf **(%%)is |
![]() |
25.1 | 387 | |
![]() |
33.4 | 388 | (% style="color:blue" %)**Example**: |
![]() |
25.1 | 389 | |
![]() |
33.4 | 390 | If payload is **0105H**: ((0x0105 & 0x8000)>>15 === 0),temp = 0105(H)/10 = 26.1 °C |
![]() |
25.1 | 391 | |
![]() |
33.4 | 392 | If payload is **FF7EH**: ((FF7E & 0x8000)>>15 ===1),temp = (FF7E(H)-FFFF(H))/10 = -12.9 °C |
![]() |
25.1 | 393 | |
![]() |
33.3 | 394 | |
![]() |
27.1 | 395 | === 2.4.7 Timestamp === |
![]() |
25.1 | 396 | |
![]() |
33.3 | 397 | |
![]() |
25.1 | 398 | Time stamp : 0x6315537b =1662342011 |
399 | |||
400 | Convert Unix timestamp to time 2022-9-5 9:40:11. | ||
401 | |||
![]() |
33.3 | 402 | |
![]() |
27.1 | 403 | === 2.4.8 Digital Interrupt === |
![]() |
25.1 | 404 | |
![]() |
33.3 | 405 | |
![]() |
33.4 | 406 | Digital Interrupt refers to pin (% style="color:#037691" %)**GPIO_EXTI**(%%), and there are different trigger methods. When there is a trigger, the NLMS01 will send a packet to the server. |
![]() |
25.1 | 407 | |
408 | The command is: | ||
409 | |||
![]() |
33.4 | 410 | (% style="color:blue" %)**AT+INTMOD=3 ** (%%) ~/~/ (more info about INMOD please refer [[**AT Command Manual**>>url:https://www.dragino.com/downloads/downloads/NB-IoT/NBSN95/DRAGINO_NBSN95-NB_AT%20Commands_v1.1.0.pdf]])**.** |
![]() |
25.1 | 411 | |
412 | The lower four bits of this data field shows if this packet is generated by interrupt or not. Click here for the hardware and software set up. | ||
413 | |||
414 | Example: | ||
415 | |||
416 | 0x(00): Normal uplink packet. | ||
417 | |||
418 | 0x(01): Interrupt Uplink Packet. | ||
419 | |||
![]() |
33.3 | 420 | |
![]() |
27.1 | 421 | === 2.4.9 +5V Output === |
![]() |
25.1 | 422 | |
![]() |
33.3 | 423 | |
![]() |
25.1 | 424 | NLMS01 will enable +5V output before all sampling and disable the +5v after all sampling. |
425 | |||
426 | The 5V output time can be controlled by AT Command. | ||
427 | |||
![]() |
33.4 | 428 | (% style="color:blue" %)**AT+5VT=1000** |
![]() |
25.1 | 429 | |
430 | Means set 5V valid time to have 1000ms. So the real 5V output will actually have 1000ms + sampling time for other sensors.** ** | ||
431 | |||
432 | |||
![]() |
26.1 | 433 | == 2.5 Downlink Payload == |
![]() |
25.1 | 434 | |
![]() |
33.3 | 435 | |
![]() |
25.1 | 436 | By default, NLMS01 prints the downlink payload to console port. |
437 | |||
![]() |
38.24 | 438 | (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:510px" %) |
439 | |=(% style="width: 183px; background-color:#4F81BD;color:white" %)**Downlink Control Type**|=(% style="width: 55px; background-color:#4F81BD;color:white" %)FPort|=(% style="width: 93px; background-color:#4F81BD;color:white" %)**Type Code**|=(% style="width: 179px; background-color:#4F81BD;color:white" %)**Downlink payload size(bytes)** | ||
![]() |
38.20 | 440 | |(% style="width:183px" %)TDC (Transmit Time Interval)|(% style="width:55px" %)Any|(% style="width:93px" %)01|(% style="width:146px" %)4 |
441 | |(% style="width:183px" %)RESET|(% style="width:55px" %)Any|(% style="width:93px" %)04|(% style="width:146px" %)2 | ||
442 | |(% style="width:183px" %)INTMOD|(% style="width:55px" %)Any|(% style="width:93px" %)06|(% style="width:146px" %)4 | ||
![]() |
25.1 | 443 | |
![]() |
38.20 | 444 | |
![]() |
33.3 | 445 | |
![]() |
33.4 | 446 | (% style="color:blue" %)**Examples:** |
![]() |
25.1 | 447 | |
448 | |||
![]() |
33.4 | 449 | * (% style="color:#037691" %)**Set TDC** |
450 | |||
![]() |
25.1 | 451 | If the payload=0100003C, it means set the END Node's TDC to 0x00003C=60(S), while type code is 01. |
452 | |||
453 | Payload: 01 00 00 1E TDC=30S | ||
454 | |||
455 | Payload: 01 00 00 3C TDC=60S | ||
456 | |||
457 | |||
![]() |
33.4 | 458 | |
459 | * (% style="color:#037691" %)**Reset** | ||
460 | |||
![]() |
25.1 | 461 | If payload = 0x04FF, it will reset the NLMS01 |
462 | |||
463 | |||
![]() |
33.4 | 464 | |
465 | * (% style="color:#037691" %)**INTMOD** | ||
466 | |||
![]() |
25.1 | 467 | Downlink Payload: 06000003, Set AT+INTMOD=3 |
468 | |||
![]() |
33.3 | 469 | |
![]() |
26.1 | 470 | == 2.6 LED Indicator == |
![]() |
25.1 | 471 | |
![]() |
33.3 | 472 | |
![]() |
25.1 | 473 | The NLMS01 has an internal LED which is to show the status of different state. |
474 | |||
475 | * When power on, NLMS01 will detect if sensor probe is connected, if probe detected, LED will blink four times. (no blinks in this step is no probe) | ||
476 | * Then the LED will be on for 1 second means device is boot normally. | ||
477 | * After NLMS01 join NB-IoT network. The LED will be ON for 3 seconds. | ||
478 | * For each uplink probe, LED will be on for 500ms. | ||
479 | |||
![]() |
33.3 | 480 | == 2.7 Installation == |
481 | |||
482 | |||
![]() |
25.1 | 483 | NLMS01 probe has two sides. The side without words are the sense side. Please be ware when install the sensor. |
484 | |||
![]() |
33.3 | 485 | |
![]() |
25.1 | 486 | [[image:image-20220907171221-19.png]] |
487 | |||
488 | |||
![]() |
33.3 | 489 | == 2.8 Moisture and Temperature alarm function == |
![]() |
25.1 | 490 | |
![]() |
33.3 | 491 | |
![]() |
33.4 | 492 | (% style="color:blue" %)**➢ AT Command:** |
![]() |
33.3 | 493 | |
![]() |
33.4 | 494 | (% style="color:#037691" %)**AT+ HUMALARM =min,max** |
![]() |
33.3 | 495 | |
![]() |
25.1 | 496 | ² When min=0, and max≠0, Alarm higher than max |
497 | |||
498 | ² When min≠0, and max=0, Alarm lower than min | ||
499 | |||
500 | ² When min≠0 and max≠0, Alarm higher than max or lower than min | ||
501 | |||
502 | |||
![]() |
33.4 | 503 | (% style="color:blue" %)**Example:** |
![]() |
33.3 | 504 | |
![]() |
25.1 | 505 | AT+ HUMALARM =50,60 ~/~/ Alarm when moisture lower than 50. |
506 | |||
507 | AT+ TEMPALARM=min,max | ||
508 | |||
509 | ² When min=0, and max≠0, Alarm higher than max | ||
510 | |||
511 | ² When min≠0, and max=0, Alarm lower than min | ||
512 | |||
513 | ² When min≠0 and max≠0, Alarm higher than max or lower than min | ||
514 | |||
515 | |||
![]() |
33.4 | 516 | (% style="color:blue" %)**Example:** |
![]() |
33.3 | 517 | |
![]() |
25.1 | 518 | AT+ TEMPALARM=20,30 ~/~/ Alarm when temperature lower than 20. |
519 | |||
520 | |||
![]() |
33.3 | 521 | == 2.9 Set the number of data to be uploaded and the recording time == |
![]() |
25.1 | 522 | |
523 | |||
![]() |
33.4 | 524 | (% style="color:blue" %)**➢ AT Command:** |
![]() |
25.1 | 525 | |
![]() |
33.4 | 526 | * (% style="color:#037691" %)**AT+TR=900** (%%) ~/~/ The unit is seconds, and the default is to record data once every 900 seconds.( The minimum can be set to 180 seconds) |
527 | * (% style="color:#037691" %)**AT+NOUD=8** (%%)~/~/ The device uploads 8 sets of recorded data by default. Up to 32 sets of record data can be uploaded. | ||
![]() |
25.1 | 528 | |
![]() |
36.1 | 529 | The diagram below explains the relationship between TR, NOUD, and TDC more clearly**:** |
![]() |
25.1 | 530 | |
![]() |
38.1 | 531 | [[image:image-20221009001002-1.png||height="706" width="982"]] |
![]() |
25.1 | 532 | |
![]() |
36.1 | 533 | |
![]() |
33.3 | 534 | == 2.10 Read or Clear cached data == |
535 | |||
536 | |||
![]() |
33.4 | 537 | (% style="color:blue" %)**➢ AT Command:** |
![]() |
33.3 | 538 | |
![]() |
33.4 | 539 | * (% style="color:#037691" %)**AT+CDP** (%%) ~/~/ Read cached data |
540 | * (% style="color:#037691" %)**AT+CDP=0 ** (%%) ~/~/ Clear cached data | ||
![]() |
33.3 | 541 | |
![]() |
25.1 | 542 | [[image:image-20220907171221-20.png]] |
543 | |||
544 | |||
![]() |
26.1 | 545 | == 2.11 Firmware Change Log == |
![]() |
25.1 | 546 | |
![]() |
33.3 | 547 | |
![]() |
33.5 | 548 | Download URL & Firmware Change log: [[https:~~/~~/www.dropbox.com/sh/qdc3js2iu1vlipx/AACMHI3CvVb8g7YQMrIHY673a?dl=0>>https://www.dropbox.com/sh/qdc3js2iu1vlipx/AACMHI3CvVb8g7YQMrIHY673a?dl=0]] |
![]() |
25.1 | 549 | |
![]() |
33.5 | 550 | Upgrade Instruction: [[Upgrade Firmware>>||anchor="H5.1200BHowtoUpgradeFirmware"]] |
![]() |
25.1 | 551 | |
![]() |
33.3 | 552 | |
![]() |
38.13 | 553 | == 2.12 Battery & Power Consumption == |
![]() |
33.3 | 554 | |
![]() |
25.1 | 555 | |
![]() |
38.13 | 556 | NLMS01 uses ER26500 + SPC1520 battery pack. See below link for detail information about the battery info and how to replace. |
![]() |
33.3 | 557 | |
![]() |
38.13 | 558 | [[**Battery Info & Power Consumption Analyze**>>url:http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] . |
![]() |
25.1 | 559 | |
![]() |
33.3 | 560 | |
![]() |
26.1 | 561 | = 3. Access NB-IoT Module = |
![]() |
25.1 | 562 | |
![]() |
33.3 | 563 | |
![]() |
25.1 | 564 | Users can directly access the AT command set of the NB-IoT module. |
565 | |||
566 | 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/]] | ||
567 | |||
![]() |
33.3 | 568 | |
![]() |
25.1 | 569 | [[image:image-20220907171221-23.png]] |
570 | |||
![]() |
33.3 | 571 | |
![]() |
26.1 | 572 | = 4. Using the AT Commands = |
![]() |
25.1 | 573 | |
![]() |
27.1 | 574 | == 4.1 Access AT Commands == |
![]() |
25.1 | 575 | |
![]() |
33.3 | 576 | |
![]() |
25.1 | 577 | See this link for detail: [[https:~~/~~/www.dropbox.com/sh/351dwor6joz8nwh/AADn1BQaAAxLF_QMyU8NkW47a?dl=0>>url:https://www.dropbox.com/sh/351dwor6joz8nwh/AADn1BQaAAxLF_QMyU8NkW47a?dl=0]] |
578 | |||
![]() |
33.9 | 579 | AT+<CMD>? : Help on <CMD> |
![]() |
25.1 | 580 | |
![]() |
33.9 | 581 | AT+<CMD> : Run <CMD> |
![]() |
25.1 | 582 | |
![]() |
33.9 | 583 | AT+<CMD>=<value>: Set the value |
![]() |
25.1 | 584 | |
![]() |
33.9 | 585 | AT+<CMD>=? : Get the value |
![]() |
25.1 | 586 | |
![]() |
33.3 | 587 | |
![]() |
33.4 | 588 | (% style="color:#037691" %)**General Commands** |
![]() |
25.1 | 589 | |
![]() |
33.9 | 590 | AT : Attention |
![]() |
25.1 | 591 | |
![]() |
33.9 | 592 | AT? : Short Help |
![]() |
25.1 | 593 | |
![]() |
33.9 | 594 | ATZ : MCU Reset |
![]() |
25.1 | 595 | |
![]() |
33.9 | 596 | AT+TDC : Application Data Transmission Interval |
![]() |
25.1 | 597 | |
![]() |
33.9 | 598 | AT+CFG : Print all configurations |
![]() |
25.1 | 599 | |
![]() |
33.9 | 600 | AT+CFGMOD : Working mode selection |
![]() |
25.1 | 601 | |
![]() |
33.9 | 602 | AT+INTMOD : Set the trigger interrupt mode |
![]() |
25.1 | 603 | |
![]() |
33.9 | 604 | AT+5VT : Set extend the time of 5V power |
![]() |
25.1 | 605 | |
![]() |
33.9 | 606 | AT+PRO : Choose agreement |
![]() |
25.1 | 607 | |
![]() |
33.9 | 608 | AT+RXDL: Extend the sending and receiving time |
![]() |
25.1 | 609 | |
![]() |
33.9 | 610 | AT+SERVADDR : Server Address |
![]() |
25.1 | 611 | |
![]() |
33.9 | 612 | AT+APN : Get or set the APN |
![]() |
32.1 | 613 | |
![]() |
33.9 | 614 | AT+FBAND : Get or Set whether to automatically modify the frequency band |
![]() |
32.1 | 615 | |
![]() |
33.9 | 616 | AT+DNSCFG : Get or Set DNS Server |
![]() |
32.1 | 617 | |
618 | AT+GETSENSORVALUE : Returns the current sensor measurement | ||
619 | |||
![]() |
33.9 | 620 | AT+TR : Get or Set record time" |
![]() |
25.1 | 621 | |
![]() |
33.9 | 622 | AT+NOUD : Get or Set the number of data to be uploaded |
![]() |
25.1 | 623 | |
![]() |
33.9 | 624 | AT+CDP : Read or Clear cached data |
![]() |
25.1 | 625 | |
![]() |
33.9 | 626 | AT+TEMPALARM : Get or Set alarm of temp |
![]() |
25.1 | 627 | |
![]() |
33.9 | 628 | AT+HUMALARM : Get or Set alarm of humidity |
![]() |
25.1 | 629 | |
630 | |||
![]() |
33.4 | 631 | (% style="color:#037691" %)**COAP Management** |
![]() |
25.1 | 632 | |
![]() |
33.10 | 633 | AT+URI : Resource parameters |
![]() |
25.1 | 634 | |
![]() |
33.3 | 635 | |
![]() |
33.4 | 636 | (% style="color:#037691" %)**MQTT Management** |
![]() |
25.1 | 637 | |
![]() |
33.10 | 638 | AT+CLIENT : Get or Set MQTT client |
![]() |
25.1 | 639 | |
![]() |
33.10 | 640 | AT+UNAME : Get or Set MQTT Username |
![]() |
25.1 | 641 | |
![]() |
33.10 | 642 | AT+PWD : Get or Set MQTT password |
![]() |
25.1 | 643 | |
![]() |
33.10 | 644 | AT+PUBTOPIC : Get or Set MQTT publish topic |
![]() |
25.1 | 645 | |
![]() |
33.10 | 646 | AT+SUBTOPIC : Get or Set MQTT subscription topic |
![]() |
25.1 | 647 | |
![]() |
33.3 | 648 | |
![]() |
33.4 | 649 | (% style="color:#037691" %)**Information** |
![]() |
25.1 | 650 | |
![]() |
33.10 | 651 | AT+FDR : Factory Data Reset |
![]() |
25.1 | 652 | |
![]() |
33.10 | 653 | AT+PWORD : Serial Access Password |
![]() |
25.1 | 654 | |
![]() |
33.3 | 655 | |
![]() |
26.1 | 656 | = 5. FAQ = |
![]() |
25.1 | 657 | |
![]() |
27.1 | 658 | == 5.1 How to Upgrade Firmware == |
![]() |
25.1 | 659 | |
![]() |
33.3 | 660 | |
![]() |
25.1 | 661 | User can upgrade the firmware for 1) bug fix, 2) new feature release. |
662 | |||
663 | 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>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/#H2.HardwareUpgradeMethodSupportList]] | ||
664 | |||
665 | |||
![]() |
33.4 | 666 | (% style="color:red" %)**Notice, NLMS01 and LLMS01 share the same mother board. They use the same connection and method to update.** |
![]() |
33.3 | 667 | |
668 | |||
![]() |
26.1 | 669 | = 6. Trouble Shooting = |
![]() |
25.1 | 670 | |
![]() |
27.1 | 671 | == 6.1 Connection problem when uploading firmware == |
![]() |
25.1 | 672 | |
![]() |
33.3 | 673 | |
![]() |
25.1 | 674 | **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]] |
675 | |||
![]() |
33.3 | 676 | |
![]() |
27.1 | 677 | == 6.2 AT Command input doesn't work == |
![]() |
25.1 | 678 | |
![]() |
33.3 | 679 | |
![]() |
33.4 | 680 | 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. |
![]() |
25.1 | 681 | |
![]() |
33.3 | 682 | |
![]() |
38.15 | 683 | == 6.3 Not able to connect to NB-IoT network and keep showing "Signal Strength:99". == |
684 | |||
685 | |||
686 | This means sensor is trying to join the NB-IoT network but fail. Please see this link for **//[[trouble shooting for signal strenght:99>>doc:Main.CSQ\:99,99.WebHome]]//**. | ||
687 | |||
688 | |||
![]() |
42.1 | 689 | == 6.4 Possible reasons why the device is unresponsive: == |
![]() |
41.1 | 690 | |
691 | |||
692 | 1. Check whether the battery voltage is lower than 2.8V | ||
693 | 2. Check whether the jumper of the device is correctly connected | ||
694 | |||
695 | [[image:image-20240330175629-2.png]] | ||
696 | 3. Check whether the switch here of the device is at the ISP(The switch can operate normally only when it is in RUN) | ||
697 | | ||
698 | |||
699 | [[image:image-20240330175554-1.png]] | ||
700 | |||
![]() |
26.1 | 701 | = 7. Order Info = |
![]() |
25.1 | 702 | |
![]() |
33.3 | 703 | |
![]() |
25.1 | 704 | Part Number**:** NLMS01 |
705 | |||
![]() |
33.3 | 706 | |
![]() |
26.1 | 707 | = 8. Packing Info = |
![]() |
25.1 | 708 | |
![]() |
33.3 | 709 | |
![]() |
33.4 | 710 | (% style="color:#037691" %)**Package Includes:** |
![]() |
25.1 | 711 | |
712 | * NLMS01 NB-IoT Leaf Moisture Sensor x 1 | ||
713 | |||
![]() |
33.4 | 714 | (% style="color:#037691" %)**Dimension and weight**: |
![]() |
25.1 | 715 | |
716 | * Device Size: cm | ||
717 | * Device Weight: g | ||
718 | * Package Size / pcs : cm | ||
719 | * Weight / pcs : g | ||
720 | |||
![]() |
26.1 | 721 | = 9. Support = |
![]() |
25.1 | 722 | |
![]() |
33.3 | 723 | |
![]() |
25.1 | 724 | * 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. |
725 | * 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]] | ||
726 | |||
727 | |