Version 110.5 by Xiaoling on 2024/06/12 11:43

Show last authors
1
2
3 (% style="text-align:center" %)
4 [[image:image-20240124134538-1.png||height="365" width="415"]]
5
6
7
8
9
10
11
12 **Table of Contents:**
13
14 {{toc/}}
15
16
17
18
19
20
21 = 1. Introduction =
22
23 == 1.1 What is AQS01-L LoRaWAN Indoor CO2 Sensor ==
24
25
26 The Dragino AQS01-L is an (% style="color:blue" %)**Indoor LoRaWAN Air Quality Sensor**(%%) for the Internet of Things solution. It is designed to measure the surrounding environment parameters include:(% style="color:blue" %)** CO2, Temperature , Relative Air Humidity and Air pressure**(%%), and then upload to IoT server via LoRaWAN wireless protocol.
27
28 AQS01-L is powered by a (% style="color:blue" %)**ER18505 4000mAh battery**(%%). The battery can last more than 2 years and is easy to change.
29
30 AQS01-L (% style="color:blue" %)**supports BLE configure**(%%) and (% style="color:blue" %)**wireless OTA update**(%%) which make user easy to use.
31
32 AQS01-L supports (% style="color:blue" %)**CO2 Alarm and Temperature Alarm* features**(%%), users can get an alarm for instant notice.
33
34 AQS01-L supports (% style="color:blue" %)**Datalog feature**(%%), User can retrieve the sensor data from LoRaWAN commands.
35
36 (% style="color:red" %)**Note*:**(%%) CO2 Alarm and temperature Alarm will decrease a lot the battery life.
37
38
39 == 1.2 ​Features ==
40
41
42 * LoRaWAN 1.0.3 Class A
43 * Monitor CO2/Temperature/Relative Humidity/Pressure
44 * Support CO2 alarm
45 * Support Datalog Feature
46 * Bands: CN470/EU433/KR920/US915/EU868/AS923/AU915/IN865
47 * Support Bluetooth v5.1 and LoRaWAN remote configure
48 * Support wireless OTA update firmware
49 * Uplink on periodically
50 * Downlink to change configure
51 * 4000mAh batteries powered
52
53 == 1.3 Specification ==
54
55
56 (% style="color:#037691" %)**Common DC Characteristics:**
57
58 * Supply Voltage: built in 4000mAh Li-SOCI2 battery , 2.5v ~~ 3.6v
59 * Operating Temperature: -20 ~~ 65°C
60
61 (% style="color:#037691" %)**CO2 Sensor:**
62
63 * Sensor: [[Senseair Sunrise Article No. 006-0-0008>>https://senseair.com/product/sunrise/]](% style="color:#037691" %)**    **
64 * Target gas: Carbon dioxide(CO2)
65 * Operating principle: Non-dispersiveinfrared(NDIR)
66 * Operating range: 0-50°C, 0-85% RH(non-condensing)
67 * Measurement range: 400ppm to 5000 ppm (extended range up to 10000 ppm )
68 * Accuracy: Typ ±(30 ppm +3% of reading)
69 * Pressure Compensation
70
71 (% style="color:#037691" %)**Temperature Sensor:**
72
73 * Sensor: [[bme280>>https://www.bosch-sensortec.com/products/environmental-sensors/humidity-sensors-bme280/]](% style="color:#037691" %)**     **
74 * Range: -20 ~~ 65 °C
75 * Accuracy: Typ ±1.0@ 0-65 °C
76 * Resolution: 0.01°C
77
78 (% style="color:#037691" %)**Humidity Sensor: **
79
80 * Sensor: [[bme280>>https://www.bosch-sensortec.com/products/environmental-sensors/humidity-sensors-bme280/]]
81 * Range: 0 ~~ 99.9% RH
82 * Accurancy: ± 3%RH (20 ~~ 80%RH)
83 * Resolution: 0.008% RH
84 * Long term stability: 0.5 %RH/yr
85
86 (% style="color:#037691" %)**Air Pressure: **
87
88 * Sensor: [[bme280>>https://www.bosch-sensortec.com/products/environmental-sensors/humidity-sensors-bme280/]]
89 * Range: 300~~1100hPa
90 * Accuracy: ± 1.0 hPa (0-65 °C)
91 * Resolution: 0.18Pa
92 * Long term stability: ±1.0 hPa/yr
93
94 (% style="color:#037691" %)**LoRa Spec:**
95
96 * Frequency Range,  Band 1 (HF): 862 ~~ 1020 Mhz
97 * Max +22 dBm constant RF output vs.
98 * RX sensitivity: down to -139 dBm.
99 * Excellent blocking immunity
100
101 (% style="color:#037691" %)**Battery:**
102
103 * Li/SOCI2 un-chargeable battery
104 * Capacity: 4000mAh
105 * Self-Discharge: <1% / Year @ 25°C
106
107 (% style="color:#037691" %)**Power Consumption**
108
109 * Sleep Mode: 6uA @ 3.3v
110 * LoRa Transmit Mode: 125mA @ 20dBm, 82mA @ 14dBm
111
112 == 1.4 Applications ==
113
114 * Smart Building
115 * Industrial Monitoring and Control
116
117 == 1.5 Sleep mode and working mode ==
118
119
120 (% style="color:blue" %)**Deep Sleep Mode: **(%%)Sensor doesn't have any LoRaWAN activity. This mode is used for storage and shipping to save battery life.
121
122 (% style="color:blue" %)**Working Mode:** (%%)In this mode, Sensor will work as LoRaWAN Sensor to Join LoRaWAN network and send out sensor data to server. Between each sampling/tx/rx periodically, sensor will be in IDLE mode), in IDLE mode, sensor has the same power consumption as Deep Sleep mode.
123
124
125 (% style="color:inherit; font-family:inherit; font-size:26px" %)1.6 BLE connection
126
127
128 AQS01-L supports BLE remote configure.
129
130 BLE can be used to configure the parameter of AQS01-L or see the console output from AQS01-L. BLE will be only activate on below case:
131
132 * Press button to send an uplink.
133 * Press button to active AQS01-L.
134 * Device Power on or reset.
135
136 If there is no activity connection on BLE in 60 seconds, AQS01-L will shut down BLE module to enter low power mode.
137
138
139 = 2. Configure AQS01-L to connect to LoRaWAN network =
140
141 == 2.1 How it works ==
142
143
144 The AQS01-L is configured as (% style="color:#037691" %)**LoRaWAN OTAA Class A**(%%) mode by default. It has OTAA keys to join LoRaWAN network. To connect a local LoRaWAN network, you need to input the OTAA keys in the LoRaWAN IoT server and press the button to activate the AQS01-L. It will automatically join the network via OTAA and start to send the sensor value. The default uplink interval is 20 minutes.
145
146
147 == 2.2 ​Quick guide to connect to LoRaWAN server (OTAA) ==
148
149
150 Following is an example for how to join the [[TTN v3 LoRaWAN Network>>url:https://console.cloud.thethings.network/]]. Below is the network structure; we use the [[LPS8v2>>url:https://www.dragino.com/products/lora-lorawan-gateway/item/228-lps8v2.html]] as a LoRaWAN gateway in this example.
151
152 The LPS8V2 is already set to connected to [[TTN network >>url:https://console.cloud.thethings.network/]], so what we need to now is configure the TTN server.
153
154 [[image:image-20240124150425-1.png||height="378" width="757"]]
155
156 (% style="color:blue" %)**Step 1:**(%%) Create a device in TTN with the OTAA keys from AQS01-L.
157
158 Each AQS01-L is shipped with a sticker with the default device EUI as below:
159
160 [[image:image-20230426084152-1.png||alt="图片-20230426084152-1.png" height="233" width="502"]]
161
162
163 You can input these keys in the LoRaWAN Server portal. Below is TTN screen shot:
164
165
166 (% style="color:blue" %)**Register the device**
167
168 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/1654935135620-998.png?rev=1.1||alt="1654935135620-998.png"]]
169
170
171 (% style="color:blue" %)**Add APP EUI and DEV EUI**
172
173 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/image-20220611161308-4.png?width=753&height=551&rev=1.1||alt="图片-20220611161308-4.png"]]
174
175
176 (% style="color:blue" %)**Add APP EUI in the application**
177
178
179 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/image-20220611161308-5.png?width=742&height=601&rev=1.1||alt="图片-20220611161308-5.png"]]
180
181
182 (% style="color:blue" %)**Add APP KEY**
183
184 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LSN50v2-S31-S31B%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20User%20Manual/WebHome/image-20220611161308-6.png?width=744&height=485&rev=1.1||alt="图片-20220611161308-6.png"]]
185
186
187 (% style="color:blue" %)**Step 2:**(%%) Activate on AQS01-L
188
189
190 Press the button for 5 seconds to activate the AQS01-L.
191
192 (% style="color:green" %)**Green LED**(%%) will fast blink 5 times, device will enter (% style="color:blue" %)**OTA mode**(%%) for 3 seconds. And then start to JOIN LoRaWAN network. (% style="color:green" %)**Green LED**(%%) will solidly turn on for 5 seconds after joined in network.
193
194 After join success, it will start to upload messages to TTN and you can see the messages in the panel.
195
196
197 (% style="color:blue" %)**Step 3: **(%%)Calibration AQS01-L
198
199
200 Button CO2 calibration function (Equivalent to AT+CALCMD=3)
201
202
203 The first step is to put your device into sleep mode. Press the button five times quickly and the device will light up solid red for 5 seconds.
204
205 In the second step, take the device outside to an environment without combustion sources and people, let it sit for a few minutes, and then press the button three times quickly. The calibration is complete after the blue light stays on for 5 seconds.
206
207 The last step is to reset the device, press and hold the button until the green light flashes.
208
209
210 For more calibration methods, please refer to this link: [[Calibration AQS01-L>>||anchor="H3.4Calibrationcommand"]]
211
212
213 == 2.3 ​Uplink Payload ==
214
215 === 2.3.1 Device Status, FPORT~=5 ===
216
217
218 Users can use the downlink command(**0x26 01**) to ask AQS01-L to send device configure detail, include device configure status. AQS01-L will uplink a payload via FPort=5 to the server.
219
220 The Payload format is as below.
221
222 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
223 |(% colspan="6" style="background-color:#4f81bd; color:white" %)**Device Status (FPORT=5)**
224 |(% style="width:103px" %)**Size (bytes)**|(% style="width:72px" %)**1**|(% style="width:91px" %)**2**|(% style="width:91px" %)**1**|(% style="width:86px" %)**1**|(% style="width:67px" %)**2**
225 |(% style="width:103px" %)Value|(% style="width:72px" %)Sensor Model|Firmware Version|(% style="width:91px" %)Frequency Band|(% style="width:86px" %)Sub-band|(% style="width:44px" %)BAT
226
227 Example parse in TTNv3
228
229 [[image:image-20240112094511-1.png||height="280" width="1110"]]
230
231
232 (% style="color:#037691" %)**Sensor Model**(%%): For AQS01-L, this value is 0x37
233
234 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
235
236 (% style="color:#037691" %)**Frequency Band**:
237
238 0x01: EU868
239
240 0x02: US915
241
242 0x03: IN865
243
244 0x04: AU915
245
246 0x05: KZ865
247
248 0x06: RU864
249
250 0x07: AS923
251
252 0x08: AS923-1
253
254 0x09: AS923-2
255
256 0x0a: AS923-3
257
258 0x0b: CN470
259
260 0x0c: EU433
261
262 0x0d: KR920
263
264 0x0e: MA869
265
266
267 (% style="color:#037691" %)**Sub-Band**:
268
269 AU915 and US915:value 0x00 ~~ 0x08
270
271 CN470: value 0x0B ~~ 0x0C
272
273 Other Bands: Always 0x00
274
275
276 (% style="color:#037691" %)**Battery Info**:
277
278 Check the battery voltage.
279
280 Ex1: 0x0B45 = 2885mV
281
282 Ex2: 0x0B49 = 2889mV
283
284
285 === 2.3.2  Sensor Data. FPORT~=2 ===
286
287
288 Sensor Data is uplink via FPORT=2
289
290 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:490px" %)
291 |=(% style="width: 70px;background-color:#4F81BD;color:white" %)(((
292 **Size(bytes)**
293 )))|=(% style="width: 50px;background-color:#4F81BD;color:white" %)2|=(% style="width: 90px;background-color:#4F81BD;color:white" %)2|=(% style="width: 80px;background-color:#4F81BD;color:white" %)2|=(% style="width: 60px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)2|=(% style="width: 90px;background-color:#4F81BD;color:white" %)1
294 |(% style="width:99px" %)Value|(% style="width:69px" %)(((
295 Battery
296 )))|(% style="width:130px" %)Temperature|(% style="width:82px" %)(((
297 Humidity
298 )))|(% style="width:87px" %)Pressure|(% style="width:53px" %)(((
299 CO2
300 )))|(% style="width:53px" %)Alarm flag
301
302 **Alarm flag:**
303
304 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:480px" %)
305 |=(% style="width: 70px;background-color:#4F81BD;color:white" %)**Size(bit)**|=(% style="width: 90px;background-color:#4F81BD;color:white" %)**[bit7:bit4]**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**bit3**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**bit2**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**bit1**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**bit0**
306 |(% style="width:99px" %)Value|(% style="width:107px" %)(((
307 Reserve
308 )))|(% style="width:81px" %)TEMPL_ flag|(% style="width:82px" %)TEMPH_ flag|(% style="width:87px" %)CO2L_ flag|(% style="width:53px" %)CO2H_ flag
309
310 [[image:image-20240112094817-2.png||height="294" width="1148"]]
311
312
313 ==== (% style="color:#4472c4" %)**Battery**(%%) ====
314
315 Sensor Battery Level.
316
317 Ex1: 0x0B45 = 2885mV
318
319 Ex2: 0x0B49 = 2889mV
320
321
322 ==== (% style="color:#4472c4" %)**Temperature**(%%) ====
323
324 **Example**:
325
326 If payload is: 0105H:  (0105 & 8000 == 0), temp = 0105H /10 = 26.1 degree
327
328 If payload is: FF3FH :  (FF3F & 8000 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
329
330 (FF3F & 8000:Judge whether the highest bit is 1, when the highest bit is 1, it is negative)
331
332
333 ==== (% style="color:#4472c4" %)**Humidity**(%%) ====
334
335 Read:0x(018F)=399  Value:  399 / 10=39.9, So 39.9%
336
337
338 ==== (% style="color:#4472c4" %)**Pressure**(%%) ====
339
340 **Example**:
341
342 If payload is: 279BH, Pressure = 279BH /10 = 1013.9 hPa
343
344
345 ==== (% style="color:#4472c4" %)**CO2**(%%) ====
346
347 **Example**:
348
349 If payload is: 01FDH, CO2 = 01FDH= 509ppm
350
351
352 ==== (% style="color:#4472c4" %)**Alarm flag**(%%) ====
353
354 TEMPH_flag: When it is True, the actual temperature exceeds the set alarm temperature.
355
356 TEMPL_flag: When it is True, the actual temperature lower than the set alarm temperature.
357
358 CO2H_flag: When it is True, the actual CO2 concentration exceeds the set alarm CO2 concentration.
359
360 CO2L_flag: When it is True, the actual CO2 concentration lower than the set alarm CO2 concentration.
361
362 **Example**:
363
364 AT+TEMPALARM=25,60  ~-~-~-~-~-~->  temperature: 23.1, TEMPH_flag: "False", TEMPL_flag: "True"
365
366 AT+CO2ALARM=400,2000  ~-~-~-~-~-~->  co2: 2368, CO2H_flag:"True", CO2L_flag:"False"
367
368
369 == 2.4 Payload Decoder file ==
370
371
372 In TTN, user can add a custom payload so it shows friendly reading
373
374 In the page (% style="color:#037691" %)**Applications ~-~-> Payload Formats ~-~-> Custom ~-~-> decoder**(%%) to add the decoder from:
375
376 [[https:~~/~~/github.com/dragino/dragino-end-node-decoder/tree/main>>https://github.com/dragino/dragino-end-node-decoder/tree/main/AQS01-L]]
377
378
379 == 2.5 Datalog Feature ==
380
381
382 Datalog Feature is to ensure IoT Server can get all sampling data from AQS01-L even if the LoRaWAN network is down. For each sampling, AQS01-L will store the reading for future retrieving purposes.
383
384
385 === 2.5.1 Ways to get datalog via LoRaWAN ===
386
387
388 Set PNACKMD=1, AQS01-L will wait for ACK for every uplink, when there is no LoRaWAN network,AQS01-L will mark these records with non-ack messages and store the sensor data, and it will send all messages (10s interval) after the network recovery.
389
390 * (((
391 a) AQS01-L will do an ACK check for data records sending to make sure every data arrive server.
392 )))
393 * (((
394 b) AQS01-L will send data in **CONFIRMED Mode** when PNACKMD=1, but AQS01-L won't re-transmit the packet if it doesn't get ACK, it will just mark it as a NONE-ACK message. In a future uplink if AQS01-L gets a ACK, AQS01-L will consider there is a network connection and resend all NONE-ACK messages.
395
396
397 )))
398
399 === 2.5.2 Unix TimeStamp ===
400
401
402 **AQS01-L uses Unix TimeStamp format based on**
403
404
405 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LHT65N%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20Manual/WebHome/image-20220523001219-11.png?width=627&height=97&rev=1.1||alt="图片-20220523001219-11.png" height="97" width="627"]]
406
407 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
408
409 Below is the converter example
410
411 [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LHT65N%20LoRaWAN%20Temperature%20%26%20Humidity%20Sensor%20Manual/WebHome/image-20220523001219-12.png?width=720&height=298&rev=1.1||alt="图片-20220523001219-12.png" height="298" width="720"]]
412
413
414 So, we can use AT+TIMESTAMP=1611889405 or downlink 3060137afd00 to set the current time 2021 – Jan ~-~- 29 Friday 03:03:25
415
416
417 === 2.5.3 Set Device Time ===
418
419
420 User need to set (% style="color:blue" %)**SYNCMOD=1**(%%) to enable sync time via MAC command.
421
422 Once AQS01-L Joined LoRaWAN network, it will send the MAC command (DeviceTimeReq) and the server will reply with (DeviceTimeAns) to send the current time to AQS01-L. If AQS01-L fails to get the time from the server, AQS01-L will use the internal time and wait for next time request (AT+SYNCTDC to set the time request period, default is 10 days).
423
424 (% style="color:red" %)**Note: LoRaWAN Server need to support LoRaWAN v1.0.3(MAC v1.0.3) or higher to support this MAC command feature, Chirpstack,TTN V3 and loriot support but TTN v2 doesn't support. If server doesn't support this command, it will through away uplink packet with this command, so user will lose the packet with time request for TTN v2 if SYNCMOD=1.**
425
426
427 === 2.5.4 Datalog Uplink payload (FPORT~=3) ===
428
429
430 The Datalog uplinks will use below payload format.
431
432 **Retrieval data payload:**
433
434 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
435 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
436 **Size(bytes)**
437 )))|=(% style="width: 40px; background-color:#4F81BD;color:white" %)**2**|=(% style="width: 55px; background-color:#4F81BD;color:white" %)**2**|=(% style="width: 65px; background-color:#4F81BD;color:white" %)**2**|=(% style="width: 180px; background-color:#4F81BD;color:white" %)**1**|=(% style="width: 100px; background-color:#4F81BD;color:white" %)**4**
438 |(% style="width:103px" %)Value|(% style="width:68px" %)(((
439 CO2
440 )))|(% style="width:104px" %)(((
441 (((
442 Humidity
443 )))
444
445 (((
446
447 )))
448 )))|(% style="width:87px" %)(((
449 Temperature
450 )))|(% style="width:178px" %)(((
451 Poll message flag
452 )))|(% style="width:137px" %)Unix Time Stamp
453
454 **Poll message flag :**
455
456
457 [[image:image-20240112095124-3.png||height="101" width="483"]]
458
459 **No ACK Message**:  1: This message means this payload is fromn Uplink Message which doesn't get ACK from the server before ( for **PNACKMD=1** feature)
460
461 **Poll Message Flag**: 1: This message is a poll message reply.
462
463 * Poll Message Flag is set to 1.
464
465 * Each data entry is 11 bytes, to save airtime and battery, devices will send max bytes according to the current DR and Frequency bands.
466
467 For example, in US915 band, the max payload for different DR is:
468
469 **a) DR0:** max is 11 bytes so one entry of data
470
471 **b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
472
473 **c) DR2:** total payload includes 11 entries of data
474
475 **d) DR3: **total payload includes 22 entries of data.
476
477 If devise doesn't have any data in the polling time. Device will uplink 11 bytes of 0   
478
479 **Example:**
480
481 If AQS01-L has below data inside Flash:
482
483
484 [[image:image-20240112095403-4.png||height="278" width="523"]]
485
486 If user sends below downlink command: 3165A010F865A015E405
487
488 Where : Start time: 65A010F8 = time 24/1/11 16:02:00
489
490 Stop time: 65A015E4 = time 24/1/11 16:23:00
491
492
493 **AQS01-L will uplink this payload.**
494
495 [[image:image-20240112101407-1.png||height="244" width="1092"]]
496
497
498 //**01E401A400F14065A0112E**//01CE01A500F14065A0114F01C401A400F14065A0118A02EC01B300F24065A0138202F001B100F34065A013F4023801AD00F24065A0143302EB01BC00F24065A014D603D701B900F14065A015D3
499
500
501 Where the first 11 bytes is for the first entry: 01 E4 01 A4 00 F1 40 65 A0 11 2E
502
503 * **CO2**=0x01E4=484 ppm
504 * **Hum**=0x01A4/10=42 %
505 * **Temp**=0x00F1/10=24.1 ℃
506 * **poll message flag **=0x40,means reply data,sampling uplink message.
507 * **Unix time** is 0x65A0112E=1704888040s=24/1/11 16:02:54
508
509 (% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" tabindex="-1" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||alt="数据 URI 图片" data-widget="image" draggable="true" height="15" role="presentation" title="单击并拖动以移动" width="15"]](% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220, 220, 220, 0.5); display:none" tabindex="-1" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||alt="数据 URI 图片" draggable="true" height="15" role="presentation" title="单击并拖动以移动" width="15"]](% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" tabindex="-1" title="单击并拖动以调整大小" %)的(% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" tabindex="-1" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||alt="数据 URI 图片" data-widget="image" draggable="true" height="15" role="presentation" title="单击并拖动以移动" width="15"]](% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220, 220, 220, 0.5); display:none" tabindex="-1" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||alt="数据 URI 图片" draggable="true" height="15" role="presentation" title="单击并拖动以移动" width="15"]](% aria-label="数据 URI 图像图像小部件" contenteditable="false" role="region" style="background-image:url(http://wiki1.dragino.com/xwiki/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.61/plugins/widget/images/handle.png); background:rgba(220,220,220,0.5); display:none" tabindex="-1" title="单击并拖动以调整大小" %)的
510
511 == 2.6 Frequency Plans ==
512
513
514 The AQS01-L uses OTAA mode and below frequency plans by default. Each frequency band use different firmware, user update the firmware to the corresponding band for their country.
515
516 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/]]
517
518
519 == 2.7 ​Firmware Change Log ==
520
521
522 **Firmware download link: **[[https:~~/~~/www.dropbox.com/scl/fo/o5v6j7qewlks12eso98kl/h?rlkey=v1ian3hmva65924j4h4n0yfz8&dl=0>>https://www.dropbox.com/scl/fo/o5v6j7qewlks12eso98kl/h?rlkey=v1ian3hmva65924j4h4n0yfz8&dl=0]]
523
524
525 = 3. Configure AQS01-L =
526
527 == 3.1 Configure Methods ==
528
529
530 AQS01-L supports below configure method:
531
532 * AT Command via Bluetooth Connection (**Recommended**): [[BLE Configure Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/BLE%20Bluetooth%20Remote%20Configure/]].
533 * AT Command via UART Connection : See [[UART Connection>>http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H2.6A0UARTConnectionforAQS01-Lmotherboard]].
534 * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
535
536 == 3.2 General Commands ==
537
538
539 These commands are to configure:
540
541 * General system settings like: uplink interval.
542 * LoRaWAN protocol & radio related command.
543
544 They are same for all Dragino Devices which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki:
545
546 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/]]
547
548
549 == 3.3 Commands special design for AQS01-L ==
550
551
552 These commands only valid for AQS01-L, as below:
553
554
555 === 3.3.1 Set Transmit Interval Time ===
556
557
558 Feature: Change LoRaWAN End Node Transmit Interval.
559
560 (% style="color:blue" %)**AT Command: AT+TDC**
561
562 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
563 |=(% style="width: 156px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 137px;background-color:#4F81BD;color:white" %)**Function**|=(% style="background-color:#4F81BD;color:white" %)**Response**
564 |(% style="width:156px" %)AT+TDC=?|(% style="width:137px" %)Show current transmit Interval|(((
565 30000
566 OK
567 the interval is 30000ms = 30s
568 )))
569 |(% style="width:156px" %)AT+TDC=60000|(% style="width:137px" %)Set Transmit Interval|(((
570 OK
571 Set transmit interval to 60000ms = 60 seconds
572 )))
573
574 (% style="color:blue" %)**Downlink Command: 0x01**
575
576 Format: Command Code (0x01) followed by 3 bytes time value.
577
578 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
579
580 * Example 1: Downlink Payload: 0100001E  ~/~/  Set Transmit Interval (TDC) = 30 seconds
581 * Example 2: Downlink Payload: 0100003C  ~/~/  Set Transmit Interval (TDC) = 60 seconds
582
583 === 3.3.2 Get Device Status ===
584
585
586 Send a LoRaWAN downlink to ask device send Alarm settings.
587
588 (% style="color:blue" %)**Downlink Payload:  **(%%)0x26 01
589
590 Sensor will upload Device Status via FPORT=5. See payload section for detail.
591
592
593 === 3.3.3 Set Temperature Alarm Threshold ===
594
595
596 * (% style="color:blue" %)**AT Command:**
597
598 (% style="color:#037691" %)**AT+TEMPALARM=min,max  (Among them, 100 is an invalid value, which means not set)**
599
600 * When min=100, and max≠100, Alarm higher than max
601 * When min≠100, and max=100, Alarm lower than min
602 * When min≠100 and max≠100, Alarm higher than max or lower than min
603
604 Example:
605
606 AT+TEMPALARM=100,30   ~/~/ Alarm when temperature higher than 30.
607
608 * (% style="color:blue" %)**Downlink Payload:**
609
610 (% style="color:#037691" %)**0x(0C 01 64 1E)**  (%%) ~/~/ Set AT+TEMPALARM=100,30
611
612 (% style="color:red" %)**(note: 3^^rd^^ byte= 0x64 for low limit(not set), 4^^th^^ byte = 0x1E for high limit: 30)**
613
614
615 === 3.3.4 Set CO2 Alarm Threshold ===
616
617
618 * (% style="color:blue" %)**AT Command:**
619
620 (% style="color:#037691" %)**AT+CO2ALARM=min,max  (Among them, 0 is an invalid value, which means not set)**
621
622 * When min=0, and max≠0, Alarm higher than max
623 * When min≠0, and max=0, Alarm lower than min
624 * When min≠0 and max≠0, Alarm higher than max or lower than min
625
626 Example:
627
628 AT+CO2ALARM=400,0  ~/~/ Alarm when humidity lower than 400.
629
630 * (% style="color:blue" %)**Downlink Payload:**
631
632 (% style="color:#037691" %)**0x(0C 02  01 90 00 00)**(%%)  ~/~/ Set AT+CO2ALARM=400,0
633
634 (% style="color:red" %)**(note: 3^^rd^^ byte+4^^rd^^ byte= 0x0190 for low limit (400ppm), 5^^th^^ byte+6^^rd^^ byte = 0x00 for high limit (not set))**
635
636
637 === 3.3.5 Set Alarm Interval ===
638
639
640 The shortest time of two Alarm packet. (unit: min)
641
642 * (% style="color:blue" %)**AT Command:**
643
644 (% style="color:#037691" %)**AT+ATDC=20** (%%) ~/~/ The shortest interval of two Alarm packets is 20 minutes, Means if there is an alarm packet uplink, there won't be another one in the next 20 minutes.
645
646 * (% style="color:blue" %)**Downlink Payload:**
647
648 (% style="color:#037691" %)**0x(0D 14)**(%%)     **~-~--> ** Set AT+ATDC=0x 14 = 20 minutes
649
650
651 === 3.3.6 Set Time Sync Mode ===
652
653
654 Feature: Enable/Disable Sync system time via LoRaWAN MAC Command (DeviceTimeReq), LoRaWAN server must support v1.0.3 protocol to reply to this command.
655
656 SYNCMOD is set to 1 by default. If user wants to set a different time from the LoRaWAN server, the user needs to set this to 0.
657
658 (% style="color:blue" %)**AT Command:**
659
660 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:500px" %)
661 |=(% style="width: 155px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 288px; background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 57px;background-color:#4F81BD;color:white" %)**Response**
662 |(% style="width:155px" %)(((
663 AT+SYNCMOD=1
664 )))|(% style="width:259px" %)(((
665 Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) The default is zero time zone.
666 )))|(% style="width:44px" %)(((
667 OK
668 )))
669 |(% style="width:155px" %)(((
670 AT+SYNCMOD=1,8
671 )))|(% style="width:259px" %)(((
672 Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) Set to East eight time zone.
673 )))|(% style="width:44px" %)(((
674 OK
675 )))
676 |(% style="width:155px" %)AT+SYNCMOD=1,-12|(% style="width:259px" %)Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) Set to West Twelve Time Zone.|(% style="width:44px" %)OK
677
678 (% style="color:blue" %)**Downlink Command:**
679
680 0x28 01 ~/~/ Same As AT+SYNCMOD=1
681
682 0x28 01 08 ~/~/ Same As AT+SYNCMOD=1,8
683
684 0x28 01 F4 ~/~/ Same As AT+SYNCMOD=1,-12
685
686 0x28 00 ~/~/ Same As AT+SYNCMOD=0
687
688
689 === 3.3.7 Request the server to send an ACK ===
690
691
692 (% style="color:blue" %)**AT Command: AT+PNACKMD**
693
694 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
695 |=(% style="width: 160px;background-color:#4F81BD;color:white" %)**Command Example**|=(% style="width: 293px; background-color:#4F81BD;color:white" %)**Function**|=(% style="width: 57px;background-color:#4F81BD;color:white" %)**Response**
696 |(% style="width:155px" %)AT+PNACKMD=1|(% style="width:253px" %)If the node uploads the ACK as confirm, it will request the server to send an ACK. If the server ack is not received, the node will upload the packets that have not received the ACK the next time it receives the ACK|(% style="width:100px" %)1(((
697 OK
698 )))
699 |(% style="width:155px" %)AT+PNACKMD=0|(% style="width:253px" %)off request the server to send an ACK|(% style="width:100px" %)(((
700 0
701 OK
702 )))
703
704 (% style="color:blue" %)**Downlink Command: 0x34**
705
706 0X34 01  ~/~/Same As AT+PNACKMD=1
707
708 0x34 00  ~/~/Same As AT+PNACKMD=0
709
710
711 == 3.4 Calibration command ==
712
713
714 (% style="color:red" %)**Note: If the device is not calibrated for the first time, there will be a certain degree of drift.**
715
716 After having performed the calibration,all following measurements will use the adjusted calibration parameters.
717
718
719 === 3.4.1 Restore factory Calibration  (AT+CALCMD~=0) ===
720
721
722 Restores calibration parameters factory calibration values.
723
724 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 00
725
726
727 === 3.4.2 Forced ABC Calibration (AT+CALCMD~=1) ===
728
729
730 Sensor will perform an ABC calibration after receiving this command if sensor has valid ABC data.The command can be used if one for some reason wants to do an ABC adjustment before one ABC period has passed(when a normal ABC calibration is done).
731
732 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 01
733
734
735 === 3.4.3 Target Calibration (AT+CALCMD~=2 Equivalent to AT+CALCMD~=2,400) ===
736
737
738 Target concentration calibration assumes that sensor is put into a target environment with a known CO2 concentration. Such as outdoor fresh air 400ppm.
739
740 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 02 ==> AT+CALCMD=2
741
742 0x0F 02 01 90 ==> AT+CALCMD=2,400
743
744 0x0F 02 01 F4 ==> AT+CALCMD=2,500
745
746
747 === 3.4.4 Background Calibration  (AT+CALCMD~=3) ===
748
749
750 A “fresh air” baseline environment is by default 400 ppm at normal ambient atmospheric pressure by sea level. It can be referenced in a crude way by placing the sensor in direct proximity to outdoor air, free of combustion sources and human presence, preferably during either by open window or fresh air inlets or similar. Calibration gas by exactly 400ppm can be purchased and used. Background calibration and ABC calibration share the same target value (fresh air = 400ppm).
751
752 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 03
753
754
755 === 3.4.5 Zero Calibration  (AT+CALCMD~=4) ===
756
757
758 Zero-calibrations are the most accurate recalibration routine. A zero-ppm environment is most easily created by flushing the optical cell of the sensor module and filling up an encapsulating enclosure with nitrogen gas, N2, displacing all previous air volume concentrations. Another less reliable or accurate zero reference point can be created by scrubbing an airflow using e.g. Soda lime.
759
760 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 04
761
762
763 == 3.5 calibration mode ==
764
765 === 3.5.1 Enabled ABC Calibration (AT+CALMOD~=1, default) ===
766
767
768 The Automatic Baseline Correction algorithm is a proprietary Senseair method for referencing to “fresh air” as the lowest, but required stable, CO2-equivalent internal signal the sensor has measured during a set time period. This time period by default is 180hrs as to catch low-occupancy and other lower-emission time periods and favourable outdoor wind-directions and similar which can plausibly and routinely expose the sensor to the most true fresh air environment. If such an environment can never be expected to occur, either by sensor locality or ever-presence of CO2 emission sources, or exposure to even lower concentrations than the natural fresh air baseline, then ABC recalibration can’t be used. In each new measurement period, the sensor will compare it to the stored one at the ABC parameters registers, and if new values show a lower CO2-equivalent raw signal while also in a stable environment, the reference is updated with these new values. The ABC algorithm also has a limit on how much it is allowed to change the baseline correction offset with, per each ABC cycle, meaning that self-calibrating to adjust to bigger drifts or signal changes may take more than one ABC cycle.
769
770 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0E 01
771
772
773 === 3.5.2 Disabled ABC Calibration (AT+CALMOD~=0) ===
774
775
776 If the device is in a greenhouse or enclosed environment, it is recommended to turn off ABC calibration. And use Target Calibration for calibration.
777
778 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0E 00
779
780
781 === 3.5.3 Button CO2 calibration function (Equivalent to AT+CALCMD~=3) ===
782
783
784 The first step is to put your device into sleep mode. Press the button five times quickly and the device will light up solid red for 5 seconds.
785
786 In the second step, take the device outside to an environment without combustion sources and people, let it sit for a few minutes, and then press the button three times quickly. The calibration is complete after the blue light stays on for 5 seconds.
787
788 The last step is to reset the device, press and hold the button until the green light flashes.
789
790
791 = 4. Battery & Power Consumption =
792
793 == 4.1 Battery Life ==
794
795
796 In a normal 20 minutes uplink situation , the battery life can last from 2 ~~ 8 years depends on signal environment. The Alarm feature will reduce the battery life a lot .
797
798 See below link for detail information about the battery life calculation.
799
800 [[**Battery Info & Power Consumption Analyze**>>http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
801
802
803 == 4.2 Replace Battery ==
804
805
806 AQS01-L uses an ER18505 battery. If the battery is running out, User can purchase an ER18505 battery and replace. Make sure don't mess the + & - position.
807
808 [[image:image-20240108140200-1.png||height="503" width="803"]]
809
810
811 = 5. OTA Firmware update =
812
813
814 (% class="wikigeneratedid" %)
815 User can change firmware AQS01-L to:
816
817 * Change Frequency band/ region.
818 * Update with new features.
819 * Fix bugs.
820
821 Firmware and changelog can be downloaded from : **[[Firmware download link>>https://www.dropbox.com/scl/fo/o5v6j7qewlks12eso98kl/h?rlkey=v1ian3hmva65924j4h4n0yfz8&dl=0]]**
822
823
824 Methods to Update Firmware:
825
826 * (Recommanded way) OTA firmware update via wireless : **[[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/]]**
827 * Update through UART TTL interface : **[[Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H2.6A0UARTConnectionforAQS01-Lmotherboard]]**.
828
829 = 6. FAQ =
830
831 == 6.1 Do i need to calibrate the CO2 reading of AQS01-L? ==
832
833
834 The Operating principle for CO2 measurement used in AQS01-L is Non-dispersive infrared (NDIR). There is no need Calibration for this method.
835
836
837 = 7. Order Info =
838
839
840 Part Number: (% style="color:blue" %)**AQS01-L-XX**
841
842 (% style="color:red" %)**XX**(%%): The default frequency band
843
844 * (% style="color:red" %)**AS923**(%%): LoRaWAN AS923 band
845
846 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
847
848 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
849
850 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
851
852 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
853
854 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
855
856 * (% style="color:red" %)**IN865**(%%): LoRaWAN IN865 band
857
858 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
859
860 = 8. ​Packing Info =
861
862
863 (% style="color:#037691" %)**Package Includes**:
864
865 * AQS01-L LoRaWAN Indoor CO2 Sensor
866
867 (% style="color:#037691" %)**Dimension and weight**:
868
869 * Device Size: cm
870
871 * Device Weight: g
872
873 * Package Size / pcs : cm
874
875 * Weight / pcs : g
876
877 = 9. Support =
878
879
880 * 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.
881
882 * 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.cc>>mailto:Support@dragino.cc]].