Version 109.2 by Xiaoling on 2024/06/07 14:15

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 == 2.3 ​Uplink Payload ==
198
199 === 2.3.1 Device Status, FPORT~=5 ===
200
201
202 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.
203
204 The Payload format is as below.
205
206 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
207 |(% colspan="6" style="background-color:#4f81bd; color:white" %)**Device Status (FPORT=5)**
208 |(% 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**
209 |(% 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
210
211 Example parse in TTNv3
212
213 [[image:image-20240112094511-1.png||height="280" width="1110"]]
214
215
216 (% style="color:#037691" %)**Sensor Model**(%%): For AQS01-L, this value is 0x37
217
218 (% style="color:#037691" %)**Firmware Version**(%%): 0x0100, Means: v1.0.0 version
219
220 (% style="color:#037691" %)**Frequency Band**:
221
222 0x01: EU868
223
224 0x02: US915
225
226 0x03: IN865
227
228 0x04: AU915
229
230 0x05: KZ865
231
232 0x06: RU864
233
234 0x07: AS923
235
236 0x08: AS923-1
237
238 0x09: AS923-2
239
240 0x0a: AS923-3
241
242 0x0b: CN470
243
244 0x0c: EU433
245
246 0x0d: KR920
247
248 0x0e: MA869
249
250
251 (% style="color:#037691" %)**Sub-Band**:
252
253 AU915 and US915:value 0x00 ~~ 0x08
254
255 CN470: value 0x0B ~~ 0x0C
256
257 Other Bands: Always 0x00
258
259
260 (% style="color:#037691" %)**Battery Info**:
261
262 Check the battery voltage.
263
264 Ex1: 0x0B45 = 2885mV
265
266 Ex2: 0x0B49 = 2889mV
267
268
269 === 2.3.2  Sensor Data. FPORT~=2 ===
270
271
272 Sensor Data is uplink via FPORT=2
273
274 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:490px" %)
275 |=(% style="width: 70px;background-color:#4F81BD;color:white" %)(((
276 **Size(bytes)**
277 )))|=(% 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
278 |(% style="width:99px" %)Value|(% style="width:69px" %)(((
279 Battery
280 )))|(% style="width:130px" %)Temperature|(% style="width:82px" %)(((
281 Humidity
282 )))|(% style="width:87px" %)Pressure|(% style="width:53px" %)(((
283 CO2
284 )))|(% style="width:53px" %)Alarm flag
285
286 **Alarm flag:**
287
288 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:480px" %)
289 |=(% 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**
290 |(% style="width:99px" %)Value|(% style="width:107px" %)(((
291 Reserve
292 )))|(% style="width:81px" %)TEMPL_ flag|(% style="width:82px" %)TEMPH_ flag|(% style="width:87px" %)CO2L_ flag|(% style="width:53px" %)CO2H_ flag
293
294 [[image:image-20240112094817-2.png||height="294" width="1148"]]
295
296
297 ==== (% style="color:#4472c4" %)**Battery**(%%) ====
298
299 Sensor Battery Level.
300
301 Ex1: 0x0B45 = 2885mV
302
303 Ex2: 0x0B49 = 2889mV
304
305
306 ==== (% style="color:#4472c4" %)**Temperature**(%%) ====
307
308 **Example**:
309
310 If payload is: 0105H:  (0105 & 8000 == 0), temp = 0105H /10 = 26.1 degree
311
312 If payload is: FF3FH :  (FF3F & 8000 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
313
314 (FF3F & 8000:Judge whether the highest bit is 1, when the highest bit is 1, it is negative)
315
316
317 ==== (% style="color:#4472c4" %)**Humidity**(%%) ====
318
319 Read:0x(018F)=399  Value:  399 / 10=39.9, So 39.9%
320
321 (% style="color:#4472c4" %)**Pressure**
322
323 **Example**:
324
325 If payload is: 279BH, Pressure = 279BH /10 = 1013.9 hPa
326
327
328 ==== (% style="color:#4472c4" %)**CO2**(%%) ====
329
330 **Example**:
331
332 If payload is: 01FDH, CO2 = 01FDH= 509ppm
333
334
335 ==== (% style="color:#4472c4" %)**Alarm flag**(%%) ====
336
337 TEMPH_flag: When it is True, the actual temperature exceeds the set alarm temperature.
338
339 TEMPL_flag: When it is True, the actual temperature lower than the set alarm temperature.
340
341 CO2H_flag: When it is True, the actual CO2 concentration exceeds the set alarm CO2 concentration.
342
343 CO2L_flag: When it is True, the actual CO2 concentration lower than the set alarm CO2 concentration.
344
345 **Example**:
346
347 AT+TEMPALARM=25,60  ~-~-~-~-~-~->  temperature: 23.1, TEMPH_flag: "False", TEMPL_flag: "True"
348
349 AT+CO2ALARM=400,2000  ~-~-~-~-~-~->  co2: 2368, CO2H_flag:"True", CO2L_flag:"False"
350
351
352 == 2.4 Payload Decoder file ==
353
354
355 In TTN, user can add a custom payload so it shows friendly reading
356
357 In the page (% style="color:#037691" %)**Applications ~-~-> Payload Formats ~-~-> Custom ~-~-> decoder**(%%) to add the decoder from:
358
359 [[https:~~/~~/github.com/dragino/dragino-end-node-decoder/tree/main>>https://github.com/dragino/dragino-end-node-decoder/tree/main/AQS01-L]]
360
361
362 == 2.5 Datalog Feature ==
363
364
365 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.
366
367
368 === 2.5.1 Ways to get datalog via LoRaWAN ===
369
370
371 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.
372
373 * (((
374 a) AQS01-L will do an ACK check for data records sending to make sure every data arrive server.
375 )))
376 * (((
377 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.
378
379
380 )))
381
382 === 2.5.2 Unix TimeStamp ===
383
384
385 **AQS01-L uses Unix TimeStamp format based on**
386
387
388 [[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"]]
389
390 User can get this time from link:  [[https:~~/~~/www.epochconverter.com/>>url:https://www.epochconverter.com/]] :
391
392 Below is the converter example
393
394 [[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"]]
395
396
397 So, we can use AT+TIMESTAMP=1611889405 or downlink 3060137afd00 to set the current time 2021 – Jan ~-~- 29 Friday 03:03:25
398
399
400 === 2.5.3 Set Device Time ===
401
402
403 User need to set (% style="color:blue" %)**SYNCMOD=1**(%%) to enable sync time via MAC command.
404
405 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).
406
407 (% 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.**
408
409
410 === 2.5.4 Datalog Uplink payload (FPORT~=3) ===
411
412
413 The Datalog uplinks will use below payload format.
414
415 **Retrieval data payload:**
416
417 (% border="1" cellspacing="5" style="background-color:#f2f2f2; width:500px" %)
418 |=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
419 **Size(bytes)**
420 )))|=(% 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**
421 |(% style="width:103px" %)Value|(% style="width:68px" %)(((
422 CO2
423 )))|(% style="width:104px" %)(((
424 (((
425 Humidity
426 )))
427
428 (((
429
430 )))
431 )))|(% style="width:87px" %)(((
432 Temperature
433 )))|(% style="width:178px" %)(((
434 Poll message flag
435 )))|(% style="width:137px" %)Unix Time Stamp
436
437 **Poll message flag :**
438
439
440 [[image:image-20240112095124-3.png||height="101" width="483"]]
441
442 **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)
443
444 **Poll Message Flag**: 1: This message is a poll message reply.
445
446 * Poll Message Flag is set to 1.
447
448 * Each data entry is 11 bytes, to save airtime and battery, devices will send max bytes according to the current DR and Frequency bands.
449
450 For example, in US915 band, the max payload for different DR is:
451
452 **a) DR0:** max is 11 bytes so one entry of data
453
454 **b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
455
456 **c) DR2:** total payload includes 11 entries of data
457
458 **d) DR3: **total payload includes 22 entries of data.
459
460 If devise doesn't have any data in the polling time. Device will uplink 11 bytes of 0   
461
462 **Example:**
463
464 If AQS01-L has below data inside Flash:
465
466
467 [[image:image-20240112095403-4.png||height="278" width="523"]]
468
469 If user sends below downlink command: 3165A010F865A015E405
470
471 Where : Start time: 65A010F8 = time 24/1/11 16:02:00
472
473 Stop time: 65A015E4 = time 24/1/11 16:23:00
474
475
476 **AQS01-L will uplink this payload.**
477
478 [[image:image-20240112101407-1.png||height="244" width="1092"]]
479
480
481 //**01E401A400F14065A0112E**//01CE01A500F14065A0114F01C401A400F14065A0118A02EC01B300F24065A0138202F001B100F34065A013F4023801AD00F24065A0143302EB01BC00F24065A014D603D701B900F14065A015D3
482
483
484 Where the first 11 bytes is for the first entry: 01 E4 01 A4 00 F1 40 65 A0 11 2E
485
486 * **CO2**=0x01E4=484 ppm
487 * **Hum**=0x01A4/10=42 %
488 * **Temp**=0x00F1/10=24.1 ℃
489 * **poll message flag **=0x40,means reply data,sampling uplink message.
490 * **Unix time** is 0x65A0112E=1704888040s=24/1/11 16:02:54
491
492 (% 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="单击并拖动以调整大小" %)的
493
494 == 2.6 Frequency Plans ==
495
496
497 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.
498
499 [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/>>http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/]]
500
501
502 == 2.7 ​Firmware Change Log ==
503
504
505 **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]]
506
507
508 = 3. Configure AQS01-L =
509
510 == 3.1 Configure Methods ==
511
512
513 AQS01-L supports below configure method:
514
515 * AT Command via Bluetooth Connection (**Recommended**): [[BLE Configure Instruction>>http://wiki.dragino.com/xwiki/bin/view/Main/BLE%20Bluetooth%20Remote%20Configure/]].
516 * 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]].
517 * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
518
519 == 3.2 General Commands ==
520
521
522 These commands are to configure:
523
524 * General system settings like: uplink interval.
525 * LoRaWAN protocol & radio related command.
526
527 They are same for all Dragino Devices which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki:
528
529 [[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/]]
530
531
532 == 3.3 Commands special design for AQS01-L ==
533
534
535 These commands only valid for AQS01-L, as below:
536
537
538 === 3.3.1 Set Transmit Interval Time ===
539
540
541 Feature: Change LoRaWAN End Node Transmit Interval.
542
543 (% style="color:blue" %)**AT Command: AT+TDC**
544
545 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
546 |=(% 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**
547 |(% style="width:156px" %)AT+TDC=?|(% style="width:137px" %)Show current transmit Interval|(((
548 30000
549 OK
550 the interval is 30000ms = 30s
551 )))
552 |(% style="width:156px" %)AT+TDC=60000|(% style="width:137px" %)Set Transmit Interval|(((
553 OK
554 Set transmit interval to 60000ms = 60 seconds
555 )))
556
557 (% style="color:blue" %)**Downlink Command: 0x01**
558
559 Format: Command Code (0x01) followed by 3 bytes time value.
560
561 If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
562
563 * Example 1: Downlink Payload: 0100001E  ~/~/  Set Transmit Interval (TDC) = 30 seconds
564 * Example 2: Downlink Payload: 0100003C  ~/~/  Set Transmit Interval (TDC) = 60 seconds
565
566 === 3.3.2 Get Device Status ===
567
568
569 Send a LoRaWAN downlink to ask device send Alarm settings.
570
571 (% style="color:blue" %)**Downlink Payload:  **(%%)0x26 01
572
573 Sensor will upload Device Status via FPORT=5. See payload section for detail.
574
575
576 === 3.3.3 Set Temperature Alarm Threshold ===
577
578
579 * (% style="color:blue" %)**AT Command:**
580
581 (% style="color:#037691" %)**AT+TEMPALARM=min,max  (Among them, 100 is an invalid value, which means not set)**
582
583 * When min=100, and max≠100, Alarm higher than max
584 * When min≠100, and max=100, Alarm lower than min
585 * When min≠100 and max≠100, Alarm higher than max or lower than min
586
587 Example:
588
589 AT+TEMPALARM=100,30   ~/~/ Alarm when temperature higher than 30.
590
591 * (% style="color:blue" %)**Downlink Payload:**
592
593 (% style="color:#037691" %)**0x(0C 01 64 1E)**  (%%) ~/~/ Set AT+TEMPALARM=100,30
594
595 (% style="color:red" %)**(note: 3^^rd^^ byte= 0x64 for low limit(not set), 4^^th^^ byte = 0x1E for high limit: 30)**
596
597
598 === 3.3.4 Set CO2 Alarm Threshold ===
599
600
601 * (% style="color:blue" %)**AT Command:**
602
603 (% style="color:#037691" %)**AT+CO2ALARM=min,max  (Among them, 0 is an invalid value, which means not set)**
604
605 * When min=0, and max≠0, Alarm higher than max
606 * When min≠0, and max=0, Alarm lower than min
607 * When min≠0 and max≠0, Alarm higher than max or lower than min
608
609 Example:
610
611 AT+CO2ALARM=400,0  ~/~/ Alarm when humidity lower than 400.
612
613 * (% style="color:blue" %)**Downlink Payload:**
614
615 (% style="color:#037691" %)**0x(0C 02  01 90 00 00)**(%%)  ~/~/ Set AT+CO2ALARM=400,0
616
617 (% 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))**
618
619
620 === 3.3.5 Set Alarm Interval ===
621
622
623 The shortest time of two Alarm packet. (unit: min)
624
625 * (% style="color:blue" %)**AT Command:**
626
627 (% 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.
628
629 * (% style="color:blue" %)**Downlink Payload:**
630
631 (% style="color:#037691" %)**0x(0D 14)**(%%)     **~-~--> ** Set AT+ATDC=0x 14 = 20 minutes
632
633
634 === 3.3.6 Set Time Sync Mode ===
635
636
637 Feature: Enable/Disable Sync system time via LoRaWAN MAC Command (DeviceTimeReq), LoRaWAN server must support v1.0.3 protocol to reply to this command.
638
639 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.
640
641 (% style="color:blue" %)**AT Command:**
642
643 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:500px" %)
644 |=(% 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**
645 |(% style="width:155px" %)(((
646 AT+SYNCMOD=1
647 )))|(% style="width:259px" %)(((
648 Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) The default is zero time zone.
649 )))|(% style="width:44px" %)(((
650 OK
651 )))
652 |(% style="width:155px" %)(((
653 AT+SYNCMOD=1,8
654 )))|(% style="width:259px" %)(((
655 Enable Sync system time via LoRaWAN MAC Command (DeviceTimeReq) Set to East eight time zone.
656 )))|(% style="width:44px" %)(((
657 OK
658 )))
659 |(% 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
660
661 (% style="color:blue" %)**Downlink Command:**
662
663 0x28 01 ~/~/ Same As AT+SYNCMOD=1
664
665 0x28 01 08 ~/~/ Same As AT+SYNCMOD=1,8
666
667 0x28 01 F4 ~/~/ Same As AT+SYNCMOD=1,-12
668
669 0x28 00 ~/~/ Same As AT+SYNCMOD=0
670
671
672 === 3.3.7 Request the server to send an ACK ===
673
674
675 (% style="color:blue" %)**AT Command: AT+PNACKMD**
676
677 (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
678 |=(% 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**
679 |(% 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(((
680 OK
681 )))
682 |(% style="width:155px" %)AT+PNACKMD=0|(% style="width:253px" %)off request the server to send an ACK|(% style="width:100px" %)(((
683 0
684 OK
685 )))
686
687 (% style="color:blue" %)**Downlink Command: 0x34**
688
689 0X34 01  ~/~/Same As AT+PNACKMD=1
690
691 0x34 00  ~/~/Same As AT+PNACKMD=0
692
693
694 == 3.4 Calibration command ==
695
696
697 (% style="color:red" %)**Note: If the device is not calibrated for the first time, there will be a certain degree of drift.**
698
699 After having performed the calibration,all following measurements will use the adjusted calibration parameters.
700
701
702 === 3.4.1 Restore factory Calibration  (AT+CALCMD~=0) ===
703
704
705 Restores calibration parameters factory calibration values.
706
707 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 00
708
709
710 === 3.4.2 Forced ABC Calibration (AT+CALCMD~=1) ===
711
712
713 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).
714
715 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 01
716
717
718 === 3.4.3 Target Calibration (AT+CALCMD~=2 Equivalent to AT+CALCMD~=2,400) ===
719
720
721 Target concentration calibration assumes that sensor is put into a target environment with a known CO2 concentration. Such as outdoor fresh air 400ppm.
722
723 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 02 ==> AT+CALCMD=2
724
725 0x0F 02 01 90 ==> AT+CALCMD=2,400
726
727 0x0F 02 01 F4 ==> AT+CALCMD=2,500
728
729
730 === 3.4.4 Background Calibration  (AT+CALCMD~=3) ===
731
732
733 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).
734
735 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 03
736
737
738 === 3.4.5 Zero Calibration  (AT+CALCMD~=4) ===
739
740
741 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.
742
743 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0F 04
744
745
746 == 3.5 calibration mode ==
747
748 === 3.5.1 Enabled ABC Calibration (AT+CALMOD~=1, default) ===
749
750
751 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.
752
753 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0E 01
754
755
756 === 3.5.2 Disabled ABC Calibration (AT+CALMOD~=0) ===
757
758
759 If the device is in a greenhouse or enclosed environment, it is recommended to turn off ABC calibration. And use Target Calibration for calibration.
760
761 (% style="color:blue" %)**Downlink Payload**(%%)**:  **0x0E 00
762
763
764 === 3.5.3 Button CO2 calibration function (Equivalent to AT+CALCMD~=3) ===
765
766
767 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.
768
769 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.
770
771 The last step is to reset the device, press and hold the button until the green light flashes.
772
773
774 = 4. Battery & Power Consumption =
775
776 == 4.1 Battery Life ==
777
778
779 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 .
780
781 See below link for detail information about the battery life calculation.
782
783 [[**Battery Info & Power Consumption Analyze**>>http://wiki.dragino.com/xwiki/bin/view/Main/How%20to%20calculate%20the%20battery%20life%20of%20Dragino%20sensors%3F/]] .
784
785
786 == 4.2 Replace Battery ==
787
788
789 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.
790
791 [[image:image-20240108140200-1.png||height="503" width="803"]]
792
793
794 = 5. OTA Firmware update =
795
796
797 (% class="wikigeneratedid" %)
798 User can change firmware AQS01-L to:
799
800 * Change Frequency band/ region.
801 * Update with new features.
802 * Fix bugs.
803
804 Firmware and changelog can be downloaded from : **[[Firmware download link>>https://www.dropbox.com/scl/fo/o5v6j7qewlks12eso98kl/h?rlkey=v1ian3hmva65924j4h4n0yfz8&dl=0]]**
805
806
807 Methods to Update Firmware:
808
809 * (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/]]**
810 * 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]]**.
811
812 = 6. FAQ =
813
814 == 6.1 Do i need to calibrate the CO2 reading of AQS01-L? ==
815
816
817 The Operating principle for CO2 measurement used in AQS01-L is Non-dispersive infrared (NDIR). There is no need Calibration for this method.
818
819
820 = 7. Order Info =
821
822
823 Part Number: (% style="color:blue" %)**AQS01-L-XX**
824
825 (% style="color:red" %)**XX**(%%): The default frequency band
826
827 * (% style="color:red" %)**AS923**(%%): LoRaWAN AS923 band
828
829 * (% style="color:red" %)**AU915**(%%): LoRaWAN AU915 band
830
831 * (% style="color:red" %)**EU433**(%%): LoRaWAN EU433 band
832
833 * (% style="color:red" %)**EU868**(%%): LoRaWAN EU868 band
834
835 * (% style="color:red" %)**KR920**(%%): LoRaWAN KR920 band
836
837 * (% style="color:red" %)**US915**(%%): LoRaWAN US915 band
838
839 * (% style="color:red" %)**IN865**(%%): LoRaWAN IN865 band
840
841 * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
842
843 = 8. ​Packing Info =
844
845
846 (% style="color:#037691" %)**Package Includes**:
847
848 * AQS01-L LoRaWAN Indoor CO2 Sensor
849
850 (% style="color:#037691" %)**Dimension and weight**:
851
852 * Device Size: cm
853
854 * Device Weight: g
855
856 * Package Size / pcs : cm
857
858 * Weight / pcs : g
859
860 = 9. Support =
861
862
863 * 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.
864
865 * 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]].