77浏览
查看: 77|回复: 0

[ESP8266/ESP32] FireBeetle 2 ESP32-C6自动风扇启停装置

[复制链接]
本帖最后由 tiger_zc 于 2024-4-20 00:36 编辑

   马上炎热的夏天就要来了,本项目利用DFrobot公司的FireBeetle 2 ESP32-C6做主控,配合SHT31高精度温湿度传感器和继电器模块,来实现根据环境温度变化,自动控制风扇动作。


步骤1 主要硬件列表



材料清单



步骤2 硬件连接示意图






步骤3 调试注意事项




     本系统中,利用高精度温湿度传感器SHT31,获取环境温湿度值,并且在1602液晶屏上显示。当环境温度高于一个给定的阈值时,继电器吸合,负载(风扇)工作。当环境温度低于给定阈值时,继电器断开,负载停止工作。
      这里需要注意几点:
       1、继电器模块和1602模块都需要工作在5V电压下,需要外部供电或升压电路才能正常工作;
       2、继电器所带负载也需要外部供电,ESP32主控板不能提供大电流输出。
       3、1602显示模块和SHT31模块采用I2C总线传输数据,需要注意模块的地址。如不知道地址,可以通过程序查询,具体参考如下【合宙ESP32C3】查询IIC设备地址——Arduino_i2c接口地址查询方法-CSDN博客

系统正面


系统背面


步骤4 程序编写




         程序编写,我采用Arduino IDE。环境搭建参考DFROBOT DFR1075 FireBeetle 2 Board ESP32-C6 产品资料 使用教程
          使用1602模块和SHT31模块,程序需要导入相应的库,具体参考如下:如何加载库文件? DF创客社区 (dfrobot.com.cn)

SHT31库文件下载地址:DFRobot/DFRobot_SHT3x (gitee.com)
1602模块库文件,只需在库管理里面查找安装即可。


代码

  1. #include <DFRobot_SHT3x.h>
  2. #include <LiquidCrystal_I2C.h>
  3. //当ADR接VDD时可选择0x45当ADR接GND时可选择0x44
  4. //默认为0x45,RST(复位脚)不用连接
  5. DFRobot_SHT3x sht3x(&Wire,/*address=*/0x45,/*RST=*/4);
  6. // 定义行列数,默认不用更改,因为大家的LCD1602规格都是一致的
  7. int lcdColumns = 16;
  8. int lcdRows = 2;
  9. // 初始化LCD1602
  10. // 参数一为IIC地址
  11. // 参数二为列数
  12. // 参数三为行数
  13. LiquidCrystal_I2C lcd(0x3F, lcdColumns, lcdRows);
  14. int RelayPin=8;
  15. int testLED=15;
  16. //定义继电器信号为8
  17. //定义继电器吸合指示LED灯为15
  18. float soilTempThreshold=27; //定义温度阈值为27摄氏度
  19. void setup(){
  20.   // 初始化LCD
  21.   lcd.init();
  22.   // 打开LCD背光显示
  23.   lcd.backlight();
  24.   //初始化端口8
  25.   pinMode(RelayPin,OUTPUT);
  26.   digitalWrite(RelayPin,LOW);
  27.   //初始化端口15
  28.   pinMode(testLED,OUTPUT);
  29.   digitalWrite(testLED,LOW);
  30. }
  31. void loop(){
  32.   //把温度、湿度读出
  33.   float   temp = sht3x.getTemperatureC();
  34.   float   humi = sht3x.getHumidityRH();  
  35.    
  36.   //client.print("temp (C): "); client.println(temp);
  37.   //client.print("humi (%RH): "); client.println(humi);
  38.   // 将光标移动到显示器0列0行位置
  39.   lcd.setCursor(0, 0);
  40.   // 打印字符
  41.   lcd.print("temp(c):");
  42.   lcd.setCursor(0, 1);
  43.   // 打印字符
  44.   lcd.print("humi(%RH):");
  45.   lcd.setCursor(10, 0);
  46.   // 打印字符
  47.   lcd.print(temp);
  48.   lcd.setCursor(10, 1);
  49.   // 打印字符
  50.   lcd.print(humi);
  51. //如果温度高于阈值,端口8输出高电平,继电器吸合,指示灯亮,风扇转动。反之,输出低电平,继电器断开,指示灯灭,风扇停止。
  52.   if(temp>soilTempThreshold){
  53.     digitalWrite(RelayPin,HIGH);
  54.     digitalWrite(testLED,HIGH);
  55.   }
  56.   else{
  57.     digitalWrite(RelayPin,LOW);
  58.     digitalWrite(testLED,LOW);
  59.     }
  60.   // 设置delay使其形成无效死循环,用于保持文本的显示
  61.   delay(1000);
  62. }
复制代码




步骤5 演示视频

bilibili.com/video/BV1gJ4m1W7UT/(不知何故视频链接不能直接点击打开,请复制地址在浏览器打开)


bilibili.com/video/BV1gJ4m1W7UT/






您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail