基于51单片机温湿度检测系统无线蓝牙APP上传设计

1 基于51单片机温湿度检测系统无线蓝牙APP上传设计

1.1 功能概述

本系统以STC89C52单片机为核心控制模块,结合DHT11温湿度传感器、蓝牙通信模块以及电源管理电路,实现了对环境温湿度的实时采集、处理与无线传输。单片机负责接收来自DHT11传感器的温湿度数据,经过数据解码与处理后,通过蓝牙模块将结果传输至手机APP端进行显示。APP端可实时显示数据,格式为“T:23℃ H:72%”,从而实现对环境温湿度的远程监测。

系统的主要功能包括:

  1. 通过DHT11温湿度传感器获取环境温度与湿度数据。
  2. STC89C52单片机对传感器数据进行解码与处理。
  3. 通过蓝牙模块将采集数据发送到手机,实现无线传输。
  4. 手机端APP实时显示温湿度信息,便于用户随时掌握环境情况。

该系统整体具有电路结构简单、功耗低、稳定性强、交互直观等特点,广泛适用于家居环境监测、农业温室监控、仓储管理等场景。


2 系统电路设计

2.1 单片机最小系统电路

本设计采用STC89C52单片机作为主控芯片。其最小系统电路包括时钟电路、复位电路和电源电路。

  • 时钟电路:采用12MHz晶振电路,为单片机提供稳定的工作时钟。
  • 复位电路:通过上电复位电容与电阻的配合,保证单片机在通电瞬间能进入正常的初始化工作状态。
  • 电源电路:单片机工作电压为5V,通过电源模块为其供电,同时在VCC与GND之间加入去耦电容,以增强系统的抗干扰能力。

该最小系统电路为整个项目的运行提供了稳定的硬件基础,是保证程序正常执行的关键。

2.2 DHT11温湿度传感器电路

DHT11是一种常用的数字式温湿度传感器,其输出为单总线信号,具有响应快、精度适中、价格低廉等优点。

  • 接口方式:DHT11通过单总线与单片机相连,一般接在P2.0端口。
  • 电源要求:工作电压为3.3V~5V,本系统采用5V供电。
  • 信号传输:数据采用特定时序的脉冲编码方式,单片机需按照协议进行数据采集。

DHT11内部包含一个NTC温度测量元件和一个电容湿度测量元件,能够同时提供温度与湿度的数字信号。

2.3 蓝牙通信电路

本系统选用常见的HC-05蓝牙串口模块,实现单片机与手机之间的数据无线传输。

  • 接口方式:通过UART串口通信与单片机相连,模块的TXD接单片机RXD,RXD接单片机TXD。
  • 电源需求:模块工作电压为3.6V~6V,本设计中采用5V供电。
  • 通信协议:模块支持标准串口通信协议,波特率可设定为9600bps,保证与单片机的串口通信稳定。

蓝牙模块的加入,使系统具备无线数据上传功能,方便用户通过手机APP实时监测环境参数。

2.4 电源电路

电源部分采用常见的直流稳压电路,将外部电源电压稳定转换为5V直流电,分别供给单片机、传感器及蓝牙模块。为了保证系统稳定运行,在电源输出端加入电解电容和陶瓷电容,用于滤波和抑制高频干扰。


3 程序设计

程序设计分为单片机主控程序、DHT11数据采集程序和蓝牙通信程序三部分,三者相互配合,实现数据的完整采集、处理和传输。

3.1 主程序设计

主程序负责初始化单片机外设、循环采集温湿度数据,并将结果通过蓝牙模块发送至手机APP。主要流程如下:

  1. 系统初始化,包括定时器、中断、串口等模块的配置。
  2. 调用DHT11采集程序,获取温度与湿度值。
  3. 格式化数据,转换为字符串形式。
  4. 通过串口将数据发送至蓝牙模块。
  5. APP端接收数据并显示。

主程序示例代码:

#include <reg52.h>
#include "dht11.h"
#include "uart.h"

unsigned char temp, humi;

void main() {
    UART_Init();      // 初始化串口
    DHT11_Init();     // 初始化DHT11
    
    while(1) {
        if(DHT11_Read_Data(&temp, &humi) == 1) {
            UART_Send_String("T:");
            UART_Send_Byte(temp/10 + '0');
            UART_Send_Byte(temp%10 + '0');
            UART_Send_String("'C ");
            
            UART_Send_String("H:");
            UART_Send_Byte(humi/10 + '0');
            UART_Send_Byte(humi%10 + '0');
            UART_Send_String("%\r\n");
        }
        Delay_ms(1000); // 每秒采集一次
    }
}

3.2 DHT11传感器驱动程序设计

DHT11的数据传输需严格遵循时序协议,单片机通过控制IO口实现初始化信号,并读取传感器返回的40位数据(温度高8位、温度低8位、湿度高8位、湿度低8位、校验位)。

DHT11驱动代码示例:

#include <reg52.h>
#include "delay.h"

sbit DHT11_IO = P2^0;

unsigned char DHT11_Read_Byte(void) {
    unsigned char i, dat = 0;
    for(i=0; i<8; i++) {
        while(!DHT11_IO); // 等待低电平结束
        Delay_us(30);
        if(DHT11_IO) dat |= (1<<(7-i));
        while(DHT11_IO); // 等待高电平结束
    }
    return dat;
}

bit DHT11_Read_Data(unsigned char *temp, unsigned char *humi) {
    unsigned char i, buf[5];
    
    // 发送起始信号
    DHT11_IO = 0;
    Delay_ms(20);
    DHT11_IO = 1;
    Delay_us(30);
    
    // 等待响应
    if(!DHT11_IO) {
        while(!DHT11_IO);
        while(DHT11_IO);
        
        // 读取5字节数据
        for(i=0;i<5;i++) {
            buf[i] = DHT11_Read_Byte();
        }
        
        // 校验
        if(buf[4] == (buf[0]+buf[1]+buf[2]+buf[3])) {
            *humi = buf[0];
            *temp = buf[2];
            return 1;
        }
    }
    return 0;
}

3.3 串口通信与蓝牙传输程序设计

蓝牙模块通过单片机串口实现数据传输,波特率设为9600bps。通过发送字符串方式,将采集到的温湿度数据显示到手机端。

串口初始化及发送程序如下:

#include <reg52.h>

void UART_Init(void) {
    SCON = 0x50;      // 串口工作方式1
    TMOD |= 0x20;     // 定时器1,8位自动重装
    TH1 = 0xFD;       // 波特率9600
    TL1 = 0xFD;
    TR1 = 1;          // 启动定时器1
}

void UART_Send_Byte(unsigned char dat) {
    SBUF = dat;
    while(!TI);
    TI = 0;
}

void UART_Send_String(unsigned char *str) {
    while(*str) {
        UART_Send_Byte(*str++);
    }
}

通过上述程序,单片机能够将采集到的温湿度值转换为字符串数据,并通过蓝牙模块实时上传到手机APP,实现无线环境监测功能。


4 总结

本设计基于STC89C52单片机,结合DHT11温湿度传感器与HC-05蓝牙模块,实现了温湿度的实时采集与无线传输功能。系统结构清晰,硬件电路简单,程序设计合理,能够稳定完成环境参数的采集与数据上传工作。通过手机端APP实时显示温湿度信息,用户可以随时掌握环境变化情况,具备较强的实用价值与推广意义。在后续扩展中,可以增加数据存储功能、报警功能,甚至与物联网平台对接,进一步提升系统的智能化水平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值