1. 项目背景与核心功能
这个DIY项目实现了一套完整的智能交通灯控制系统,核心创新点在于通过蓝牙与手机APP的联动,让传统交通灯具备了远程监控和动态调整能力。我在实际开发中发现,这种设计特别适合校园、小区等半封闭区域的交通管理,相比市售的固定时序交通灯,成本能降低60%以上。
系统硬件以STM32F103C8T6最小系统板为核心,搭配红绿灯模块、HC-05蓝牙模块构成基础框架。软件层面采用Keil MDK开发环境,通过自定义通信协议实现手机APP与单片机的双向数据交互。实测中最大通信距离可达50米(视环境干扰情况),响应延迟控制在300ms以内。
2. 硬件设计与关键器件选型
2.1 主控芯片选择考量
对比STM32F1系列多个型号后,最终选用STM32F103C8T6(俗称"蓝 pill")的原因有三:
- 72MHz主频足够处理交通灯状态机逻辑
- 内置3个USART接口,可同时连接蓝牙模块和调试终端
- 价格仅15元左右,性价比远超51单片机
注意:采购时需认准正版芯片,市场上存在打磨重印的假货会导致无法烧录程序
2.2 蓝牙模块配置要点
HC-05模块需通过AT命令进行以下关键设置:
bash复制AT+NAME=TrafficLight // 设置设备名称
AT+PSWD=1234 // 配对密码
AT+UART=9600,0,0 // 与STM32保持一致的波特率
实测发现模块的34脚(STATE)接LED指示灯可直观显示连接状态,当蓝牙频繁断连时,需在VCC端并联100μF电容消除电源干扰。
2.3 交通灯驱动电路设计
采用ULN2003达林顿阵列驱动12V LED模组,每个方向配置红黄绿三色灯。关键参数计算:
- 红灯功率:2W(工作电流≈170mA)
- 黄灯功率:1W(工作电流≈85mA)
- 绿灯功率:1.5W(工作电流≈125mA)
在PCB布局时,大电流走线需加粗至1mm以上,否则长时间工作会导致铜箔发热脱焊。我在初期版本中就因走线过细,连续工作8小时后出现信号异常。
3. 软件架构与核心算法
3.1 状态机设计
交通灯采用六状态循环机制:
c复制typedef enum {
NS_GREEN_EW_
