以arduino开发板为控制器平台,采用dth11传感器采集温湿度数据,液晶显示屏显示温湿度数据,并对超出规定范围的数据用蜂鸣器报警提示,并实现与手机的基本交互。
一、需求分析
a. 温湿度的实时检测和打印显示。每间隔一定时间,传感器周围空间的温湿度进行侦测,并将温湿度在液晶屏上打印显示出来。
b. 当温度和湿度超过预设范围时,蜂鸣器发出警报。程序下载前,会在程序中设置一组温湿度范围。当温度超出正常范围时,蜂鸣器发出蜂鸣;当湿度超出正常范围时,LED灯开始闪烁。
c. 在手机上同时打印输出当前温湿度。通过蓝牙HC-05模块将温湿度发送到蓝牙调试器应用上,实现温湿度在个人终端上的实时打印输出。
二、系统的工作原理
此温湿度监测系统主要涉及对温湿度进行检测、在液晶屏上打印温湿度、温湿度异常时进行报警提示和在个人终端上实时打印输出温湿度。
硬件方面,共有6个模块,分别是Arduino uno主控模块、DHT11传感器模块、LCD1602显示模块、无源蜂鸣器报警模块、LED灯模块和蓝牙HC-05模块。
传感器将此时的温湿度检测出来。为了获得准确准时的温湿度数据,必须每间隔一定时间便进行一次检测。
检测的温湿度数据由LCD1602显示模块进行打印输出。最上面一行进行湿度的打印输出,最下面一行进行温度的打印输出。
在下载程序之前,便已在程序中设置好了一个温度范围。当温度不在该范围时,蜂鸣器发出报警声提醒人员,及时启动制冷机器,将温度降低到合适程度。
在下载程序之前,便已在程序中设置好了一个湿度范围。当湿度在该范围时,LED灯保持常灭;当湿度不在该范围时,LED灯开始闪烁,并且湿度超出范围越多,LED灯闪烁得越快。它可以更直观地反映出空气中湿度的大小。
蓝牙HC-05模块实现了将传感器监测到的数据发送至蓝牙调试器应用,从而实现温湿度数据在手机端的同步实时显示,以便用户随时可以查看周边环境当前的温湿度。
三、系统总体设计
a. 系统总体设计框架
b. 系统总电路图
c. 元器件清单表
元器件 | 数量 |
Arduino uno主板 | 1块 |
DHT11温湿度传感器 | 1块 |
LCD1602液晶显示屏 | 1块 |
蓝牙HC-05 | 1块 |
无源蜂鸣器 | 1块 |
发光二极管 | 1个 |
200欧姆电阻 | 1个 |
面包板 | 1个 |
杜邦线(公对母、公对公) | 若干条 |
USB数据线 | 1条 |
四、源程序
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <DHT.h>
DHT dht(2,DHT11);//实例化一个对象dht,定义接口2为DHT11的数据接口
SoftwareSerial BT(10,9);//设置接口
LiquidCrystal lcd(12,11,6,5,4,3);//设置接口
#define buzzer 7
#define led 8
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);//设置以每秒比特数(波特)为单位的串行数据传输的数据速率
BT.begin(9600);//初始化蓝牙
pinMode(buzzer,OUTPUT);
pinMode(led,OUTPUT);
dht.begin();//初始化DHT11
Serial.println("DHT11准备就绪");
lcd.begin(16,2);//初始化LCD
Serial.println("蓝牙准备就绪");
BT.println("蓝牙就绪");
delay(1000);//延时1s
}
void loop() {
// put your main code here, to run repeatedly:
float h = dht.readHumidity();//定义浮点型变量h,记录湿度
float t = dht.readTemperature();//定义浮点型变量t,记录温度
//蓝牙与手机通信
if(Serial.available())
{//串口->手机端
char x = Serial.read();
BT.print(x);
Serial.print(x);
}
if(BT.available())
{//手机端->串口
char p = BT.read();
Serial.print(p);
}
//在串口监视器显示温湿度数据
Serial.print("湿度是:");
Serial.print(h);
Serial.println("%");
Serial.print("温度是:");
Serial.print(t);
Serial.println("°c");
Serial.println(" ");
//lcd显示
lcd.clear();
lcd.setCursor(0, 0);//在第一行第一列显示
lcd.print("H:");
lcd.print(h);//lcd打印湿度
lcd.print("%");
lcd.setCursor(0, 1);//在第二行第一列显示
lcd.print("T:");
lcd.print(t);//lcd打印温度
lcd.print("°c");
//蜂鸣器报警
if(t>30)
{ //温度大于30度,蜂鸣器报警
BT.println("温度过高!");
tone(buzzer,800,2000);//在buzzer引脚上生成800赫兹持续2000ms的方波
}
//呼吸灯闪烁
if(h>55)
{//湿度大于55%,LED灯闪烁,湿度越大闪烁频率越大
BT.println("湿度过高!");
int s;
s=400-h;
digitalWrite(led,HIGH);//点亮LED
delay(s);
digitalWrite(led,LOW);//熄灭LED
delay(s);
}
//蓝牙同步显示至手机
BT.print("湿度是:");
BT.print(h);
BT.println("%");
BT.print("温度是:");
BT.print(t);
BT.println("°c");
delay(1000);//延时1s
}
五、成果展示
温湿度传感器检测的数据会在液晶屏进行显示。当温度超出预设范围会发出蜂鸣警报;当湿度超出预设范围时,小灯会开始闪烁。
温湿度会实时显示在蓝牙调试器应用的对话框,并且当气温和空气中的含水量异常时,会向蓝牙调试器发送报警信息。