用STM32CubeMX和光敏电阻打造智能小夜灯:从硬件选型到闭环调光实战
当夜幕降临,一盏能自动感知环境光线并调节亮度的智能小夜灯,不仅能带来便利,更是嵌入式开发者展示技能的绝佳项目。本文将带你完整实现这个融合ADC采集与PWM调光的实用装置,从元器件选型到代码调试,手把手教你打造会"思考"的灯光系统。
1. 项目规划与硬件选型
在开始编码之前,合理的硬件选型和电路设计是项目成功的基础。我们需要明确几个核心组件:
- 主控芯片:STM32F103C8T6(蓝色药丸开发板),性价比高且外设丰富
- 光敏模块:建议选用带有模拟输出的型号,如GL5528光敏电阻模块
- LED光源:5mm暖白色LED,工作电流20mA,搭配220Ω限流电阻
- 供电方案:USB 5V输入,通过AMS1117稳压至3.3V
提示:光敏电阻的响应曲线并非线性,实际测试中会发现弱光区变化剧烈,强光区变化平缓,这点在阈值设定时需要特别注意。
光敏模块的接线方式直接影响信号质量,推荐以下连接方案:
| 模块引脚 | STM32连接点 | 备注 |
|---|---|---|
| VCC | 3.3V | 避免使用5V以防损坏ADC |
| GND | GND | 共地至关重要 |
| AO | PA0 | ADC1_IN0通道 |
LED驱动电路则需要考虑电流承载能力:
c复制// 典型LED连接方式
PA6 (PWM) → 220Ω电阻 → LED阳极 → LED阴极 → GND
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. STM32CubeMX工程配置
启动STM32CubeMX后,我们需要完成三个关键配置:时钟树、ADC采集和PWM生成。
2.1 时钟系统初始化
在RCC配置中启用外部高速时钟(HSE),将系统时钟设置为72MHz。对于ADC而言,时钟不宜过快,建议将APB2分频至12MHz(ADC预分频设置为6)。
2.2 ADC采集配置
- 在Analog标签下启用ADC1
- 选择通道IN0(对
