基于 STM32 的智能书桌控制系统设计
导语
长时间伏案学习工作易引发视疲劳、坐姿不良与能源浪费等问题,而传统书桌功能单一、缺乏感知能力。本文设计一种以 STM32F103C8T6 为核心的智能书桌系统:HC-SR04 超声波检测用户与桌面距离,过近即提醒预防视疲劳;GL5528 光敏电阻监测环境光线,自动调节台灯亮度与开关;TCRT5000 感知用户在座状态,离开超过 30 秒自动熄灯节能;ULN2003 驱动步进电机实现桌高精准调节;OLED 实时显示数据,ESP8266 无线联网后支持手机 APP 远程监控与控制,为健康、舒适、节能的智能办公学习环境提供完整方案。
一、系统功能总览
| 编号 | 功能名称 | 功能描述 |
|---|---|---|
| F1 | 距离检测 | HC-SR04 测量用户与书桌距离,过近提醒 |
| F2 | 光照检测 | GL5528 采集环境光强 |
| F3 | 台灯智能控制 | 依据光照自动调光与开关 |
| F4 | 人体感应 | TCRT5000 监测在座状态,离开 30 s 自动关灯 |
| F5 | 高度调节 | ULN2003 + 步进电机精准调节桌面高度 |
| F6 | 状态显示 | OLED 显示环境数据与系统状态 |
| F7 | 远程控制 | ESP8266 联网,APP 远程监控与调节 |
二、核心模块选型对比
2.1 主控模块选型
| 方案 | 型号 | 主频 | 优点 | 缺点 |
|---|---|---|---|---|
| 方案一 | STM32F103C8T6 | 72 MHz | 生态成熟(CubeMX/HAL)、性价比高、低功耗模式丰富 | 无无线功能 |
| 方案二 | ESP32-WROOM-32 | 240 MHz | 双核、Wi-Fi/蓝牙一体 | 实时控制稳定性弱于 STM32 |
选择方案一: 多传感器采集与电机控制的实时性要求高,STM32 开发工具能显著缩短周期且预算友好。
2.2 距离检测模块选型
| 方案 | 型号 | 量程 | 优点 | 缺点 |
|---|---|---|---|---|
| 方案一 | HC-SR04 | 2--400 cm | 价格低、接口简单、文档社区丰富 | 精度一般 |
| 方案二 | GROVE Ultrasonic Ranger | 3--500 cm | 量程更大、抗噪更好 | 成本较高 |
选择方案一: 坐姿距离检测在数十厘米量级,HC-SR04 性价比与集成便利性更优。
2.3 光照检测模块选型
| 方案 | 型号 | 接口 | 优点 | 缺点 |
|---|---|---|---|---|
| 方案一 | GL5528 光敏电阻 | 分压+ADC | 成本低、集成简单 | 精度与线性度有限 |
| 方案二 | TSL2561 | 数字 I²C | 高精度、温漂小 | 成本较高 |
选择方案一: 台灯调光只需阈值判断与相对变化,GL5528 分压方案性价比高。
2.4 数据显示模块选型
| 方案 | 型号 | 分辨率 | 优点 | 缺点 |
|---|---|---|---|---|
| 方案一 | OLED12864 | 128×64 | 对比度高、广视角、低功耗 | 单色 |
| 方案二 | ST7735 TFT | 128×128 | 彩色显示 | 功耗与成本较高 |
选择方案一: 距离、光照、高度等数值信息以字符显示为主,OLED 清晰且省电。
2.5 无线通信模块选型
| 方案 | 型号 | 频段 | 优点 | 缺点 |
|---|---|---|---|---|
| 方案一 | ESP8266 | 2.4 GHz Wi-Fi | 直连互联网、生态成熟、成本低 | 功耗高于 433 MHz 模块 |
| 方案二 | nRF905 | 433 MHz | 距离远(可达数公里)、抗干扰 | 无互联网接入能力 |
选择方案一: APP 远程控制需接入互联网,ESP8266 支持透传 TCP 连接,开发资源丰富。
三、系统接线总表
| 模块 | 引脚 | MCU 引脚 | 说明 |
|---|---|---|---|
| HC-SR04 | Trig/Echo | PA2/PA3 | 定时器测量回波脉宽,5 V 供电 |
| GL5528 | 分压输出 | PA1 | ADC1 输入(10 kΩ 分压) |
| TCRT5000 | OUT | PA0 | 数字输入(在座检测) |
| ULN2003 | IN1--IN4 | PB0--PB3 | 四拍时序控制步进电机 |
| 步进电机 | 线圈 A--D | --- | 接 ULN2003 OUT1--OUT4 |
| OLED12864 | SDA/SCL | PB7/PB6 | I²C1 |
| ESP8266-01S | TX/RX | PA10/PA9 | USART1,115200,CH_PD 接 3.3 V |
| 台灯 | PWM | PA6 | TIM3_CH1 调光 |
四、系统软件设计
4.1 主程序流程
上电完成采集、通信与显示接口初始化后进入主循环:超声波测距并在距离过近时提醒 → 采集光强并自动调节台灯亮度/开关 → 人体感应判断在座状态,离开超 30 秒自动关灯 → OLED 刷新数据并经 ESP8266 上传 APP,接收远程指令驱动步进电机调节桌高。
int main(void)
{
SystemInit();
HCSR04_Init();
ADC1_Init();
OLED_Init();
Motor_Init();
ESP8266_Init();
ESP8266_JoinAP("home","pwd");
while (1)
{
/* 1. 环境与行为感知 */
dist = HCSR04_Read();
lux = ADC_Read(PA1);
seat = TCRT5000_Read();
/* 2. 健康与节能控制 */
if (dist < DIST_MIN) Remind_TooClose();
Lamp_Set(lux); /* 光照自适应调光 */
if (!seat && ++idle > 30) /* 离开超 30s */
Lamp_Off();
/* 3. 显示与远程 */
OLED_Show(dist, lux, height);
ESP8266_Send("D=%d,L=%d", dist, lux);
if (AppCmd(cmd)) /* APP 调节高度 */
Motor_Run(cmd.dir, cmd.steps);
delay_ms(500);
}
}
4.2 距离检测流程
Trig 配置输出、Echo 配置输入 → Trig 发 10 μs 高电平触发超声波 → 定时器测量 Echo 高电平持续时间 → 按公式 距离 = 高电平时间 × 340 / 2 计算距离,与最近距离阈值比较触发提醒。
4.3 光照检测流程
ADC 初始化后多次采样取平均 → 按公式 光强 = ADC 值 × 5V / 4096 × 100 换算光强值 → 与亮度阈值比较,输出对应 PWM 占空比调节台灯,实现自动调光与开关。
4.4 数据显示流程
I²C 初始化 OLED(0xAE 关显示 → 寻址模式 → 对比度 → 0xAF 开显示)→ SetPos 定位 → ShowStr/Fill/CLS 刷新距离、光照、高度等信息 → 开启电荷泵保证显示效果。
4.5 无线通信流程
串口 2 初始化(115200)→ 复位 ESP8266 并检测 "ready" → STA 模式 AT+CWJAP 连接 Wi-Fi → 关闭多路连接、进入透传模式 → AT+CIPSTART 连接 TCP 服务器,随后周期上传数据并接收 APP 指令。
4.6 电机驱动流程
GPIO 推挽输出、初始低电平 → 正转按引脚 1→2→3→4 顺序置高并延时,反转顺序相反 → 调节到位后将全部引脚置低停止,实现桌面高度的精准升降。
五、系统实现与测试
5.1 硬件焊接与测试
按最小系统、距离、光照、红外、电机、显示、无线逐块焊接;通电后万用表核查供电,验证晶振起振与复位电路有效,再依次点亮 OLED、驱动步进电机、联调 ESP8266 通信。
5.2 软件实现与测试
Keil 编译下载,串口观察超声波回波脉宽与 ADC 均值;调试 ESP8266 AT 流程与 APP 指令解析、桌高步数标定。
5.3 功能测试
| 测试编号 | 测试步骤 | 预期 | 结论 |
|---|---|---|---|
| T1 | 身体向桌面贴近 | 距离过近触发提醒 | 通过 |
| T2 | 遮挡环境光 | 台灯亮度自动提升 | 通过 |
| T3 | 离座 30 秒以上 | 台灯自动关闭 | 通过 |
| T4 | APP 下发升/降指令 | 步进电机调节桌高 | 通过 |
| T5 | OLED 查看数据 | 距离/光照/高度齐全 | 通过 |
| T6 | APP 端查看状态 | 数据实时刷新 | 通过 |
| T7 | 连续运行 | 各功能稳定可靠 | 通过 |
六、总结
本文以 STM32F103C8T6 为核心设计了智能书桌系统,集成 HC-SR04、GL5528、TCRT5000、ULN2003 步进电机、OLED12864 与 ESP8266,实现坐姿距离提醒、光照自适应调光、离座自动熄灯、桌高电动调节与 APP 远程控制等功能;系统兼顾功能性、性价比与易用性,有效缓解长时间伏案带来的健康问题并减少能源浪费,具备良好的扩展性与推广价值。