基于51单片机温湿度检测采集系统无线蓝牙APP上传方案原理图设计

硬件电路的设计

(附文件)
系统的功能分析及体系结构设计
3.1.1系统功能分析
本设计由STC89C52单片机电路+DHT11温湿度传感器店里了+蓝牙电路+电源电路组成。
1、通过单片机采集DHT11检测温湿度值,并且通过蓝牙将数据发送到手机。
数据:T:23’C H:72% //标识温度23 湿度72
3.1.2系统总体结构
本系统具体框图如下图所示:
在这里插入图片描述
原理图:
在这里插入图片描述

5V电源电路设计
本系统选择5V直流电源作为系统总电源,为整个系统供电,电路简单、稳定。DC为电源的DC插座,可以直接接USB电源线,一端插在DC插座上,另外一端可以插在5V电源上,如电脑USB、充电宝、手机充电器等等。LED为红色LED灯,作为系统是否有点的指示灯,电阻为1K电阻,起到限流作用,保护LED灯,以防电流过大烧坏LED灯。SW为自锁开关,开关按下后,红灯亮,此时系统电源5V直流输出。开关再次按下后,红灯灭,此时系统电源无5V电源输出。
在这里插入图片描述
DHT11温湿度传感器模块电路设计
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。传感器内部湿度和温度数据40Bit的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11功耗很低,5V电源电压下,工作平均最大电流0.5mA。
一、传感器参数
(1)传感器采用DHT11
(2)工作电压范围:3.3V-5.5V
(3)工作电流 :平均0.5mA
(4)湿度测量范围:20-90%RH
(5)湿度测量误差:±5%
(6)温度测量范围:0-50℃
(7)温度测量误差:±2%
(8)湿度分辨率 :1%RH 8位
(9)温度分辨率 :1℃ 8位
(10)采样周期 :1S
(11)单总线结构
(12)与TTL兼容(5V)
(13)输出形式:数字输出
(14)PCB板尺寸:3.2cm*1.4cm
(15)有固定栓孔,方便安装
二、接口说明
(1)VCC 外接3.5V-5.5V
(2)GND 外接GND
(3)DATA 小板开关量输出接口,可外接单片机
DHT11数字湿温度传感器采用单总线数据格式。即,单个数据引脚端口完成输入输出双向传输。其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分,具体格式在下面说明。
(1)一次完整的数据传输为40bit,高位先出。
(2)数据格式:8bit湿度整数数据+8bit湿度小数数据
(3)+8bit温度整数数据+8bit温度小数数据
(4)+8bit校验和,校验和数据为前四个字节相加。

在这里插入图片描述
JDY-30蓝牙模块电路设计
蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯。本蓝牙模块就是为了只能无线数据传输而专门打造的,本模块支持串行接口,支持SP蓝牙串口协议,具有成本低、体积小、收发灵敏性高等特点,只需配备少许的外围元件就能实现大功能。
一、模块特点
(1)支持蓝牙 SPP 串口协议
(2)内置 PCB 天线
(3)支持 UART 接口
(4)蓝牙 Class 2
(5)数据传输比 BLE 蓝牙快、可达到 8K 每秒以上的速率
(6)支持与 SPP 主蓝牙模块连接通信(JDY-30 为从 SPP 蓝牙模块)
(7)支持与电脑 SPP 蓝牙通信
(8)支持 Android 手机 SPP 通信
二、产品应用范围
(1) POS 机
(2)蓝牙打印机
(3)蓝牙玩具
(4)蓝牙高速数据传输产品应用
(5)小家电
(6)汽车电子
三、模块技术参数
(1)工作电压:3.3V-6V
(2)工作温度:-40℃-85℃
(3)天线:PCB板载天线
(4)功耗:19mA
四、模块接口说明
(1)RXD 串口输入,电平为TTL电平
(2)TXD 串口输出,电平为TTL电平
(3)GND 接GND
(4)VCC 接3.3V-6V
蓝牙模块接口电路图如下图所示。
在这里插入图片描述

系统软件设计

在这里插入图片描述

#include <reg52.h> 
#include <intrins.h>
#include <stdio.h>
#include "dht21.h"

unsigned long time_20ms=0;	//定时变量
unsigned char dis0[16];		//数组暂存
unsigned char read_dht21=0;	//读取标志

void Init_Timer0(void);//函数声明
void UART_Init(void);
void uartSendByte(unsigned char dat);
void SendStr(unsigned char *s,unsigned char length);

void main (void)
{
	Init_Timer0();        //定时器0初始化
	
	UART_Init();	//串口初始化

	DelayMs(120);
	SendStr("ready ok!",9);
	while(1)         //主循环
	{
		if(read_dht21==1)
		{
			read_dht21=0;
			ET0 =0;	 //关闭定时器中断
		   	RH();	 //读取模块数据周期不易小于 2S 
			ET0 =1;	 //开定时器中断
			sprintf(dis0,"T:%02d'C H:%02d%% \n",(int)U8T_data_H,(int)U8RH_data_H);
			SendStr(dis0,14);			 //发送
		 }
	}
}

void Init_Timer0(void)
{
	TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     
	TH0=(65536-20000)/256;		  //重新赋值 20ms
	TL0=(65536-20000)%256;
	EA=1;            //总中断打开
	ET0=1;           //定时器中断打开
	TR0=1;           //定时器开关打开
}

void Timer0_isr(void) interrupt 1 
{
	TH0=(65536-20000)/256;		  //重新赋值 20ms
	TL0=(65536-20000)%256;
	
	time_20ms++;
	if(time_20ms%50==0)
	{
		read_dht21=1;		//定时发送数据
	}
}
void UART_Init(void)
{
    SCON  = 0x50;		        // SCON: 模式 1, 8-bit UART, 使能接收  
    TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装
    TH1   = 0xFD;               // TH1:  重装值 9600 波特率 晶振 11.0592MHz  
    TR1   = 1;                  // TR1:  timer 1 打开                         
    EA    = 1;                  //打开总中断
    ES    = 1;                  //打开串口中断
}

void SendByte(unsigned char dat)//串口发送单字节数据
{
	unsigned char time_out;
	time_out=0x00;
	SBUF = dat;			  //将数据放入SBUF中
	while((!TI)&&(time_out<100))  //检测是否发送出去
	{time_out++;DelayUs2x(10);}	//未发送出去 进行短暂延时
	TI = 0;						//清除ti标志
}

void SendStr(unsigned char *s,unsigned char length)	   //发送定长度字符串
{
	unsigned char NUM;
	NUM=0x00;
	while(NUM<length)	//发送长度对比
	{
		SendByte(*s);  //放松单字节数据
		s++;		  //指针++
		NUM++;		  //下一个++
  	 }
}
void UART_SER (void) interrupt 4 //串行中断服务程序
{
    if(RI)                        //判断是接收中断产生
    {
	  RI=0;                      //标志位清零
	}
   if(TI)  //如果是发送标志位,清零
	TI=0;
}



.

链接:https://pan.baidu.com/s/1-KAUV7YU3CqtIxzDJRVlGA
提取码:lvrt

.

  • 21
    点赞
  • 227
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如今随着物联网技术的发展,各种智能设备进入人们生活,能够实时监测室内温湿度的智能硬件得到越来越广泛的应用。针对此,我们可以设计一款基于51单片机和DHT11传感器的温湿度检测终端设备,并通过手机蓝牙app将数据实时推送到手机上进行显示。 51单片机是一款十分常用的微控制器,在硬件设计方面我们可以选择常见的STC89C52单片机来搭建控制模块。同时,为了能够可靠地检测室内温湿度变化,我们使用DHT11传感器,在引脚连接方面,将DHT11的VCC接单片机的5V电源,将GND接GND,将DHT11数据接口中的OUT引脚接到单片机的P1.2上,实时获取温湿度信息。 为了方便用户查看温湿度变化,我们通过蓝牙模块将数据传输到手机端进行显示。首先在单片机上通过串口与蓝牙模块连接,然后设置蓝牙数据接收和发送,将温湿度数据打包成字符串,在蓝牙模块上将其发送出去。在手机端,安装相应的蓝牙app,通过与蓝牙模块进行连接,即可实现实时获取室内温湿度数据并进行显示。 在软件设计方面,我们可以使用Keil C语言编写单片机程序,实现温湿度检测、数据处理和蓝牙数据传输等功能。在手机app端,可以采用Android Studio进行开发,实现蓝牙连接、数据解析和显示等功能。 总之,本文介绍了一款基于51单片机和DHT11传感器的温湿度检测终端设备,并通过蓝牙模块与手机端进行数据传输和显示。此设备具有成本低、易操作、实时监测等优点,对于家庭、实验室等场景的温湿度检测有着良好的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值