1. 项目概述:从传统台灯到智能照明的跨越
作为一名嵌入式开发工程师,我最近完成了一个基于STM32的多功能智能台灯控制系统设计。这个项目源于我个人在深夜工作时的一个痛点:传统台灯要么太亮刺眼,要么太暗伤眼,而且经常忘记关灯导致电量耗尽。于是,我决定用自己熟悉的单片机技术来解决这些问题。
这个智能台灯的核心功能包括:
- 三档色温调节(3000K暖光、4500K自然光、6500K冷光)
- 0-100%无级亮度调节
- 环境光自适应调光
- 人体感应自动开关
- 45分钟定时休息提醒
- 光线过强/过弱护眼报警
- 触摸、语音和蓝牙APP三种控制方式
选择STM32F103C8T6作为主控芯片,主要是考虑到它72MHz的主频足够处理多路传感器数据,丰富的接口(I2C、SPI、UART、ADC等)可以方便地连接各种外设,而且价格亲民,非常适合学生和爱好者使用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计详解
2.1 核心控制模块选型
STM32F103C8T6是一款性价比极高的ARM Cortex-M3内核单片机,我选择它的原因主要有三点:
- 丰富的外设接口:我需要同时连接光照传感器、人体红外传感器、语音模块、蓝牙模块和LCD显示屏,这款芯片的接口资源完全够用
- PWM输出能力:需要3路独立的PWM信号来控制RGB LED的色温和亮度
- 开发资源丰富:作为STM32系列中最经典的型号,网上有大量学习资料和开源项目可以参考
在实际使用中,我发现这款芯片的GPIO驱动能力有限,直接驱动LED灯珠亮度不够,所以需要外加MOS管驱动电路。
2.2 照明驱动电路设计
照明部分采用12颗5050型RGB LED灯珠,分成三组并联。每组4颗灯珠串联,工作电流约20mA×4=80mA。驱动电路使用AO3400 MOS管,主要参数:
- VDS=30V
- ID=4A
- RDS(on)=40mΩ
PWM频率设置为2kHz,这个频率既高于人眼能感知的闪烁频率(>100Hz),又不会因为频率太高导致MOS管开关损耗过大。实际测试发现,当PWM频率低于500Hz时,在快速移动视线时会明显感觉到灯光闪烁;高于5kHz时,MOS管温度会明显升高。
色温调节的实现原理:
- 暖光模式(3000K):红光占空比80%,绿蓝光占空比20%
- 自然光模式(4500K):三色占空比均衡(约33%)
- 冷光模式(6500K):蓝光占空比80%,红绿光占空比20%
注意:LED色温调节不是简单的RGB比例变化,实际调试时需要配合色温计进行校准。我发现单纯按照理论比例设置,实际色温会有偏差,特别是自然光模式最难调准。
2.3 传感器模块选型与电路
光照传感器
选用BH1750数字光照传感器,主要考虑:
- 测量范围宽(1-65535lux)
- 直接数字输出,不需要额外ADC
