基于51单片机手机无线蓝牙APP控制风扇调速设计
基于51单片机手机无线蓝牙APP控制风扇调速设计
1 系统功能介绍
本设计的目标是实现一个基于STC89C52单片机的智能风扇控制系统,用户可以通过手机APP发送蓝牙指令,来远程控制风扇的转速与工作模式。系统不仅能够完成低速、中速和高速的调节,还可以根据预设的时间(如1分钟)在指定转速下运行后自动停止,从而实现智能化与人性化的风扇管理。
该系统的功能概述如下:
- 风扇调速控制:风扇可分为低速、中速和高速三种模式,满足用户在不同环境下的需求。
- 定时功能:支持用户通过APP设定风扇在某一档位下运行1分钟后自动停止,避免能源浪费。
- 远程无线控制:通过蓝牙模块与手机APP进行数据通信,用户可以随时随地控制风扇。
- 扩展性强:由于采用单片机与蓝牙结合的设计,后期可扩展温度检测、自动调速等智能功能。
蓝牙指令协议如下:
- 发送
TZ00
→ 停止 - 发送
GS00
→ 高速 - 发送
ZS00
→ 中速 - 发送
DS00
→ 低速 - 发送
GS01
→ 高速运作1分钟后停止 - 发送
ZS01
→ 中速运作1分钟后停止 - 发送
DS01
→ 低速运作1分钟后停止
该设计在保证操作便捷的同时,也具备较强的实用性与教学意义,适用于智能家居与小型电气自动化实验项目。
2 系统电路设计
整个系统由 STC89C52单片机核心电路、风扇控制电路、蓝牙通信电路、电源电路 四部分组成。各部分相互配合,共同实现风扇的调速与远程控制功能。
2.1 单片机核心电路
本设计选用 STC89C52单片机 作为主控芯片。它是一种基于8051内核的单片机,具有稳定的性能和丰富的I/O接口,能够满足风扇控制和蓝牙通信的需要。
- 晶振电路:采用11.0592MHz晶振,保证单片机稳定运行,并方便串口通信的波特率计算。
- 复位电路:采用按键加电容、上拉电阻的复位方式,保证系统能够在通电和必要时恢复正常工作。
- I/O分配:部分I/O用于控制风扇的PWM输出,部分用于与蓝牙模块的串口通信。
2.2 风扇控制电路
风扇控制电路的关键在于调速与驱动。由于单片机I/O口驱动能力有限,不能直接驱动风扇电机,因此采用 PWM调速+三极管/MOSFET驱动 的方式。
- PWM调速:单片机通过定时器输出PWM信号,调节占空比以实现不同转速。
- 驱动电路:采用NPN三极管或MOSFET作为开关器件,由单片机PWM信号控制,从而实现电机的启停与调速。
- 风扇电机:采用直流小型电机,结合PWM控制可实现高速、中速和低速的切换。
2.3 蓝牙通信电路
本设计采用 HC-05/HC-06蓝牙模块,通过UART接口与单片机通信。
- 连接方式:蓝牙模块的TXD与单片机RXD连接,RXD与TXD连接,完成全双工串口通信。
- 波特率:设定为9600bps,兼顾通信稳定性与速度。
- 数据处理:蓝牙模块接收来自手机APP的指令,单片机解析指令并执行相应的风扇操作。
2.4 电源电路
整个系统的电源采用5V供电方式,蓝牙模块和单片机工作电压均为5V,而风扇则由电源直接驱动。必要时可增加稳压模块(如AMS1117)来保证电路的稳定性。
3 系统程序设计
程序设计分为三个核心部分:蓝牙通信程序、风扇调速控制程序、定时功能实现程序。以下将分别进行介绍。
3.1 蓝牙通信程序设计
蓝牙通信程序的核心是串口初始化与数据接收。单片机通过串口中断接收来自APP的指令,并进行解析。
#include <reg52.h>
#include <string.h>#define uchar unsigned char
#define uint unsigned intuchar rx_buffer[10];
uchar rx_index = 0;void UART_Init()
{SCON = 0x50; // 串口模式1,允许接收TMOD |= 0x20; // 定时器1工作在方式2,自动重装TH1 = 0xFD; // 波特率9600TL1 = 0xFD;TR1 = 1; // 启动定时器1EA = 1; // 总中断开ES = 1; // 允许串口中断
}void UART_Interrupt(void) interrupt 4
{if (RI){RI = 0;rx_buffer[rx_index++] = SBUF;if (rx_index >= 4) // 接收4字节指令{rx_index = 0;Process_Command(rx_buffer);}}
}
3.2 风扇调速控制程序设计
风扇调速通过PWM实现,分别对应不同占空比,从而得到低速、中速和高速。
sbit FAN = P2^0; // 风扇控制端口void Fan_Control(char mode)
{switch(mode){case 'D': // 低速// 设置PWM低占空比break;case 'Z': // 中速// 设置PWM中等占空比break;case 'G': // 高速// 设置PWM高占空比break;case 'T': // 停止FAN = 0;break;}
}
3.3 定时功能实现程序设计
定时功能由定时器实现。当接收到类似 GS01
的指令时,单片机先启动高速模式,并开启定时器。1分钟后自动停止风扇。
uint timer_count = 0;
bit timer_flag = 0;void Timer0_Init()
{TMOD |= 0x01; // 定时器0模式1TH0 = 0x3C; // 50ms定时TL0 = 0xB0;ET0 = 1; // 允许定时器0中断TR0 = 1; // 启动定时器
}void Timer0_ISR(void) interrupt 1
{TH0 = 0x3C;TL0 = 0xB0;timer_count++;if (timer_count >= 1200) // 50ms * 1200 = 60s{timer_flag = 1;timer_count = 0;}
}void Process_Command(uchar *cmd)
{if (strcmp(cmd, "TZ00") == 0) Fan_Control('T');else if (strcmp(cmd, "GS00") == 0) Fan_Control('G');else if (strcmp(cmd, "ZS00") == 0) Fan_Control('Z');else if (strcmp(cmd, "DS00") == 0) Fan_Control('D');else if (strcmp(cmd, "GS01") == 0) { Fan_Control('G'); timer_flag=0; }else if (strcmp(cmd, "ZS01") == 0) { Fan_Control('Z'); timer_flag=0; }else if (strcmp(cmd, "DS01") == 0) { Fan_Control('D'); timer_flag=0; }if (timer_flag){Fan_Control('T');timer_flag = 0;}
}
3.4 程序逻辑说明
- 系统上电后,初始化串口和定时器,等待APP指令。
- APP通过蓝牙发送指令,单片机接收并解析。
- 若为速度控制指令,则立即执行风扇的调速。
- 若为定时指令,则启动定时器,1分钟后自动关闭风扇。
4 总结
本设计基于 STC89C52单片机,通过蓝牙模块与手机APP交互,实现了对风扇的远程无线调速与定时控制。系统结构清晰,功能全面,具有如下特点:
- 操作简便:用户通过手机即可完成所有操作。
- 功能实用:支持低、中、高速控制以及定时自动停止。
- 扩展性好:后续可增加温湿度检测、自动调节转速等功能,进一步提升智能化水平。
该系统不仅能应用于日常生活中的小型智能家居电器控制,同时也具备较强的教学和研究价值,是嵌入式系统与蓝牙无线通信结合的典型案例。