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