官网可以购买SGP30模块,模块供电电压是1.8V-5.0V,购买地址:SGP30模块(点击购买)
注:新版本的相应软件库需要更新-SGP30.7z(点击下载)
使用SGP30模块对空气中的VOC和CO2进行监测,获取空气质量状况。
零知开源---零知标准板
SGP30多像素气体传感器模块
软件是用零知开源原件,可以到软件下载版块下载。
注:模块接到开发板默认的I2C接口上,即A4,A5引脚,我们官网购买的模块是供电是1.8v-5.0v,淘宝上很多是1.8v电压供电注意供电
/*
* 空气质量:VOC,CO2测量
* 零知开源-[url=http://www.lingzhilab.com]www.lingzhilab.com[/url]
*/
#include "Adafruit_SGP30.h"
Adafruit_SGP30 sgp;
uint32_t getAbsoluteHumidity(float temperature, float humidity) {
// approximation formula from Sensirion SGP30 Driver Integration chapter 3.15
const float absoluteHumidity = 216.7f * ((humidity / 100.0f) * 6.112f *
exp((17.62f * temperature) / (243.12f + temperature)) /
(273.15f + temperature)); // [g/m^3]
const uint32_t absoluteHumidityScaled =
static_cast<uint32_t>(1000.0f * absoluteHumidity); // [mg/m^3]
return absoluteHumidityScaled;
}
void setup() {
Serial.begin(9600);
Serial.println("SGP30 test");
if (! sgp.begin()){
Serial.println("Sensor not found :(");
while (1);
}
Serial.print("Found SGP30 serial #");
Serial.print(sgp.serialnumber[0], HEX);
Serial.print(sgp.serialnumber[1], HEX);
Serial.println(sgp.serialnumber[2], HEX);
}
int counter = 0;
void loop() {
//float temperature = 22.1; // [°C]
//float humidity = 45.2; // [%RH]
//sgp.setHumidity(getAbsoluteHumidity(temperature, humidity));
if (! sgp.IAQmeasure()) {
Serial.println("Measurement failed");
return;
}
Serial.print("TVOC "); Serial.print(sgp.TVOC); Serial.print(" ppb\t");
Serial.print("eCO2 "); Serial.print(sgp.eCO2); Serial.println(" ppm");
delay(1000);
counter++;
if (counter == 30) {
counter = 0;
uint16_t TVOC_base, eCO2_base;
if (! sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) {
Serial.println("Failed to get baseline readings");
return;
}
Serial.print("****Baseline values: eCO2: 0x"); Serial.print(eCO2_base, HEX);
Serial.print(" & TVOC: 0x"); Serial.println(TVOC_base, HEX);
}
}