-
Notifications
You must be signed in to change notification settings - Fork 1
/
sds011.ino
51 lines (46 loc) · 1.19 KB
/
sds011.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// AIQ Station
// Temperature, Humidity and Pressure
// with Lolin ESP8266
//
// Written by Michele <o-zone@zerozone.it> Pinassi
// Released under GPLv3 - No any warranty
// *******************************
// SDS callback
//
// Wake up SDS, acquire data and save it
// *******************************
void sdsCallback() {
uint8_t timeout=0;
int error;
float pm10, pm25;
DEBUG_PRINT("[DEBUG] sdsCallback()");
if(!sdsIsWarmup) {
// Wake up, SDS !
sds.wakeup();
// Wait 30 seconds before reading values...
sdsTask.setInterval(30000); /* 30 secondi to warm up */
// Set true
sdsIsWarmup = true;
DEBUG_PRINT("[SDS011] Warming...");
} else {
while((error)&&(timeout < 10)) {
delay(500);
error = sds.read(&pm25, &pm10);
if(!error) {
lastPM25 = pm25;
lastPM10 = pm10;
DEBUG_PRINT("[SDS011] PM2.5:"+String(pm25)+" PM10:"+String(pm10));
sdsCount++;
} else {
DEBUG_PRINT("[SDS011] SDS010 error");
}
timeout++;
}
// Go back to sleep...
DEBUG_PRINT("[SDS011] Sleeping");
sds.sleep();
// Restore original interval
sdsTask.setInterval(SDS_INTERVAL);
sdsIsWarmup=false;
}
}