基于 STM32 的智能书房环境监测与控制系统设计

导语

家庭书房与小型办公室对温湿度、光照与人员状态越来越需要精细化管理。本文设计一种以 STM32F103C8T6 为核心的智能书房系统,整合 DHT11 温湿度传感器、GL5528 光敏电阻、TCRT5000 红外人体检测与 RC522 RFID 身份识别,由 OLED12864 实时显示,并通过 ESP8266 接入家庭 Wi-Fi;不同卡片可加载个人阈值,自动控制灯光、窗户、通风设备等,并具备无人断电节能模式,适合 DIY 改造与改造型智能家居项目。

一、系统功能总览

编号功能名称功能描述
F1温湿度采集DHT11 周期采样
F2光强采集GL5528 光敏电阻分压读取
F3人员检测TCRT5000 红外反射检测
F4用户识别RC522 RFID 刷卡读取 UID
F5个性阈值不同 UID 加载独立阈值
F6设备控制继电器控制灯光、窗户、通风
F7本地显示OLED12864 实时显示
F8远程监控ESP8266 上传手机 APP

二、核心模块选型对比

2.1 主控模块选型

方案型号主频优点缺点
方案一STM32F103C8T672 MHz资源丰富,I²C/SPI/USART 充足无浮点
方案二Arduino Uno16 MHz上手快单 USART,多传感器挂载难
方案三ESP32240 MHz内置 Wi-Fi模拟通道较少

选择方案一: 系统要同时挂 DHT11、GL5528、RC522、OLED 与 ESP8266,对定时器与外设数量有要求,STM32F103C8T6 较为均衡。

2.2 温湿度模块选型

方案型号接口优点缺点
方案一DHT11单总线价格低,IO 占用少精度 ±2℃,分辨率 1℃
方案二DHT22单总线精度 0.1℃价格偏高
方案三SHT30I²C工业级需 I²C 资源

选择方案一: DHT11 对书房环境足够,单 IO 接入即可满足要求,性价比高。

2.3 光强模块选型

方案型号输出优点缺点
方案一GL5528 光敏电阻模拟价格低,分压电路简单输出需 ADC
方案二BH1750I²C数字 lx占 I²C
方案三光电二极管模拟响应快电路复杂

选择方案一: 书房只需粗略判断"亮/暗/正常"三档,GL5528 加分压电阻直读 ADC 即可。

2.4 人员检测模块选型

方案型号类型优点缺点
方案一TCRT5000红外反射价格低,桌面安装透光物体可能漏判
方案二HC-SR501热释电检测活体需透镜
方案三摄像头-视觉分析复杂度高

选择方案一: 书房应用 TCRT5000 检测手部伸入即可触发,TCRT5000 灵敏度高、电路简单。

2.5 RFID 模块选型

方案型号接口优点缺点
方案一RC522SPI资料多,成本低读卡距离 ≤ 5 cm
方案二PN532I²C/SPI支持 NFC价格偏高
方案三ID 卡读卡器UART长距离无法写卡

选择方案一: 5 cm 距离在门禁场景已足够,RC522 + S50 白卡是经典方案。

三、系统接线总表

模块引脚MCU 引脚说明
DHT11DATAPA0单总线
GL5528AOPA1ADC1 输入
TCRT5000DOPA2数字输入
RC522SDA/SCK/MOSI/MISOPB9/PB13/PB15/PB14SPI2
RC522RSTPB12复位
OLED12864SDA/SCLPB9/PB8I²C1(软件)
ESP8266TX/RXPA10/PA9USART1
继电器 1(灯)INPB0灯光
继电器 2(窗)INPB1窗户/通风
蜂鸣器I/OPB2提示

备注:OLED 与 RC522 占用 SPI/I²C 不冲突,分别走 SPI2 与软件 I²C,简化布线。

四、系统软件设计

4.1 主程序流程

主程序上电后依次初始化 GPIO、USART、SPI、I²C、OLED、DHT11、GL5528、RC522 与 ESP8266;主循环顺序为刷卡检测 → 采集温湿度与光强 → 加载个性化阈值 → 判断 → 继电器动作 → OLED 显示 → Wi-Fi 上传。

int main(void)
{
    SystemInit();
    OLED_Init();
    DHT11_Init();
    RC522_Init();
    ESP8266_Init();
    ESP8266_JoinAP("home","pwd");

    while (1)
    {
        // 1. 刷卡识别
        if (RC522_CheckCard(uid))
        {
            LoadUserThreshold(uid);
            Beep_On();
        }
        // 2. 数据采集
        DHT11_Read(&temp, &humi);
        light = ADC_Read(PA1);
        person = TCRT5000_Read();
        // 3. 设备控制
        if (light < LIGHT_LOW) Relay_Light_On();
        if (temp > TEMP_MAX)   Relay_Window_On();
        if (person == 0 && IdleCounter() > 600)
            Power_Cut();
        // 4. 显示与上报
        OLED_Show(temp, humi, light, uid);
        ESP8266_Send("T=%d,H=%d,L=%d", temp, humi, light);
        delay_ms(500);
    }
}

4.2 刷卡与阈值加载流程

RC522 通过 SPI 轮询寻卡 → 防冲突 → 选卡 → 读卡,读取 4 字节 UID;本地表中按 UID 匹配保存的温度、湿度、光强阈值;未识别卡片则使用默认阈值,避免误操作。

4.3 温湿度采集流程

MCU 拉低 DHT11 数据线 18 ms → 拉高 30 μs 起始 → DHT11 响应 → 输出 40 bit 数据 → MCU 按位读取,拼成湿度整数、小数、温度整数、小数与校验和。

4.4 红外人员检测流程

TCRT5000 DO 输出在检测到反射时为低,无反射时为高;引入 200 ms 防抖,连续两次状态一致才更新 person 标志,避免偶发干扰。

4.5 Wi-Fi 上报流程

ESP8266 通过 AT 指令连接家庭 Wi-Fi,对接手机 APP 的 TCP 服务;按 "T=%d,H=%d,L=%d,P=%d" 格式打包数据每 500 ms 上报一次,APP 可反向回写阈值。

五、系统实现与测试

5.1 硬件焊接与测试

将各模块按接线总表接好后上电,万用表量 3.3 V/5G 均稳定;SPI2 总线接 RC522 时确认片选 CS 已拉低;ESP8266 单独供电,避免电流拉低主控。

5.2 软件调试

Keil 下用 ST-Link 下载,用串口打印每一步返回的 RC522 UID、DHT11 数据与 ESP8266 AT 应答;逐步调整阈值与防抖时间,确认识卡、显示与远程同步均正常。

5.3 功能测试

测试编号测试步骤预期结论
T1放入 S50 卡OLED 显示 UID通过
T2DHT11 对着口哈气湿度上升通过
T3手挡 GL5528光强数值下降通过
T4手靠近 TCRT5000person=1通过
T5温度 > 阈值窗户继电器闭合通过
T6无人 10 min自动断电通过
T7APP 远程读数数据实时刷新通过

六、总结

本文以 STM32F103C8T6 为主控,设计了智能书房环境监测与控制系统,整合 DHT11、GL5528、TCRT5000、RC522、OLED 与 ESP8266,实现了温湿度、光强、人员检测与个性化阈值控制;通过继电器联动灯光、窗户与通风,配合无人断电节能模式,验证了系统在书房场景下的实用性与可扩展性,可在此基础上拓展 PM2.5、二氧化碳等更多传感器。

七、资料内容完整工程资料(原理图、PCB、代码、元件清单)


八、资料获取方式

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐