一、传感器部分
1. BH1750 光照传感器
- 功能:测量环境光照强度(单位:勒克斯,lx)。
- 通信方式:I2C 总线(代码中使用
Wire
库,引脚定义为SDA_PIN=21
、SCL_PIN=20
)。 - 初始化:
Wire.begin(BH1750_SDA_PIN, BH1750_SCL_PIN); lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE, 0x23, &Wire); // 高分辨率连续测量模式
- 数据读取:
float light = lightMeter.readLightLevel(); // 返回光照强度值
- 应用场景:自动调节屏幕亮度、植物生长监测等。
2. DHT22 温湿度传感器
- 功能:测量温度(单位:℃)和相对湿度(单位:% RH)。
- 通信方式:单总线(代码中引脚定义为
DHTPIN=4
)。 - 初始化:
DHT dht(DHTPIN, DHTTYPE); // DHTTYPE 为 DHT22 宏定义 dht.begin(); // 启动传感器
- 数据读取:
float tep = dht.readTemperature(); // 温度 float hum = dht.readHumidity(); // 湿度
- 注意事项:需处理 NaN 值(读取失败时返回)。
3. Adafruit_SGP30 空气质量传感器
- 功能:测量 TVOC(总挥发性有机化合物,单位:ppb)和 eCO₂(等效二氧化碳,单位:ppm)。
- 通信方式:I2C 总线(代码中使用
Wire1
库,引脚定义为SDA_PIN=10
、SCL_PIN=9
)。 - 初始化:
Wire1.begin(SGP30_SDA_PIN, SGP30_SCL_PIN); sgp.begin(&Wire1); // 初始化传感器 sgp.IAQinit(); // 初始化 IAQ(室内空气质量)算法
- 数据读取:
if (!sgp.IAQmeasure()) { // 测量数据 tvoc = sgp.TVOC; // TVOC 值 eco2 = sgp.eCO2; // eCO₂ 值 }
- 应用场景:室内空气质量监测、通风系统控制。
二、网页端相关知识
代码中通过 HTTP 服务器 和 HTML/JavaScript 实现网页端数据展示与设备控制,涉及以下核心技术:
1. HTML 结构与样式
- 响应式布局:使用
grid
和flex
布局实现多设备适配,例如:<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6"> <!-- 温度、湿度、光照、空气质量卡片 --> </div>
- Tailwind CSS:通过类名快速定义样式(如
bg-white
、card-shadow
),避免手动编写 CSS。 - 图标库:引入 Font Awesome 图标(如
<i class="fa fa-thermometer-three-quarters"></i>
)增强可视化。
2. JavaScript 功能
- 数据获取:通过
fetch
接口定时从 ESP32 获取 JSON 数据(/data
路由):setInterval(() => fetch('/data').then(res => res.json()), 3000);
- 动态渲染:更新页面元素显示传感器数据,如温度进度条:
document.getElementById('temp-bar').style.width = `${temp * 2}%`; // 0-50℃ 映射为 0-100%
- 设备控制:通过 HTTP GET 请求发送控制指令(如
/control?cmd=on
):document.getElementById('motor-on').addEventListener('click', () => fetch('/control?cmd=on') );
3. HTTP 服务器逻辑(ESP32 端)
- 路由处理:
GET /
:返回 HTML 主页(prepareHtmlResponse()
生成)。GET /data
:返回 JSON 格式传感器数据及电机状态。GET /control
:处理设备控制指令(如开关电机、调节转速)。
- 长连接支持:通过响应头
Connection: keep-alive
保持客户端连接,减少重复握手开销。
4. 数据可视化与交互
- 进度条动画:使用 CSS 样式动态更新进度条宽度,搭配
transition
实现平滑过渡。 - 历史数据表格:存储最近 5 条数据并渲染到表格,通过颜色类(如
text-green-500
)标识数据状态。 - 电机状态显示:通过圆形色块和文本实时显示电机运行状态(绿色表示运行,灰色表示停止)。
三、系统集成与扩展
- 多协议支持:代码同时实现了 BLE 和 WiFi 通信,可通过蓝牙(手机 APP)或网页远程监控设备。
- 硬件控制:
- 通过 PWM 调节电机转速(
ledcWrite
函数)。 - 根据温度(>31℃)或空气质量(TVOC>100 且 eCO₂>500)自动控制风扇启停。
- 通过 PWM 调节电机转速(
- 扩展方向:
- 增加数据存储(如 SD 卡或云服务器)。
- 集成报警功能(如蜂鸣器或短信通知)。
- 优化传感器校准逻辑(如 SGP30 基线存储)。
四、TVOC&eCO₂的含义与影响
TVOC 的含义及影响
含义
TVOC(Total Volatile Organic Compounds)即总挥发性有机物,是室内空气中多种挥发性有机化合物的总称。
常见来源包括:
- 装修材料(如涂料、胶水、板材);
- 家具、地毯、清洁剂;
- 香烟烟雾、烹饪油烟等。
浓度过高的影响
- 健康危害:
- 刺激呼吸道、眼睛和皮肤,引发头痛、头晕、恶心等不适;
- 长期暴露可能损伤肝脏、肾脏和神经系统,部分成分(如苯、甲醛)具有致癌性。
- 环境影响:
- 在阳光下与氮氧化物反应,形成臭氧污染,加剧雾霾。
浓度过低的影响
通常情况下,TVOC 浓度过低不会对人体或环境造成直接危害。但需注意:
- 过度追求 “零 VOC” 可能导致装修材料性能下降(如涂料附着力降低);
- 部分特殊场景(如实验室、工业环境)需根据特定标准控制 VOC 水平。
eCO₂的含义及影响
含义
eCO₂(Equivalent Carbon Dioxide)即等效二氧化碳,用于衡量空气中二氧化碳的浓度(单位:ppm,百万分之一)。
来源包括:
- 人体呼吸(主要室内来源);
- 燃料燃烧(如燃气设备、吸烟);
- 室外空气渗入。
浓度过高的影响
- 健康与认知:
- <1000 ppm:正常环境水平,无明显影响;
- 1000-2000 ppm:可能引起轻微嗜睡、注意力不集中;
- >2000 ppm:头痛、疲劳感加剧,长期高浓度可能影响决策能力;
- >5000 ppm:可能导致严重缺氧、呼吸困难,甚至危及生命。
- 建筑与设备:
- 高浓度 eCO₂常伴随通风不足,可能加速霉菌滋生,影响建筑材料耐久性。
浓度过低的影响
自然环境中 eCO₂浓度极少过低,但人工干预(如超净实验室)可能导致:
- 人体呼出的 CO₂被过度过滤,可能干扰生理平衡(如血液酸碱值);
- 植物光合作用受限(若涉及温室环境)。
总结:室内环境控制建议
指标 | 理想范围 | 建议措施 |
---|---|---|
TVOC | <0.6 mg/m³ | 加强通风、选择低 VOC 材料、使用空气净化器 |
eCO₂ | 400-1000 ppm | 定期开窗通风、安装通风系统(如新风系统) |
注:敏感人群(如孕妇、儿童、哮喘患者)需更严格控制室内污染物浓度,必要时使用专业设备监测。