深入解析:基于51单片机手机无线蓝牙APP控制风扇调速设计

基于51单片机手机无线蓝牙APP控制风扇调速设计


1. 系统功能介绍

本系统是一种基于 STC89C52单片机 控制的智能风扇调速系统,通过 手机APP无线蓝牙控制 实现对风扇转速和工作模式的灵活控制。系统以单片机为核心控制器,结合蓝牙模块和继电器驱动电路,实现了多档调速、定时控制等功能。

1.1 功能概述

系统主要实现以下功能:

  1. 多档风速调节
    通过手机APP发送指令,风扇可切换为低速、中速、高速三种运行状态。

  2. 远程启停控制
    用户可以远程发送停止指令,实现风扇的启停控制。

  3. 定时控制功能
    APP可发送指令,让风扇以指定档位运行1分钟后自动停止,方便节能与安全使用。

  4. 蓝牙无线通信
    系统通过蓝牙模块实现与手机APP的数据通信,采用串口通信协议,可靠性高。

  5. 状态指示与反馈
    单片机可根据接收到的命令控制风扇运行状态,并可配合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异步通信)。

#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;           // 开串口中断
  }

串口接收中断服务程序用于接收蓝牙发送的命令字符,并进行数据缓存。

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 命令解析程序设计

接收到完整的命令字符串后,单片机根据命令内容进行判断并执行相应动作。

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 风扇控制程序设计

根据不同档位的命令,单片机输出对应的控制信号至继电器驱动电路。

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秒后自动停止风扇。

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 主程序设计

主程序完成系统初始化与主循环任务,包括串口通信初始化、定时器配置和命令解析。

void main()
{
UART_Init();
Timer0_Init();
while (1)
{
Command_Process();  // 检测接收缓冲区命令
}
}

4. 系统运行与调试说明

  1. 硬件连接
    将HC-05蓝牙模块的TXD、RXD分别连接到单片机的P3.0和P3.1;继电器控制端连接到P1.0~P1.2。

  2. APP控制
    打开手机蓝牙APP,搜索配对HC-05设备,连接成功后可通过APP界面选择风速档位或定时模式。

  3. 功能验证

    • 发送“GS00”:风扇高速运行;
    • 发送“ZS01”:风扇中速运行1分钟后停止;
    • 发送“TZ00”:立即停止运行。
  4. 调试要点

    • 确保波特率一致;
    • 检查继电器吸合情况;
    • 若蓝牙通信异常,需检查串口接线与电平兼容性。

5. 总结

本系统通过STC89C52单片机与蓝牙无线通信模块实现了风扇的远程智能控制,具有结构简单、功能完善、操作方便等优点。
系统可广泛应用于家庭、实验室、办公室等场合的智能家电控制中。通过扩展设计,还可以加入温度检测模块,实现自动调速或环境联动控制,进一步提升系统智能化水平。

posted @ 2025-11-06 09:52  yangykaifa  阅读(32)  评论(0)    收藏  举报