Wiki source code of NDS01 - NB-IoT Door Sensor User Manual
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | (% style="text-align:center" %) | ||
2 | [[image:image-20221112113258-1.jpeg]] | ||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 | |||
13 | |||
14 | = 1. Introduction = | ||
15 | |||
16 | == 1.1 What is NDS01 NB-IoT Door Sensor == | ||
17 | |||
18 | |||
19 | The Dragino NDS01 is a NB-IOT Door Sensor for Internet of Things solution. It is used to detect the open/close event for door and uplink the event to IoT server via NB-IoT network. | ||
20 | |||
21 | Besides open/close event, NDS01 also has an internal temperature and humidity sensor which can detect the temperature and humidity inside the sensor*. | ||
22 | |||
23 | **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. | ||
24 | |||
25 | NDS01 is powered by 2 x AAA batteries for long term use. | ||
26 | |||
27 | *The measured temperature is 2~~3 degree higher than the actually environment temperature out of NDS01. | ||
28 | |||
29 | |||
30 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png]] | ||
31 | |||
32 | |||
33 | |||
34 | |||
35 | == 1.2 Specifications == | ||
36 | |||
37 | **Common DC Characteristics:** | ||
38 | |||
39 | * | ||
40 | ** | ||
41 | *** | ||
42 | **** Supply Voltage: 2.1v ~~ 3.6v | ||
43 | **** Operating Temperature: -10 ~~ 50°C | ||
44 | |||
45 | |||
46 | |||
47 | **NB-IoT Spec:** | ||
48 | |||
49 | * - B1 @H-FDD: 2100MHz | ||
50 | * - B3 @H-FDD: 1800MHz | ||
51 | * - B8 @H-FDD: 900MHz | ||
52 | * - B5 @H-FDD: 850MHz | ||
53 | * - B20 @H-FDD: 800MHz | ||
54 | * - B28 @H-FDD: 700MHz | ||
55 | |||
56 | |||
57 | |||
58 | **Power Consumption** | ||
59 | |||
60 | * IDEL Mode: 10uA @ 3.3v | ||
61 | * Max transmit power: <500mA@3.3v | ||
62 | |||
63 | | ||
64 | |||
65 | == 1.3 Features == | ||
66 | |||
67 | * NB-IoT Bands: B1/B3/B5/B8/B20/B28 @H-FDD | ||
68 | * Ultra low power consumption | ||
69 | * Door Open / Close Detect | ||
70 | * Device remove alarm | ||
71 | * Uplink Protocol: TCP or UDP | ||
72 | * Uplink on periodically | ||
73 | * Micro SIM card slot for NB-IoT SIM | ||
74 | * 2 x AAA LR03 Batteries | ||
75 | *1. Applications | ||
76 | * Smart Buildings & Home Automation | ||
77 | * Logistics and Supply Chain Management | ||
78 | * Smart Cities | ||
79 | * Smart Factory | ||
80 | |||
81 | |||
82 | |||
83 | |||
84 | = 2. Use NDS01 to communicate with IoT Server = | ||
85 | |||
86 | == 2.1 How it works == | ||
87 | |||
88 | The NDS01 is equipped with a NB-IoT module, the pre-loaded firmware in NDS01 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 NDS01. | ||
89 | |||
90 | |||
91 | The diagram below shows the working flow in default firmware of NDS01: | ||
92 | |||
93 | |||
94 | |||
95 | |||
96 | == 2.2 Configure the NDS01 == | ||
97 | |||
98 | === 2.2.1 Test Requirement === | ||
99 | |||
100 | |||
101 | To use NDS01 in your city, make sure meet below requirements: | ||
102 | |||
103 | * Your local operator has already distributed a NB-IoT Network there. | ||
104 | * The local NB-IoT network used the band that NDS01 supports. | ||
105 | * Your operator is able to distribute the data received in their NB-IoT network to your IoT server. | ||
106 | |||
107 | |||
108 | Below figure shows our testing structure. Here we have NB-IoT network coverage by China Mobile, the band they use is B8. The NDS01 will use UDP(120.24.4.116:5601) or TCP(120.24.4.116:5600)protocol to send data to IoT server. | ||
109 | |||
110 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png]] | ||
111 | |||
112 | |||
113 | |||
114 | === 2.2.1 Insert SIM card === | ||
115 | |||
116 | Insert the NB-IoT Card get from your provider. | ||
117 | |||
118 | |||
119 | User need to take out the NB-IoT module and insert the SIM card like below: | ||
120 | |||
121 | |||
122 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png]] | ||
123 | |||
124 | |||
125 | === 2.2.3 Configure NDS01 === | ||
126 | |||
127 | User need to configure NDS01 via serial port to set the **Server Address** / **Uplink Topic** to define where and how-to uplink packets. NDS01 support AT Commands, user can use a USB to TTL adapter to connect to NDS01 and use AT Commands to configure it, NDS01 needs to be in the wake-up state when using AT commands,as below. | ||
128 | |||
129 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png]] | ||
130 | |||
131 | |||
132 | |||
133 | Connection: | ||
134 | |||
135 | USB TTL GND <~-~-~-~-> GND | ||
136 | |||
137 | USB TTL TXD <~-~-~-~-> UART_RXD | ||
138 | |||
139 | USB TTL RXD <~-~-~-~-> UART_TXD | ||
140 | |||
141 | |||
142 | |||
143 | In the PC, use below serial tool settings: | ||
144 | |||
145 | * Baud: **115200** | ||
146 | * Data bits:** 8** | ||
147 | * Stop bits: **1** | ||
148 | * Parity: **None** | ||
149 | * Flow Control: **None** | ||
150 | |||
151 | After powering on the NDS01, the following information will be printed | ||
152 | |||
153 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image005.png]] | ||
154 | |||
155 | AT command set | ||
156 | |||
157 | 1. Set and query the communication protocol | ||
158 | |||
159 | Send: AT+PRO=<val> Val: 0:TCP 1:UDP | ||
160 | |||
161 | Reply: OK | ||
162 | |||
163 | Send: AT+PRO? ~/~/Inquire | ||
164 | |||
165 | Reply: +PRO:0 | ||
166 | |||
167 | OK | ||
168 | |||
169 | 1. Set and query the server address | ||
170 | |||
171 | Send: AT+SERVADDR=<server>,<port> | ||
172 | |||
173 | Reply: OK | ||
174 | |||
175 | Send: AT+SERVADDR? ~/~/Inquire | ||
176 | |||
177 | Reply: +SERVADDR:<server>,<port> | ||
178 | |||
179 | OK | ||
180 | |||
181 | 1. Set and query the TDC | ||
182 | |||
183 | Send:AT+TDC=<value>~/~/Heartbeat time, in seconds, the default is 86400s,which is 24 hours | ||
184 | |||
185 | Reply:OK | ||
186 | |||
187 | Send:AT+TDC? ~/~/Inquire | ||
188 | |||
189 | Reply: +TDC:<value> | ||
190 | |||
191 | OK | ||
192 | |||
193 | 1. Query parameters | ||
194 | |||
195 | Send:AT+CFG? | ||
196 | |||
197 | Reply:+PRO:0 | ||
198 | |||
199 | +SERVADDR:120.27.12.119,2023 | ||
200 | |||
201 | +TDC:86400 | ||
202 | |||
203 | +CSQ:31 | ||
204 | |||
205 | +IMEI:868163049937383 | ||
206 | |||
207 | +ICCID:898604611619C0854626 | ||
208 | |||
209 | +IMSI:460048118204626 | ||
210 | |||
211 | OK | ||
212 | |||
213 | 1. Set and query the APN | ||
214 | |||
215 | Send: AT+APN="<apn>" ~/~/Set APN | ||
216 | |||
217 | Reply: OK | ||
218 | |||
219 | Send: AT+APN? ~/~/Inquire | ||
220 | |||
221 | Reply: +APN:"cmiot" | ||
222 | |||
223 | OK | ||
224 | |||
225 | 1. Alarm and Silencer | ||
226 | |||
227 | Send:AT+ALARM=<value> ~/~/0~~1,0: mute 1: buzzer alarm (note that no data will be reported, only the buzzer and the red light are on, if it is in silent mode, only the red light is on) | ||
228 | |||
229 | Reply: OK | ||
230 | |||
231 | |||
232 | |||
233 | |||
234 | === 2.2.4 Use UDP protocol to uplink data (Default protocol) === | ||
235 | |||
236 | * **AT+PRO=1 ** ~/~/ Set to use UDP protocol to uplink | ||
237 | * **AT+SERVADDR=119.91.62.30,1999 **~/~/ to set UDP server address and port | ||
238 | |||
239 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png]] | ||
240 | |||
241 | |||
242 | |||
243 | === 2.2.5 Use TCP protocol to uplink data === | ||
244 | * **AT+PRO=0 ** ~/~/ Set to use TCP protocol to uplink | ||
245 | * **AT+SERVADDR=119.91.62.30,2002 **~/~/ to set TCP server address and port | ||
246 | |||
247 | |||
248 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image007.png]] | ||
249 | |||
250 | |||
251 | |||
252 | |||
253 | === 2.2.6 Change Update Interval === | ||
254 | |||
255 | User can use below command to change the **uplink interval**. | ||
256 | |||
257 | **AT+TDC=86400 **~/~/ Set Update Interval to 86400s | ||
258 | |||
259 | |||
260 | **NOTE:** | ||
261 | |||
262 | 1. By default, the device will send an uplink message every 24 hour (86400s). | ||
263 | |||
264 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png]] | ||
265 | |||
266 | |||
267 | |||
268 | |||
269 | == 2.3 Uplink Payload == | ||
270 | |||
271 | registration package, uplink payload includes in total 61 bytes | ||
272 | |||
273 | |||
274 | |((( | ||
275 | **Size** | ||
276 | |||
277 | **(bytes)** | ||
278 | )))|**2**|**1**|**1**|**1**|**1**|**15**|**15**|**20**|**1**|**1**|**3** | ||
279 | |**Value**|head|Version|data type|Data length|device type|device ID|IMSI|ICCID|BAT|Signal|tail | ||
280 | |||
281 | |||
282 | The payload is ASCII string, representative same HEX: 0x4B5710013401383639393735303334343431303832343630313133313138373433373332 | ||
283 | |||
284 | 38393836313132303232343031343339383736321E15494F54 where: | ||
285 | |||
286 | * Head: 0x4B57(fixed) | ||
287 | * Version: 0x10=”V1.0” | ||
288 | * Data type: 0x01=1(1:register,2:data sending) | ||
289 | * Data length: 0x34=52(Valid data is 52 bytes) | ||
290 | |||
291 | * Device type: 0x01 = 1(Representative NDS01) | ||
292 | * Device ID:0x383639393735303334343431303832=869975034441082(ASCII) | ||
293 | * IMSI: 0x343630313133313138373433373332 = 460113118743732(ASCII) | ||
294 | * ICCID: 0x3839383631313230323234303134333938373632=89861120224014398762(ASCII) | ||
295 | * Bat: 0x1E = 30/10=3.0V | ||
296 | * Signal: 0x15=21 | ||
297 | |||
298 | **0** -113dBm or less | ||
299 | |||
300 | **1** -111dBm | ||
301 | |||
302 | **2...30** -109dBm... -53dBm | ||
303 | |||
304 | **31** -51dBm or greater | ||
305 | |||
306 | **99** Not known or not detectable | ||
307 | |||
308 | * Tail:0x494F54(fixed) | ||
309 | |||
310 | |||
311 | data upload, uplink payload includes in total 32 bytes | ||
312 | |||
313 | |((( | ||
314 | **Size** | ||
315 | |||
316 | **(bytes)** | ||
317 | )))|**2**|**1**|**1**|**1**|**1**|**15**|**1**|**1**|**1**|**1**|**1**|**1**|**1**|**1**|**3** | ||
318 | |**Value**|head|Version|data type|Data length|device type|device ID|event type|Door magnetic state|BAT|Signal|((( | ||
319 | Temp | ||
320 | |||
321 | integer | ||
322 | )))|((( | ||
323 | Temp | ||
324 | |||
325 | decimal | ||
326 | )))|((( | ||
327 | Hum | ||
328 | |||
329 | integer | ||
330 | )))|((( | ||
331 | Hum | ||
332 | |||
333 | decimal | ||
334 | )))|tail | ||
335 | |||
336 | |||
337 | The payload is ASCII string, representative same HEX: 0x4B5710021401383639393735303334343431303832010020151c552312494F54 where: | ||
338 | |||
339 | * Head: 0x4B57(fixed) | ||
340 | * Version: 0x10=”V1.0” | ||
341 | * Data type: 0x02=2(1:register,2:data sending) | ||
342 | * Data length: 0x14=20(Valid data is 20 bytes) | ||
343 | |||
344 | * Device type: 0x01 = 1(Representative NDS01) | ||
345 | * Device ID:0x383639393735303334343431303832=869975034441082(ASCII) | ||
346 | * Event type:0x01 | ||
347 | |||
348 | 01:TDC | ||
349 | |||
350 | 02:alarm | ||
351 | |||
352 | 03:remove alarm | ||
353 | |||
354 | 04:dismantling alarm | ||
355 | |||
356 | 05:remove demolition alarm | ||
357 | |||
358 | 06:low voltage | ||
359 | |||
360 | 07:remove low voltage | ||
361 | |||
362 | * Door magnetic state: 0x00 | ||
363 | |||
364 | 00:Door sensor is close | ||
365 | |||
366 | 01:Door sensor is open | ||
367 | |||
368 | * Bat: 0x20 = 32/10=3.2V | ||
369 | * Signal: 0x15=21 | ||
370 | |||
371 | **0** -113dBm or less | ||
372 | |||
373 | **1** -111dBm | ||
374 | |||
375 | **2...30** -109dBm... -53dBm | ||
376 | |||
377 | **31** -51dBm or greater | ||
378 | |||
379 | **99** Not known or not detectable | ||
380 | |||
381 | * Temp integer:0x1c=28 | ||
382 | * Temp decimal:0x55=85 | ||
383 | |||
384 | Temp =Temp integer+(Temp decimal)/100=28+85/100=28.85℃ | ||
385 | |||
386 | * Hum integer:0x23=35 | ||
387 | * Hum decimal:0x12=18 | ||
388 | |||
389 | Hum =Hum integer+(Hum decimal)/100=35+18/100=35.18**%rh** | ||
390 | |||
391 | * Tail:0x494F54(fixed) | ||
392 | |||
393 | |||
394 | |||
395 | |||
396 | == 2.4 Node-Red Example == | ||
397 | |||
398 | Please refer to this link for the use of Node-RED: | ||
399 | |||
400 | [[http:~~/~~/8.211.40.43:8080/xwiki/bin/view/Main/Node-RED/>>url:http://8.211.40.43:8080/xwiki/bin/view/Main/Node-RED/]] | ||
401 | |||
402 | Please visit this link to download the Node-RED process: | ||
403 | |||
404 | [[https:~~/~~/github.com/dragino/dragino-end-node-decoder/tree/main/Node-RED>>url:https://github.com/dragino/dragino-end-node-decoder/tree/main/Node-RED]] | ||
405 | |||
406 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png]] | ||
407 | |||
408 | |||
409 | |||
410 | |||
411 | == 2.5 Buttons and LED and Mode == | ||
412 | |||
413 | Operating mode | ||
414 | |||
415 | (1) In the self-check mode (the default is the self-check mode when power on for the first time), the state change of the tamper switch does not trigger an alarm; | ||
416 | |||
417 | (2) In normal working mode, the state change of the tamper switch triggers an alarm; | ||
418 | |||
419 | (3) In silent mode (the default is non-silent mode when power on for the first time), the buzzer is silent. | ||
420 | |||
421 | |||
422 | led lights | ||
423 | |||
424 | (1) After the device is powered on, the green light flashes once; | ||
425 | |||
426 | (2) The device does not set server parameters or cannot connect to the server, and the green light flashes quickly; | ||
427 | |||
428 | (3) SIM card recognition fails, the green light is always on for 20s; | ||
429 | |||
430 | (4) The equipment signal is poor, and the green light flashes once every 3 seconds; | ||
431 | |||
432 | (5) When the device sends data, the green light flashes twice; | ||
433 | |||
434 | (6) The communication of the equipment is normal, and the green light flashes 3 times continuously; | ||
435 | |||
436 | (7) Trigger the tamper switch, the red light is always on for 30s, and goes out when the alarm is canceled; | ||
437 | |||
438 | (8) Trigger the door magnetic alarm, the red light is always on for 30s, and goes out when the alarm is canceled; | ||
439 | |||
440 | |||
441 | buzzer | ||
442 | |||
443 | (1) When the door magnetic alarm is triggered, the buzzer will sound for 30s; after the alarm is restored, the buzzer will be silenced; | ||
444 | |||
445 | (2) Enter the normal working mode (the tamper switch is closed for more than 5s or the door sensor is locked for more than 5s), the buzzer will sound for 1500ms; | ||
446 | |||
447 | (3) After entering the normal working mode, the tamper switch does not close, the buzzer sounds for 30s, the tamper switch is closed, and the buzzer sounds 1 time; | ||
448 | |||
449 | (4) When the door sensor does not alarm, press the button to trigger the alarm, and the buzzer will sound for 30s; when the door sensor alarms, press it once to cancel the alarm, and the buzzer will be silenced. | ||
450 | |||
451 | |||
452 | button | ||
453 | |||
454 | (1) When there is no alarm, press it once to trigger the alarm, and the buzzer will sound; when it alarms, press the buzzer to silence the sound. | ||
455 | |||
456 | (2) Press twice to silence the buzzer; | ||
457 | |||
458 | (3) Press the button three times or more, when the mute function is turned off, the mute function is turned on, and the green light flashes once; when the mute function is turned on, the mute function is turned off, and the green light flashes once. | ||
459 | |||
460 | |||
461 | data pack | ||
462 | |||
463 | (1) The device needs to send a registration packet and a heartbeat packet every time it is powered on and registered; | ||
464 | |||
465 | (2) The heartbeat time is reported once every 24 hours by default. | ||
466 | |||
467 | = 3. FAQ = | ||
468 | |||
469 | == 3.1 How to Upgrade Firmware == | ||
470 | |||
471 | User can upgrade the firmware for 1) bug fix, 2) new feature release. | ||
472 | |||
473 | Burning software please go to this link to download: | ||
474 | |||
475 | Note: | ||
476 | |||
477 | Disconnect one battery before starting the upgrade | ||
478 | |||
479 | Please use 1.8V USB TO TTL serial port | ||
480 | |||
481 | Connection: | ||
482 | |||
483 | USB TTL GND <~-~-~-~-> GND | ||
484 | |||
485 | USB TTL TXD <~-~-~-~-> UART_RXD | ||
486 | |||
487 | USB TTL RXD <~-~-~-~-> UART_TXD | ||
488 | |||
489 | 1. Double-click "FlashTool.exe" to start the program | ||
490 | |||
491 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png]] | ||
492 | |||
493 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image011.png]] | ||
494 | |||
495 | 1. Select burn serial port and firmware package to complete the upgrade | ||
496 | |||
497 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image012.png]] | ||
498 | |||
499 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image013.png]] | ||
500 | |||
501 | 1. Install the battery to the node, and the upgrade will start at this time | ||
502 | |||
503 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png]] | ||
504 | |||
505 | 1. The following screenshot appears, indicating that the upgrade has been successful | ||
506 | |||
507 | [[image:file:///C:/Users/93456/AppData/Local/Temp/msohtmlclip1/01/clip_image015.png]] | ||
508 | |||
509 | |||
510 | = 4. Order Info = | ||
511 | |||
512 | Part Number: **NDS01** | ||
513 | |||
514 | |||
515 | = 5. Packing Info = | ||
516 | |||
517 | |||
518 | **Package Includes**: | ||
519 | |||
520 | * NDS01 NB-IoT Door Sensor | ||
521 | |||
522 | |||
523 | **Dimension and weight**: | ||
524 | |||
525 | * Device Size: | ||
526 | * Device Weight: | ||
527 | * Package Size / pcs : | ||
528 | * Weight / pcs : |