盛思锐出品的CO2传感器,模块带有温湿度数据测量,具有高稳定性,温度补偿。
模块引脚说明如下
此处我们使用的是I2C接口,供电3.3v,因此只需要模块接入3.3v电源,共地,再把传感器模块SCL接入零知标准板的A5,模块SDA脚接入零知标准板的A4,这样就完成了硬件的连接,非常简单。
/*
读取CO2,湿度,温度数据
基于盛思锐CO2传感器-SCD30模块(I2C接口)
powered by 零知实验室-零知开源
*/
#include "SCD30.h"
#include "SoftWire.h"
//SoftWire Wire1(0,1);//使用0-SCL,1-SDA接传感器I2C接口
SCD30 airSensor;
void setup()
{
Serial.begin(9600);
Serial.println("Sensirion SCD30 Demo!");
airSensor.begin(); //默认采样率,2s读取一次数据
// //airSensor.begin(Wire1);//可以修改I2C接口引脚,默认为A4,A5
// //通过以下接口修改参数设置,以获取到实际场合的数据
// //1.采样率设置为4s,有效设置范围: 2s ~ 1800s (30 minutes)
// airSensor.setMeasurementInterval(4);
//
// //2.海拔高度设置为1600m,当前的海拔高度以m为单位
// airSensor.setAltitudeCompensation(1600);
//
// //3.环境压强设置,当前设置为835mBar(注:1mBar = 100Pa),真空度24.65inHg或834.74mBar
// airSensor.setAmbientPressure(835); //当前环境的压强 700~1200mBar
}
void loop()
{
if (airSensor.dataAvailable())
{
Serial.print("CO2(ppm):");
Serial.print(airSensor.getCO2());//读取CO2
Serial.print(" temp(C):");//读取温度
Serial.print(airSensor.getTemperature(), 1);
Serial.print(" humidity(%):");//读取湿度
Serial.print(airSensor.getHumidity(), 1);
Serial.println();
}
else
{
//Serial.println("No data");
}
delay(1000);
}
注:上述代码中注释的部分可以根据自己的实际需求进行更改,海拔和压力数据需根据自己所在位置进行实际测量后设置。
完整工程
测试结果
3、在stm32平台上的源码可在这里下载:
Sensirion_CO2_Sensors_SCD30_Sample_Code_STM32VLDISCOVER_STM32F100.zip(点击下载)
4、其他参考资料:
datasheet:Sensirion_CO2_Sensors_SCD30_Datasheet.pdf(点击下载)
I2C和Modbus接口说明:datasheet:Sensirion_CO2_Sensors_SCD30_Interface_Description.pdf(点击下载)