基于51单片机手机无线蓝牙APP控制风扇调速设计
1. 系统功能介绍
本系统是一种基于 STC89C52单片机 控制的智能风扇调速系统,通过 手机APP无线蓝牙控制 实现对风扇转速和工作模式的灵活控制。系统以单片机为核心控制器,结合蓝牙模块和继电器驱动电路,实现了多档调速、定时控制等功能。
1.1 功能概述
系统主要实现以下功能:
-
多档风速调节 :
通过手机APP发送指令,风扇可切换为低速、中速、高速三种运行状态。
-
远程启停控制 :
用户可以远程发送停止指令,实现风扇的启停控制。
-
定时控制功能 :
APP可发送指令,让风扇以指定档位运行1分钟后自动停止,方便节能与安全使用。
-
蓝牙无线通信 :
系统通过蓝牙模块实现与手机APP的数据通信,采用串口通信协议,可靠性高。
-
状态指示与反馈 :
单片机可根据接收到的命令控制风扇运行状态,并可配合LED指示运行档位状态。
1.2 蓝牙通信协议
功能描述 | 蓝牙发送命令 |
---|---|
停止运行 | TZ00 |
高速运行 | GS00 |
中速运行 | ZS00 |
低速运行 | DS00 |
高速运行1分钟后停止 | GS01 |
中速运行1分钟后停止 | ZS01 |
低速运行1分钟后停止 | DS01 |
APP发送的命令以字符串形式通过蓝牙模块传输给单片机,单片机解析命令后执行相应动作。
2. 系统电路设计
整个系统主要由以下几个部分构成:
- 主控单元:STC89C52单片机
- 蓝牙通信模块
- 风扇驱动电路
- 电源模块
- 指示电路
2.1 单片机主控电路
STC89C52单片机作为系统的核心控制器,负责接收蓝牙模块传来的命令信号,并根据指令控制风扇的运行速度与时间。
主要功能:
- 通过串口UART接口与蓝牙模块通信;
- 控制PWM信号输出或继电器动作,实现风速切换;
- 计时功能,用于实现定时自动停止;
- 逻辑判断和状态控制。
单片机使用外部12MHz晶振作为时钟源,通过稳定的时序逻辑控制整个系统的运行。P1口用于控制风扇驱动继电器,P3.0(RXD)和P3.1(TXD)用于与蓝牙模块的串口通信。
2.2 蓝牙模块电路
系统采用 HC-05 蓝牙模块 与手机APP通信。该模块支持UART串口通信方式,通信波特率默认为9600bps,能够稳定地与单片机进行数据交互。
工作原理:
当用户在手机APP中选择不同的风速模式时,APP会通过蓝牙发送特定的字符串指令(如"GS00"表示高速运行),HC-05模块接收到该指令后,通过串口将数据传输给单片机。
模块特点:
- 支持主从模式;
- 通信距离可达10米;
- 波特率可配置;
- 与STC89C52单片机TTL电平兼容。
2.3 风扇驱动电路
风扇的调速控制采用 三路继电器 或 晶体管控制电路 实现。每个继电器对应一种风速档位,通过控制不同的继电器吸合,实现对风扇供电电压或PWM占空比的调节。
控制原理:
- 低速:继电器1闭合;
- 中速:继电器2闭合;
- 高速:继电器3闭合;
- 停止:全部继电器断开。
继电器由单片机输出端口控制,端口输出高电平时,驱动三极管导通,继电器吸合,从而控制风扇供电回路。
2.4 电源电路
系统供电部分采用 5V稳压电源模块,为单片机和蓝牙模块供电,同时为继电器驱动电路提供稳定电压。可采用AMS1117-5.0稳压芯片或7805线性稳压器,输入电压为DC 9~12V。
为防止干扰与电压波动,电源电路中应增加滤波电容(如100μF电解电容和0.1μF瓷片电容并联)以保证系统稳定。
2.5 指示电路
为便于用户观察系统工作状态,可设计3个LED指示灯,分别对应低速、中速、高速状态。
当风扇处于某档运行时,对应LED点亮,停止时全部熄灭。
3. 系统程序设计
本系统程序采用 C语言编写 ,通过 Keil uVision5 开发环境进行编译,使用 STC-ISP 下载工具将程序烧录到单片机中。
程序主要包括以下几个部分:
- 串口通信程序设计
- 命令解析程序设计
- 风速控制程序设计
- 定时控制程序设计
- 主程序设计
3.1 串口通信程序设计
单片机与蓝牙模块采用串口UART通信。初始化串口时设置波特率为9600bps,工作模式为方式1(8位UART异步通信)。
c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void UART_Init()
{
SCON = 0x50; // 设置为方式1,8位数据,可变波特率
TMOD |= 0x20; // 定时器1工作在方式2
TH1 = 0xFD; // 波特率9600bps(11.0592MHz)
TL1 = 0xFD;
TR1 = 1; // 启动定时器1
EA = 1; // 开总中断
ES = 1; // 开串口中断
}
串口接收中断服务程序用于接收蓝牙发送的命令字符,并进行数据缓存。
c
uchar recv_buf[10];
uchar index = 0;
void UART_ISR() interrupt 4
{
if (RI)
{
RI = 0;
recv_buf[index++] = SBUF;
if (index >= 4)
{
recv_buf[index] = '\0';
index = 0;
}
}
}
3.2 命令解析程序设计
接收到完整的命令字符串后,单片机根据命令内容进行判断并执行相应动作。
c
void Command_Process()
{
if (strcmp(recv_buf, "TZ00") == 0)
Stop_Fan();
else if (strcmp(recv_buf, "GS00") == 0)
Fan_High();
else if (strcmp(recv_buf, "ZS00") == 0)
Fan_Mid();
else if (strcmp(recv_buf, "DS00") == 0)
Fan_Low();
else if (strcmp(recv_buf, "GS01") == 0)
Run_With_Timer(3);
else if (strcmp(recv_buf, "ZS01") == 0)
Run_With_Timer(2);
else if (strcmp(recv_buf, "DS01") == 0)
Run_With_Timer(1);
}
3.3 风扇控制程序设计
根据不同档位的命令,单片机输出对应的控制信号至继电器驱动电路。
c
sbit FAN_LOW = P1^0;
sbit FAN_MID = P1^1;
sbit FAN_HIGH = P1^2;
void Stop_Fan()
{
FAN_LOW = 0;
FAN_MID = 0;
FAN_HIGH = 0;
}
void Fan_Low()
{
Stop_Fan();
FAN_LOW = 1;
}
void Fan_Mid()
{
Stop_Fan();
FAN_MID = 1;
}
void Fan_High()
{
Stop_Fan();
FAN_HIGH = 1;
}
3.4 定时控制程序设计
定时功能主要用于执行"运行1分钟后停止"命令。通过定时器中断计时,累计60秒后自动停止风扇。
c
uint timer_count = 0;
void Timer0_Init()
{
TMOD |= 0x01; // 定时器0工作方式1
TH0 = (65536 - 46080) / 256; // 50ms定时
TL0 = (65536 - 46080) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void Timer0_ISR() interrupt 1
{
TH0 = (65536 - 46080) / 256;
TL0 = (65536 - 46080) % 256;
timer_count++;
if (timer_count >= 1200) // 1200 * 50ms = 60s
{
Stop_Fan();
timer_count = 0;
TR0 = 0;
}
}
void Run_With_Timer(uchar mode)
{
switch(mode)
{
case 1: Fan_Low(); break;
case 2: Fan_Mid(); break;
case 3: Fan_High(); break;
}
timer_count = 0;
TR0 = 1;
}
3.5 主程序设计
主程序完成系统初始化与主循环任务,包括串口通信初始化、定时器配置和命令解析。
c
void main()
{
UART_Init();
Timer0_Init();
while (1)
{
Command_Process(); // 检测接收缓冲区命令
}
}
4. 系统运行与调试说明
-
硬件连接 :
将HC-05蓝牙模块的TXD、RXD分别连接到单片机的P3.0和P3.1;继电器控制端连接到P1.0~P1.2。
-
APP控制 :
打开手机蓝牙APP,搜索配对HC-05设备,连接成功后可通过APP界面选择风速档位或定时模式。
-
功能验证:
- 发送"GS00":风扇高速运行;
- 发送"ZS01":风扇中速运行1分钟后停止;
- 发送"TZ00":立即停止运行。
-
调试要点:
- 确保波特率一致;
- 检查继电器吸合情况;
- 若蓝牙通信异常,需检查串口接线与电平兼容性。
5. 总结
本系统通过STC89C52单片机与蓝牙无线通信模块实现了风扇的远程智能控制,具有结构简单、功能完善、操作方便等优点。
系统可广泛应用于家庭、实验室、办公室等场合的智能家电控制中。通过扩展设计,还可以加入温度检测模块,实现自动调速或环境联动控制,进一步提升系统智能化水平。