mirror of
https://github.com/airgradienthq/arduino.git
synced 2025-06-26 08:11:33 +02:00
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
2211fdc7a6 | |||
44dae71298 | |||
0458adb949 | |||
f51203f754 |
@ -103,13 +103,13 @@ void loop() {
|
||||
pm1Value01=pm1Value01+data1.PM_AE_UG_1_0;
|
||||
pm1Value25=pm1Value25+data1.PM_AE_UG_2_5;
|
||||
pm1Value10=pm1Value10+data1.PM_AE_UG_10_0;
|
||||
pm1PCount=pm1PCount+data1.PM_RAW_0_3;
|
||||
// pm1PCount=pm1PCount+data1.PM_RAW_0_3;
|
||||
pm1temp=pm1temp+data1.AMB_TMP;
|
||||
pm1hum=pm1hum+data1.AMB_HUM;
|
||||
pm2Value01=pm2Value01+data2.PM_AE_UG_1_0;
|
||||
pm2Value25=pm2Value25+data2.PM_AE_UG_2_5;
|
||||
pm2Value10=pm2Value10+data2.PM_AE_UG_10_0;
|
||||
pm2PCount=pm2PCount+data2.PM_RAW_0_3;
|
||||
// pm2PCount=pm2PCount+data2.PM_RAW_0_3;
|
||||
pm2temp=pm2temp+data2.AMB_TMP;
|
||||
pm2hum=pm2hum+data2.AMB_HUM;
|
||||
countPosition++;
|
||||
@ -117,13 +117,13 @@ void loop() {
|
||||
pm1Value01 = pm1Value01 / targetCount;
|
||||
pm1Value25 = pm1Value25 / targetCount;
|
||||
pm1Value10 = pm1Value10 / targetCount;
|
||||
pm1PCount = pm1PCount / targetCount;
|
||||
//pm1PCount = pm1PCount / targetCount;
|
||||
pm1temp = pm1temp / targetCount;
|
||||
pm1hum = pm1hum / targetCount;
|
||||
pm2Value01 = pm2Value01 / targetCount;
|
||||
pm2Value25 = pm2Value25 / targetCount;
|
||||
pm2Value10 = pm2Value10 / targetCount;
|
||||
pm2PCount = pm2PCount / targetCount;
|
||||
// pm2PCount = pm2PCount / targetCount;
|
||||
pm2temp = pm2temp / targetCount;
|
||||
pm2hum = pm2hum / targetCount;
|
||||
postToServer(pm1Value01, pm1Value25,pm1Value10,pm1PCount, pm1temp,pm1hum,pm2Value01, pm2Value25,pm2Value10,pm2PCount, pm2temp,pm2hum);
|
||||
@ -132,13 +132,13 @@ void loop() {
|
||||
pm1Value01=0;
|
||||
pm1Value25=0;
|
||||
pm1Value10=0;
|
||||
pm1PCount=0;
|
||||
// pm1PCount=0;
|
||||
pm1temp=0;
|
||||
pm1hum=0;
|
||||
pm2Value01=0;
|
||||
pm2Value25=0;
|
||||
pm2Value10=0;
|
||||
pm2PCount=0;
|
||||
// pm2PCount=0;
|
||||
pm2temp=0;
|
||||
pm2hum=0;
|
||||
}
|
||||
@ -189,7 +189,7 @@ void postToServer(int pm1Value01, int pm1Value25, int pm1Value10, int pm1PCount,
|
||||
+ ", \"pm01\":" + String((pm1Value01+pm2Value01)/2)
|
||||
+ ", \"pm02\":" + String((pm1Value25+pm2Value25)/2)
|
||||
+ ", \"pm10\":" + String((pm1Value10+pm2Value10)/2)
|
||||
+ ", \"pm003_count\":" + String((pm1PCount+pm2PCount)/2)
|
||||
// + ", \"pm003_count\":" + String((pm1PCount+pm2PCount)/2)
|
||||
+ ", \"atmp\":" + String((pm1temp+pm2temp)/20)
|
||||
+ ", \"rhum\":" + String((pm1hum+pm2hum)/20)
|
||||
+ ", \"boot\":" + loopCount
|
||||
@ -198,7 +198,7 @@ void postToServer(int pm1Value01, int pm1Value25, int pm1Value10, int pm1PCount,
|
||||
+ "\"pm01\":" + String(pm1Value01)
|
||||
+ ", \"pm02\":" + String(pm1Value25)
|
||||
+ ", \"pm10\":" + String(pm1Value10)
|
||||
+ ", \"pm003_count\":" + String(pm1PCount)
|
||||
// + ", \"pm003_count\":" + String(pm1PCount)
|
||||
+ ", \"atmp\":" + String(pm1temp/10)
|
||||
+ ", \"rhum\":" + String(pm1hum/10)
|
||||
+ "}"
|
||||
@ -206,7 +206,7 @@ void postToServer(int pm1Value01, int pm1Value25, int pm1Value10, int pm1PCount,
|
||||
+ " \"pm01\":" + String(pm1Value01)
|
||||
+ ", \"pm02\":" + String(pm2Value25)
|
||||
+ ", \"pm10\":" + String(pm2Value10)
|
||||
+ ", \"pm003_count\":" + String(pm2PCount)
|
||||
// + ", \"pm003_count\":" + String(pm2PCount)
|
||||
+ ", \"atmp\":" + String(pm2temp/10)
|
||||
+ ", \"rhum\":" + String(pm2hum/10)
|
||||
+ "}"
|
||||
|
@ -97,7 +97,7 @@ unsigned long previousPm = 0;
|
||||
int pm25 = -1;
|
||||
int pm01 = -1;
|
||||
int pm10 = -1;
|
||||
int pm03PCount = -1;
|
||||
//int pm03PCount = -1;
|
||||
float temp;
|
||||
int hum;
|
||||
|
||||
@ -217,14 +217,14 @@ void updatePm() {
|
||||
pm01 = data1.PM_AE_UG_1_0;
|
||||
pm25 = data1.PM_AE_UG_2_5;
|
||||
pm10 = data1.PM_AE_UG_10_0;
|
||||
pm03PCount = data1.PM_RAW_0_3;
|
||||
// pm03PCount = data1.PM_RAW_0_3;
|
||||
temp = data1.AMB_TMP;
|
||||
hum = data1.AMB_HUM;
|
||||
} else {
|
||||
pm01 = -1;
|
||||
pm25 = -1;
|
||||
pm10 = -1;
|
||||
pm03PCount = -1;
|
||||
// pm03PCount = -1;
|
||||
temp = -10001;
|
||||
hum = -10001;
|
||||
}
|
||||
@ -247,7 +247,7 @@ void sendToServer() {
|
||||
(pm01 < 0 ? "" : ", \"pm01\":" + String(pm01)) +
|
||||
(pm25 < 0 ? "" : ", \"pm02\":" + String(pm25)) +
|
||||
(pm10 < 0 ? "" : ", \"pm10\":" + String(pm10)) +
|
||||
(pm03PCount < 0 ? "" : ", \"pm003_count\":" + String(pm03PCount)) +
|
||||
// (pm03PCount < 0 ? "" : ", \"pm003_count\":" + String(pm03PCount)) +
|
||||
(TVOC < 0 ? "" : ", \"tvoc_index\":" + String(TVOC)) +
|
||||
(NOX < 0 ? "" : ", \"nox_index\":" + String(NOX)) +
|
||||
", \"atmp\":" + String(temp/10) +
|
||||
@ -336,4 +336,3 @@ String getNormalizedMac() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -12,6 +12,7 @@ The codes needs the following libraries installed:
|
||||
“U8g2” by oliver tested with version 2.32.15
|
||||
"Sensirion I2C SGP41" by Sensation Version 0.1.0
|
||||
"Sensirion Gas Index Algorithm" by Sensation Version 3.2.1
|
||||
“pms” by Markusz Kakl version 1.1.0
|
||||
"Arduino-SHT" by Johannes Winkelmann Version 1.2.2
|
||||
"Adafruit NeoPixel" by Adafruit Version 1.11.0
|
||||
|
||||
@ -124,7 +125,7 @@ unsigned long previousPm = 0;
|
||||
int pm25 = -1;
|
||||
int pm01 = -1;
|
||||
int pm10 = -1;
|
||||
int pm03PCount = -1;
|
||||
//int pm03PCount = -1;
|
||||
|
||||
const int tempHumInterval = 5000;
|
||||
unsigned long previousTempHum = 0;
|
||||
@ -173,7 +174,7 @@ void setup() {
|
||||
pinMode(9, INPUT_PULLUP);
|
||||
|
||||
buttonConfig = String(EEPROM.read(addr)).toInt();
|
||||
if (buttonConfig > 3) buttonConfig = 0;
|
||||
if (buttonConfig > 7) buttonConfig = 0;
|
||||
delay(400);
|
||||
setConfig();
|
||||
Serial.println("buttonConfig: " + String(buttonConfig));
|
||||
@ -217,21 +218,6 @@ void loop() {
|
||||
sendToServer();
|
||||
}
|
||||
|
||||
void ledTest() {
|
||||
updateOLED2("LED Test", "running", ".....");
|
||||
setRGBledColor('r');
|
||||
delay(1000);
|
||||
setRGBledColor('g');
|
||||
delay(1000);
|
||||
setRGBledColor('b');
|
||||
delay(1000);
|
||||
setRGBledColor('w');
|
||||
delay(1000);
|
||||
setRGBledColor('n');
|
||||
delay(1000);
|
||||
//LED Test
|
||||
}
|
||||
|
||||
void updateTVOC() {
|
||||
uint16_t error;
|
||||
char errorMessage[256];
|
||||
@ -287,12 +273,12 @@ void updatePm() {
|
||||
pm01 = data1.PM_AE_UG_1_0;
|
||||
pm25 = data1.PM_AE_UG_2_5;
|
||||
pm10 = data1.PM_AE_UG_10_0;
|
||||
pm03PCount = data1.PM_RAW_0_3;
|
||||
// pm03PCount = data1.PM_RAW_0_3;
|
||||
} else {
|
||||
pm01 = -1;
|
||||
pm25 = -1;
|
||||
pm10 = -1;
|
||||
pm03PCount = -1;
|
||||
// pm03PCount = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -355,7 +341,7 @@ void inConf() {
|
||||
long pressDuration = releasedTime - pressedTime;
|
||||
if (pressDuration < 1000) {
|
||||
buttonConfig = buttonConfig + 1;
|
||||
if (buttonConfig > 3) buttonConfig = 0;
|
||||
if (buttonConfig > 7) buttonConfig = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -381,26 +367,52 @@ void inConf() {
|
||||
void setConfig() {
|
||||
Serial.println("in setConfig");
|
||||
if (buttonConfig == 0) {
|
||||
updateOLED2("Temp. in C", "PM in ug/m3", "Long Press Saves");
|
||||
u8g2.setDisplayRotation(U8G2_R0);
|
||||
updateOLED2("T:C, PM:ug/m3", "LED Bar: on", "Long Press Saves");
|
||||
inF = false;
|
||||
inUSAQI = false;
|
||||
}
|
||||
if (buttonConfig == 1) {
|
||||
updateOLED2("Temp. in C", "PM in US AQI", "Long Press Saves");
|
||||
useRGBledBar = true;
|
||||
} else if (buttonConfig == 1) {
|
||||
u8g2.setDisplayRotation(U8G2_R0);
|
||||
updateOLED2("T:C, PM:US AQI", "LED Bar: on", "Long Press Saves");
|
||||
inF = false;
|
||||
inUSAQI = true;
|
||||
useRGBledBar = true;
|
||||
} else if (buttonConfig == 2) {
|
||||
updateOLED2("Temp. in F", "PM in ug/m3", "Long Press Saves");
|
||||
u8g2.setDisplayRotation(U8G2_R0);
|
||||
updateOLED2("T:F PM:ug/m3", "LED Bar: on", "Long Press Saves");
|
||||
inF = true;
|
||||
inUSAQI = false;
|
||||
useRGBledBar = true;
|
||||
} else if (buttonConfig == 3) {
|
||||
updateOLED2("Temp. in F", "PM in US AQI", "Long Press Saves");
|
||||
u8g2.setDisplayRotation(U8G2_R0);
|
||||
updateOLED2("T:F PM:US AQI", "LED Bar: on", "Long Press Saves");
|
||||
inF = true;
|
||||
inUSAQI = true;
|
||||
useRGBledBar = true;
|
||||
} else if (buttonConfig == 4) {
|
||||
updateOLED2("T:C, PM:ug/m3", "LED Bar: off", "Long Press Saves");
|
||||
inF = false;
|
||||
inUSAQI = false;
|
||||
useRGBledBar = false;
|
||||
} else if (buttonConfig == 5) {
|
||||
u8g2.setDisplayRotation(U8G2_R0);
|
||||
updateOLED2("T:C, PM:US AQI", "LED Bar: off", "Long Press Saves");
|
||||
inF = false;
|
||||
inUSAQI = true;
|
||||
useRGBledBar = false;
|
||||
} else if (buttonConfig == 6) {
|
||||
u8g2.setDisplayRotation(U8G2_R0);
|
||||
updateOLED2("T:F PM:ug/m3", "LED Bar: off", "Long Press Saves");
|
||||
inF = true;
|
||||
inUSAQI = false;
|
||||
useRGBledBar = false;
|
||||
} else if (buttonConfig == 7) {
|
||||
u8g2.setDisplayRotation(U8G2_R0);
|
||||
updateOLED2("T:F PM:US AQI", "LED Bar: off", "Long Press Saves");
|
||||
inF = true;
|
||||
inUSAQI = true;
|
||||
useRGBledBar = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -524,7 +536,7 @@ void sendToServer() {
|
||||
(pm01 < 0 ? "" : ", \"pm01\":" + String(pm01)) +
|
||||
(pm25 < 0 ? "" : ", \"pm02\":" + String(pm25)) +
|
||||
(pm10 < 0 ? "" : ", \"pm10\":" + String(pm10)) +
|
||||
(pm03PCount < 0 ? "" : ", \"pm003_count\":" + String(pm03PCount)) +
|
||||
// (pm03PCount < 0 ? "" : ", \"pm003_count\":" + String(pm03PCount)) +
|
||||
(TVOC < 0 ? "" : ", \"tvoc_index\":" + String(TVOC)) +
|
||||
(NOX < 0 ? "" : ", \"nox_index\":" + String(NOX)) +
|
||||
", \"atmp\":" + String(temp) +
|
||||
@ -627,63 +639,63 @@ void setRGBledColor(char color) {
|
||||
case 'g':
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(0, 255, 0));
|
||||
delay(100);
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
break;
|
||||
case 'y':
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(255, 255, 0));
|
||||
delay(100);
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(255, 128, 0));
|
||||
delay(100);
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
break;
|
||||
case 'r':
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(255, 0, 0));
|
||||
delay(100);
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
break;
|
||||
case 'b':
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(0, 0, 255));
|
||||
delay(100);
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
break;
|
||||
case 'w':
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(255, 255, 255));
|
||||
delay(100);
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(153, 0, 153));
|
||||
delay(100);
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
break;
|
||||
case 'z':
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(102, 0, 0));
|
||||
delay(100);
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
break;
|
||||
case 'n':
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
|
||||
delay(100);
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
break;
|
||||
@ -695,6 +707,40 @@ void setRGBledColor(char color) {
|
||||
}
|
||||
}
|
||||
|
||||
void ledTest() {
|
||||
updateOLED2("LED Test", "running", ".....");
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(255, 0, 0));
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
delay(500);
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(0, 255, 0));
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
delay(500);
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(0, 0, 255));
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
delay(500);
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(255, 255, 255));
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
delay(500);
|
||||
for (int i = 0; i < 11; i++) {
|
||||
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
|
||||
delay(30);
|
||||
pixels.show();
|
||||
}
|
||||
delay(500);
|
||||
}
|
||||
|
||||
// Calculate PM2.5 US AQI
|
||||
int PM_TO_AQI_US(int pm02) {
|
||||
if (pm02 <= 12.0) return ((50 - 0) / (12.0 - .0) * (pm02 - .0) + 0);
|
||||
|
@ -1,5 +1,5 @@
|
||||
name=AirGradient Air Quality Sensor
|
||||
version=2.4.12
|
||||
version=2.4.14
|
||||
author=AirGradient <support@airgradient.com>
|
||||
maintainer=AirGradient <support@airgradient.com>
|
||||
sentence=ESP8266 library for an air quality sensor featuring PM2.5, CO2, Temperature, TVOC and Humidity with OLED display.
|
||||
|
Reference in New Issue
Block a user