2025-9-26 17:50:09 [显示全部楼层]
9浏览
查看: 9|回复: 0

[ESP8266/ESP32] 基于FireBeetle 2 ESP32-C5的家庭环境检测系统

[复制链接]
本帖最后由 azhu 于 2025-9-26 18:00 编辑

基于FireBeetle 2 ESP32-C5的家庭环境检测系统
前言:
此次有幸参加DFRobot 推出了全新开发板 FireBeetle 2 ESP32-C5测评,在测试前期的申请本来是计划做一个桌面语音助手,但由于api接口到期,就制作了环境检测的系统。
一、设计思路硬件准备:
1、FireBeetle 2 ESP32-C5作为主控制器,
2、传感器模块使用DHT11,
3、0.96oled屏幕。
软件准备:
Arduino ide,
库环境搭建:1、开发板对应库环境:
①安装arduino0-ide
②环境配置:
注意事项:测试的板卡的esp环境必须为 3.3.0-alpha1-cn,其他版本导致烧录不成功,之前使用其他版本出现开发板不断重启的问题。
安装完成如下图所示:
在工具页面将参数修改如下:
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图18
在开发板选择界面选择对应的开发板与端口即可。
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图19
2、其他模块库
云平台库:Arduino ThingsCloud ESP32/ESP8266 SDK
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图15
DHT11依赖库:DHT_sensor_library
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图16
oled依赖库:SSD1306Wire
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图17



二、硬件介绍:1、FireBeetle 2 ESP32-C5 IO套装包
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图14
①:核心板及引脚分配图:
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图13
②:拓展版
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图12
2、0.96OLED屏幕
四线iicoled屏幕即可
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图11
3、DHT11:
温湿度传感器
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图10
三、软件云平台介绍:
ThingsCloud云平台
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图9
前期准备:
1、注册云平台账号2、创建项目基于FireBeetle 2 ESP32-C5的家庭环境检测系统图8
创建完成后
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图7
3、创建设备:
点击右上角创建设备,创建成功后点击设备进入。
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图6
在设备的连接界面中油连接所需要的AccessToken和ProjectKey。
至此前期云平台准备完毕。


四、项目软件代码部分
在之前的硬件介绍中已经安装好相应的aruino库。
1、调用库#include <ThingsCloudWiFiManager.h>
#include <ThingsCloudMQTT.h>
#include "DHT.h"
#include <Wire.h>
#include "SSD1306Wire.h" //导入0.96寸屏幕显示库2、初始化及声明/ 使用Wire库初始化OLED显示器
SSD1306Wire display(0x3c, 9, 10);   // 三个参数分别是 器件地址, SDA引脚, SCL引脚

//======================================================
// 设置 ssid / password,连接到你的 WiFi AP
const char *ssid = "xxxxxxxxxxxxx";
const char *password = "xxxxxxxxxxxxxxxxxxx";
// 在 ThingsCloud 控制台的设备详情页中,复制以下设备连接信息
// https://console.thingscloud.xyz
#define THINGSCLOUD_MQTT_HOST "sh-1-mqtt.iot-api.com"
#define THINGSCLOUD_DEVICE_ACCESS_TOKEN "xxxxxxxxxxxxxxx"
#define THINGSCLOUD_PROJECT_KEY "xxxxxxxxxxxxxxxxxx"
//======================================================

ThingsCloudMQTT client(
  THINGSCLOUD_MQTT_HOST,
  THINGSCLOUD_DEVICE_ACCESS_TOKEN,
  THINGSCLOUD_PROJECT_KEY);

// 上报数据的间隔时间计时器
unsigned long timer1 = millis();
// 设置定时上报数据的时间间隔,单位是 ms。免费版项目请务必大于30秒,否则设备可能会被限连。
const int report_interval = 1000 * 60 * 5;

// 设置DHT11的数据引脚
#define DHTPIN 2
// 设置使用的DHT类型,这里我们使用了DHT11
#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);3、显示函数声明void displayText(const char* text, uint8_t x, uint8_t y) {
  // 直接在指定位置绘制文本,不清屏
  display.drawString(x, y, text);
  display.display(); // 显示内容
}4、setup代码void setup()
{
  //初始化屏幕
  display.init();
  //设置对比度
  display.setContrast(255);

  display.flipScreenVertically(); // 垂直翻转屏幕

  Serial.begin(115200);

  // 允许 SDK 的日志输出
  client.enableDebuggingMessages();

  // 连接 WiFi AP
  client.setWifiCredentials(ssid, password);

  dht.begin();
}

// 读取并发布传感器数据到 ThingsCloud
void pubSensors()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // 检查是否读取到传感器数据
  if (isnan(h) || isnan(t)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // 串口打印数据日志
  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.println();

  // 生成属性 JSON
  DynamicJsonDocument obj(512);
  obj["temperature"] = t;
  obj["humidity"] = h;
  char attributes[512];
  serializeJson(obj, attributes);
  // 调用属性上报方法
  client.reportAttributes(attributes);
  
  
  display.clear(); // 清屏
  // 显示温湿度信息到OLED屏幕

  displayText("Temperature and humidity collection", 0, 0); // 显示湿度信息在第二行
  char buffer[32];
  snprintf(buffer, sizeof(buffer), "Temp: %.1fC", t);
  displayText(buffer, 0, 20); // 显示温度信息在第一行
  snprintf(buffer, sizeof(buffer), "Hum: %.1f%%%", h);
  displayText(buffer, 0, 40); // 显示湿度信息在第二行
}

// 必须实现这个回调函数,当 MQTT 连接成功后执行该函数。
void onMQTTConnect()
{
  // 延迟 5 秒上报首次传感器数据
  client.executeDelayed(1000 * 5, []() {
    pubSensors();
  });
}5、循环函数
void loop()
{
  client.loop();

  // 按间隔时间上报传感器数据
  if (millis() - timer1 > report_interval)
  {
    timer1 = millis();
    pubSensors();
  }
}五、运行效果:1、串口调试结果
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图20
2、云平台后台界面温度历史数据
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图5
湿度历史数据
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图4
3、云平台看板
而且平台还支持看板定制功能,可以将你需要的数据添加看板,展示效果如下:
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图2
4、手机界面
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图21
注:
对于上述的手机界面与网页端后台看板可以自行设计格式。
5、0.97OLED屏幕显示
        oled显示格式可以在代码中进行调整,此处只是进行基本显示。之后可以通过LVGL进行优化也可以改用U8G2库。
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图22

六、后期改进方向改进方向一:
在平台中还可以添加其他传感器数据如水位、光照、二氧化碳含量等。
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图3
改进方向二:
可以添加更多模块的同时,做一个硬件的报警与交互,例如增加温度过高开启降温风扇,湿度过低开启加湿,并在温湿度、二氧化碳等超限进行声光报警,添加物理按键进行报警功能的开关。
改进方向三:
在云台有提供告警功能:
基于FireBeetle 2 ESP32-C5的家庭环境检测系统图1
可以添加电话、邮件、短信等告警功能,但此功能是付费项目(懂得都懂)。

最后的话:
在这次项目制作中我感触最深的是开发板的发热量:因为手边没有测温计所以按照手指温度来说,它的温度是低于手指温度,且设备从9.20的18:00运行到目前(9.26的17:30),整整六天。相比较我之前使用的ESP32-S3和STM32(外接esp8266)的温度真的很低。温度低同时也代表在扇热强和功耗低,适合作为家庭识别长期使用。仅菜鸟一家之言,不喜勿喷。


项目参考文献:
DF官方开发板文档:
ThingsCloud云平台使用文档:




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

本版积分规则

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

硬件清单

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

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

mail