FireBeetle 2 ESP32-C6自动风扇启停装置
本帖最后由 tiger_zc 于 2024-4-20 00:36 编辑马上炎热的夏天就要来了,本项目利用DFrobot公司的FireBeetle 2 ESP32-C6做主控,配合SHT31高精度温湿度传感器和继电器模块,来实现根据环境温度变化,自动控制风扇动作。
步骤1 主要硬件列表
材料清单
[*]FireBeetle 2 ESP32-C6主控X1链接
[*]SHT31数字温湿度传感器X1链接
[*]风扇模块X1链接
[*]1602显示模块X1链接
[*]数字继电器模块X1链接
步骤2 硬件连接示意图
https://makelogimg.dfrobot.com.cn/makelog/5a1c03fae455e06a216f8d66/fa5c3d1857e479700167e045d25b16ec.jpg
步骤3 调试注意事项
本系统中,利用高精度温湿度传感器SHT31,获取环境温湿度值,并且在1602液晶屏上显示。当环境温度高于一个给定的阈值时,继电器吸合,负载(风扇)工作。当环境温度低于给定阈值时,继电器断开,负载停止工作。 这里需要注意几点: 1、继电器模块和1602模块都需要工作在5V电压下,需要外部供电或升压电路才能正常工作; 2、继电器所带负载也需要外部供电,ESP32主控板不能提供大电流输出。 3、1602显示模块和SHT31模块采用I2C总线传输数据,需要注意模块的地址。如不知道地址,可以通过程序查询,具体参考如下【合宙ESP32C3】查询IIC设备地址——Arduino_i2c接口地址查询方法-CSDN博客
系统正面https://makelogimg.dfrobot.com.cn/makelog/5a1c03fae455e06a216f8d66/6283f17bad24c33caa7f29c7c33c0c1c.jpg
系统背面https://makelogimg.dfrobot.com.cn/makelog/5a1c03fae455e06a216f8d66/95244fe09f580627d92a8410713549ba.jpg
步骤4 程序编写
程序编写,我采用Arduino IDE。环境搭建参考DFROBOT DFR1075 FireBeetle 2 Board ESP32-C6 产品资料 使用教程 使用1602模块和SHT31模块,程序需要导入相应的库,具体参考如下:如何加载库文件? DF创客社区 (dfrobot.com.cn)
SHT31库文件下载地址:DFRobot/DFRobot_SHT3x (gitee.com)1602模块库文件,只需在库管理里面查找安装即可。https://makelogimg.dfrobot.com.cn/makelog/5a1c03fae455e06a216f8d66/ccf3d3af6c2017df19ec8bc57345e3dd.png
代码
#include <DFRobot_SHT3x.h>
#include <LiquidCrystal_I2C.h>
//当ADR接VDD时可选择0x45当ADR接GND时可选择0x44
//默认为0x45,RST(复位脚)不用连接
DFRobot_SHT3x sht3x(&Wire,/*address=*/0x45,/*RST=*/4);
// 定义行列数,默认不用更改,因为大家的LCD1602规格都是一致的
int lcdColumns = 16;
int lcdRows = 2;
// 初始化LCD1602
// 参数一为IIC地址
// 参数二为列数
// 参数三为行数
LiquidCrystal_I2C lcd(0x3F, lcdColumns, lcdRows);
int RelayPin=8;
int testLED=15;
//定义继电器信号为8
//定义继电器吸合指示LED灯为15
float soilTempThreshold=27; //定义温度阈值为27摄氏度
void setup(){
// 初始化LCD
lcd.init();
// 打开LCD背光显示
lcd.backlight();
//初始化端口8
pinMode(RelayPin,OUTPUT);
digitalWrite(RelayPin,LOW);
//初始化端口15
pinMode(testLED,OUTPUT);
digitalWrite(testLED,LOW);
}
void loop(){
//把温度、湿度读出
float temp = sht3x.getTemperatureC();
float humi = sht3x.getHumidityRH();
//client.print("temp (C): "); client.println(temp);
//client.print("humi (%RH): "); client.println(humi);
// 将光标移动到显示器0列0行位置
lcd.setCursor(0, 0);
// 打印字符
lcd.print("temp(c):");
lcd.setCursor(0, 1);
// 打印字符
lcd.print("humi(%RH):");
lcd.setCursor(10, 0);
// 打印字符
lcd.print(temp);
lcd.setCursor(10, 1);
// 打印字符
lcd.print(humi);
//如果温度高于阈值,端口8输出高电平,继电器吸合,指示灯亮,风扇转动。反之,输出低电平,继电器断开,指示灯灭,风扇停止。
if(temp>soilTempThreshold){
digitalWrite(RelayPin,HIGH);
digitalWrite(testLED,HIGH);
}
else{
digitalWrite(RelayPin,LOW);
digitalWrite(testLED,LOW);
}
// 设置delay使其形成无效死循环,用于保持文本的显示
delay(1000);
}
步骤5 演示视频bilibili.com/video/BV1gJ4m1W7UT/(不知何故视频链接不能直接点击打开,请复制地址在浏览器打开)
bilibili.com/video/BV1gJ4m1W7UT/
页:
[1]