今天给大家介绍的是一个温湿度检测设计,基于51单片机、蓝牙模块、温湿度传感器、Android APP完成。首先先展示一下设计好的实物,接下来将从系统方案、硬件设计、软件设计这三个方面来阐述。
1.系统方案
先来看一下整体的架构图:硬件部分由STC89C52单片机、DHT11温湿度传感器、BT08蓝牙串口模块和Android手机组成。传感器将采集到的温湿度数据传送给单片机,然后单片机通过蓝牙串口模块将数据发送到手机APP,从而将温湿度在APP显示出来。在APP上可以设置温湿度告警的阈值,超过阈值将显示“偏高”或者“偏低”的相关信息。
2.硬件设计
整个设计的原理图如下所示,由单片机最小系统、蓝牙串口模块、温湿度传感器组成。传感器的DATA管脚连接单片机的P2^0口,蓝牙串口模块的RXD、TXD分别连接单片机的TXD、RXD。
蓝牙串口模块的功能是串口协议和蓝牙协议之间的相互转换,在单片机上自己编写一套蓝牙驱动代码是非常复杂的,借助这个模块我们在编写单片机代码时只需要编写串口收发的代码即可,该模块得到串口数据后会转成蓝牙数据。对于APP它接收到的是蓝牙数据,开发APP时只需要编写蓝牙相关的代码,Android封装了蓝牙相关的API,所以开发起来简单。蓝牙串口模块的引脚图如下图所示,在这个设计中用到了四个引脚,VCC、GND接5V电源和地,蓝牙模块的TXD接单片机的RXD,RXD接TXD。
DHT11温湿度传感器负责采集环境中的温湿度数据,在单片机软件设计部分会详细的介绍该传感器的使用步骤。引脚说明:
VDD 供电3.3~5.5V DC
DATA 串行数据,单总线
NC 空脚
GND 接地,电源负极
3.单片机软件设计
单片机程序主要是两个点,一是读取DHT11传感器的温湿度数据,二是串口通信。DHT11的官方文档写的很规范,有关于读取数据的详细步骤,文档更新也比较及时,最新的更新日期是2017年3月31号,官网的下载地址:DHT11温湿度传感器-温湿度传感器-温湿度传感器 温湿度芯片 温湿度变送器模块 气体传感器 流量传感器 广州奥松电子股份有限公司
DHT11采用单总线通信,单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成。
- 传送数据位定义
DATA 管脚用于DHT11与单片机之间的通讯和同步,采用单总线数据格式,一次传送40 位数据,高位先出。
数据格式:
8bit 湿度整数数据+ 8bit 湿度小数数据+ 8bit 温度整数数据+ 8bit 温度小数数据+ 8bit 校验位。
注:其中湿度小数部分为0。
- 校验位数据定义
8bit 湿度整数数据 + 8bit 湿度小数数据 + 8bit 温度整数数据 + 8bit 温度小数数据 = 8bit 校验位
如果以上等式成立,则本次传感器采集的数据有效,否则无效。
先看采集数据有效的示例,接收到的40 位数据为:
0011 0101 0000 0000 0001 1000 0000 0100 0101 0001
湿度高8 位 湿度低8 位 温度高8 位 温度低8 位 校验位
计算: 0011 0101 + 0000 0000 + 0001 1000 + 0000 0100 = 0101 0001,接收数据正确。
湿度:0011 0101(整数)=35H=53%RH 0000 0000(小数)=00H=0.0%RH =&g