【DigiKey“智造万物,快乐不停”创意大赛】基于Arduino Uno R4智能床头灯项目&1驱动2
[复制链接]
本帖最后由 eew_cT3H5d 于 2023-12-16 21:53 编辑
在基于Arduino Uno R4智能床头灯项目中传感器的驱动也是重头,需要驱动Senrision的二氧化碳传感器和温湿度传感器,智能床头灯项目中准备蓝牙版本用温湿度传感器,WiFi版本用二氧化碳传感器(感知二氧化碳、温度、湿度)
一、SCD30二氧化碳传感器驱动
二氧化碳作为检测空气质量的一种传感器,其原理有很多中,其中红外检测原理比较常见,Senrision的二氧化碳传感器SCD30具有很高的一致性和准确性,在市场得到很高的好评,在DigiKey官网有售卖,而且零售价不便宜
红外二氧化碳原理演示:通过该动画可以很直观了解红外二氧化碳传感器的原理
下面开始介绍:如何利用Arduino Uno R4驱动SCD30的过程
1.没有思路:
1)下载Senrision官方SCD3的IIC库报错,因为Arduino Uno R4 WiFi版本自带Qwiic接口可以很方便连接IIC设备,所以就死心塌地用IIC通信进行读取传感器的数据
报错内容:CRC、无法写入IIC
21:18:31.019 -> Error trying to execute readFirmwareVersion(): Wrong CRC found
21:18:32.609 -> Error trying to execute blockingReadMeasurementData(): Error writing to I2C bus
21:18:34.210 -> Error trying to execute blockingReadMeasurementData(): Error writing to I2C bus
21:18:35.796 -> Error trying to execute blockingReadMeasurementData(): Error writing to I2C bus
2)参考Adafruit_SCD30.h库也是无法使用,根本没有思路,基本上要更换串口通信放弃自带Qwiic接口方案
2.转折点:查阅官网相关资料,看到这篇文章似乎有点思路:https://docs.arduino.cc/tutorials/uno-r4-wifi/qwiic#i2c
3.正常驱动:下载库SparkFun_SCD30_Arduino_Library.h,进行修改参数引脚,可以正常读取数据,非常顺利
SCD30传感器驱动程序代码:
#include <Wire.h>
#include "SparkFun_SCD30_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_SCD30
SCD30 airSensor;
void setup()
{
Serial.begin(115200);
Serial.println("SCD30 Example");
Wire1.begin();
if (airSensor.begin(Wire1) == false)
{
Serial.println("Air sensor not detected. Please check wiring. Freezing...");
while (1)
;
}
//The SCD30 has data ready every two seconds
}
void loop()
{
if (airSensor.dataAvailable())
{
Serial.print("co2(ppm):");
Serial.print(airSensor.getCO2());
Serial.print(" temp(C):");
Serial.print(airSensor.getTemperature(), 1);
Serial.print(" humidity(%):");
Serial.print(airSensor.getHumidity(), 1);
Serial.println();
}
else
Serial.println("Waiting for new data");
delay(500);
}
SCD30传感器开始工作:传感器二氧化碳光源开始工作
二、SHT3X温湿度传感器驱动
有了SCD30传感器的调试经验,很快完成SHT3X温湿度传感器驱动
实物连接图:采用IIC通信,即默认IIC0接口
关键词:SCD30、STH3X、Arduino Uno R4、二氧化碳、温湿度
|