1. 项目概述:当传统台灯遇上STM32
这个项目的核心在于用STM32单片机给普通台灯装上"大脑"。我手头正好有个闲置的STM32F103C8T6开发板(就是那个蓝色的小板子),加上几个常见传感器,两周时间就捣鼓出了这个能自动调光、会说话的智能台灯。实测下来,光照传感器精度能达到±5%,语音播报延迟控制在300ms以内,完全满足日常使用需求。
硬件成本不到100元,但实现的功能比市面300元级别的智能台灯更实用——这就是DIY的魅力所在。
2. 核心功能设计思路
2.1 自动光照调节的三种实现方案
最初考虑过三种光照调节方案:
- PWM调光:最传统的方式,通过调节占空比控制亮度
- 线性调压:使用MOS管实现无级调光
- 数字调光:WS2812B等智能LED方案
最终选择PWM方案,原因有三:
- STM32自带硬件PWM生成器(TIM1/TIM2)
- 驱动电路简单(一个三极管+电阻即可)
- 调光曲线平滑(实测256级亮度无闪烁)
光照传感器选型对比表:
| 型号 | 精度 | 接口 | 价格 | 最终选择 |
|---|---|---|---|---|
| BH1750 | ±1% | I2C | ¥8 | ✓ |
| GY-30 | ±5% | I2C | ¥5 | 备用方案 |
| 光敏电阻 | ±20% | ADC | ¥0.5 | 淘汰 |
2.2 语音播报模块的选型陷阱
踩过最大的坑是语音模块选型。测试过三种方案:
- SYN6288:音质好但需要外置Flash存储语音
- LD3320:支持识别但误触发率高
- JQ8900:MP3模块+预录音频文件
最终选用JQ8900-16P模块,因为:
- 支持直接播放存储卡里的MP3文件
- 串口控制简单(9600bps,8N1)
- 自带3W功放,省去外接喇叭的麻烦
注意:市面上有些JQ8900模块的RX/TX标识是反的,接错会导致通信失败。实测用逻辑分析仪抓包才发现问题。
3. 硬件搭建实战记录
3.1 STM32最小系统搭建
核心部件清单:
- STM32F103C8T6最小系统板(¥25)
- BH1750光照传感器(¥
