Files
arduino/examples/TestPM/TestPM.ino

82 lines
1.8 KiB
Arduino
Raw Normal View History

/*
2024-02-04 15:04:38 +07:00
This is sample code for the AirGradient library with a minimal implementation
to read PM values from the Plantower sensor.
CC BY-SA 4.0 Attribution-ShareAlike 4.0 International License
*/
#include <AirGradient.h>
#ifdef ESP8266
2024-02-04 15:04:38 +07:00
AirGradient ag = AirGradient(DIY_BASIC);
#else
2024-02-04 15:04:38 +07:00
// AirGradient ag = AirGradient(ONE_INDOOR);
AirGradient ag = AirGradient(OPEN_AIR_OUTDOOR);
#endif
void failedHandler(String msg);
void setup() {
Serial.begin(115200);
#ifdef ESP8266
if (ag.pms5003.begin(&Serial) == false) {
failedHandler("Init PMS5003 failed");
}
#else
if (ag.getBoardType() == OPEN_AIR_OUTDOOR) {
if (ag.pms5003t_1.begin(Serial0) == false) {
failedHandler("Init PMS5003T failed");
}
} else {
if (ag.pms5003.begin(Serial0) == false) {
failedHandler("Init PMS5003T failed");
}
}
#endif
}
void loop() {
int PM2;
bool readResul = false;
#ifdef ESP8266
if (ag.pms5003.readData()) {
PM2 = ag.pms5003.getPm25Ae();
Serial.printf("PM2.5 in ug/m3: %d\r\n", PM2);
Serial.printf("PM2.5 in US AQI: %d\r\n",
ag.pms5003.convertPm25ToUsAqi(PM2));
}
#else
if (ag.getBoardType() == OPEN_AIR_OUTDOOR) {
if (ag.pms5003t_1.readData()) {
PM2 = ag.pms5003t_1.getPm25Ae();
readResul = true;
}
} else {
if (ag.pms5003.readData()) {
PM2 = ag.pms5003.getPm25Ae();
readResul = true;
}
}
if (readResul) {
Serial.printf("PM2.5 in ug/m3: %d\r\n", PM2);
if (ag.getBoardType() == OPEN_AIR_OUTDOOR) {
Serial.printf("PM2.5 in US AQI: %d\r\n",
ag.pms5003t_1.convertPm25ToUsAqi(PM2));
} else {
Serial.printf("PM2.5 in US AQI: %d\r\n",
ag.pms5003.convertPm25ToUsAqi(PM2));
}
}
#endif
delay(5000);
}
void failedHandler(String msg) {
while (true) {
Serial.println(msg);
delay(1000);
}
}