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

发布于:2025-09-08 ⋅ 阅读:(25) ⋅ 点赞:(0)

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

1 系统功能介绍

本设计的目标是实现一个基于STC89C52单片机的智能风扇控制系统,用户可以通过手机APP发送蓝牙指令,来远程控制风扇的转速与工作模式。系统不仅能够完成低速、中速和高速的调节,还可以根据预设的时间(如1分钟)在指定转速下运行后自动停止,从而实现智能化与人性化的风扇管理。

该系统的功能概述如下:

  1. 风扇调速控制:风扇可分为低速、中速和高速三种模式,满足用户在不同环境下的需求。
  2. 定时功能:支持用户通过APP设定风扇在某一档位下运行1分钟后自动停止,避免能源浪费。
  3. 远程无线控制:通过蓝牙模块与手机APP进行数据通信,用户可以随时随地控制风扇。
  4. 扩展性强:由于采用单片机与蓝牙结合的设计,后期可扩展温度检测、自动调速等智能功能。

蓝牙指令协议如下:

  • 发送 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 int

uchar rx_buffer[10];
uchar rx_index = 0;

void UART_Init()
{
    SCON = 0x50;    // 串口模式1,允许接收
    TMOD |= 0x20;   // 定时器1工作在方式2,自动重装
    TH1 = 0xFD;     // 波特率9600
    TL1 = 0xFD;
    TR1 = 1;        // 启动定时器1
    EA = 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模式1
    TH0 = 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 程序逻辑说明

  1. 系统上电后,初始化串口和定时器,等待APP指令。
  2. APP通过蓝牙发送指令,单片机接收并解析。
  3. 若为速度控制指令,则立即执行风扇的调速。
  4. 若为定时指令,则启动定时器,1分钟后自动关闭风扇。

4 总结

本设计基于 STC89C52单片机,通过蓝牙模块与手机APP交互,实现了对风扇的远程无线调速与定时控制。系统结构清晰,功能全面,具有如下特点:

  1. 操作简便:用户通过手机即可完成所有操作。
  2. 功能实用:支持低、中、高速控制以及定时自动停止。
  3. 扩展性好:后续可增加温湿度检测、自动调节转速等功能,进一步提升智能化水平。

该系统不仅能应用于日常生活中的小型智能家居电器控制,同时也具备较强的教学和研究价值,是嵌入式系统与蓝牙无线通信结合的典型案例。


网站公告

今日签到

点亮在社区的每一天
去签到