1. 项目概述:当传统台灯遇上STM32
去年改造书房时,我发现普通台灯存在三个痛点:手动调节亮度麻烦、固定色温不护眼、黑暗中找开关困难。于是决定用手头的STM32F103C8T6开发板打造一款能自动适应环境的智能台灯。这个项目融合了光照传感、PWM调光、语音合成三大核心技术,最终实现了以下功能:
- 根据环境亮度自动调节LED灯珠的亮度和色温
- 通过语音播报当前时间/光照强度等状态信息
- 支持触摸控制和手机APP远程操控
- 记忆用户偏好的照明模式
整套系统硬件成本控制在80元以内,代码量约1500行,开发周期两周。下面将完整分享从电路设计到算法调优的全过程,特别会重点解析光照自适应算法中容易踩坑的细节。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计解析
2.1 核心器件选型对比
主控选择STM32F103C8T6(蓝色pill开发板)的原因:
- 72MHz主频足够处理传感器数据+语音合成
- 内置12位ADC满足光照采样精度需求
- 带硬件PWM生成器(TIM1/TIM2)
- 成本仅15元且生态丰富
光照传感器选型实测对比:
| 型号 | 量程(lux) | 接口 | 价格 | 推荐指数 |
|---|---|---|---|---|
| BH1750 | 0-65535 | I2C | 5元 | ★★★★★ |
| GY-30 | 0-10000 | 模拟量 | 3元 | ★★☆☆☆ |
| TEMT6000 | 0-1000 | 模拟量 | 1元 | ★☆☆☆☆ |
最终选择BH1750因其:
- 数字输出免校准
- 0.1lux高分辨率
- 兼容室内外光照范围
2.2 关键电路设计要点
LED驱动电路采用双路PWM控制:
c复制// LED驱动电路参数
#define COLD_PWM_TIM TIM1->CCR1 // 冷白光PWM通道
#define WARM_PWM_TIM TIM1->CCR2 // 暖白光PWM通道
const uint16_t PWM_MAX = 1000; // PWM周期值
// 典型接线方式
MOSFET -> PWM引脚 -> LE
