在本篇文章中,我们将主要介绍如何使用DHT22传感器和继电器制作一款Arduino温控风扇。使用DHT22传感器获取温度值,然后将在LCD显示屏上打印此温度值。我们将检查温度值是否大于35,如果温度大于35,则启动继电器,风扇将开始旋转。
所需的硬件
● Arduino Uno开发板
● LCD1602显示屏
● DHT22温湿度传感器
● 直流电机
● 9V电池
● 10K电位器
● 连接导线
● 面包板
硬件部分
首先,我们按照以下方式将LCD模块连接到Arduino开发板:
● 将LCD的VSS引脚连接到Arduino的GND。
● 将VDD引脚连接到Arduino的5V。
● 将V0引脚连接到10K电位器的中心引脚。将电位器的其他两个引脚连接到5V和GND。
● 将RS引脚连接到Arduino的引脚2。
● 将R / W引脚连接到Arduino的地。这将使LCD处于读取模式。
● 将E(使能)引脚连接到Arduino的引脚3。
● 将D4-D7引脚分别连接到Arduino的引脚4、5、6、7。
● 将LED背光的正极引脚15通过串联一只220欧电阻连接到5V。
● 将LED背光的负极引脚16连接到Arduino的GND。
然后将继电器模块Keyes_ST1y连接到Arduino开发板。在继电器模块的输入端,连接如下:
● 将继电器模块的VCC引脚连接到Arduino的5V引脚。
● 将继电器模块的IN引脚连接到Arduino的引脚9。
● 将继电器模块的GND引脚连接到Arduino的GND。
在继电器模块Keyes_SR1y的输出侧,将9V电池的负极连接到继电器模块的公共端(C),并将继电器模块的NC连接到风扇负极。然后将电池正极连接到风扇正极。
最后,按照以下方式连接DHT22温湿度传感器:
● 将DHT22的引脚1(即VCC引脚)连接到Arduino的5V
● 将DHT22的引脚2(数据引脚)连接到Arduino的引脚8。
● 将DHT22的引脚4(接地引脚)连接到Arduino的GND。
connections.png (324.94 KB, 下载次数: 119)
-1-17 16:56 上传
代码说明
首先我们需要包含用于DHT22传感器和LCD的库文件。
这些库将有助于简化代码。由于我们使用库,必须确保使用的库安装在Arduino IDE中。要在Arduino IDE中安装,请转到Sketch选项卡,下拉到Include Library,然后单击Manage Library。在Library Manager中搜索DHT和LiquidCrystal,然后安装。
#include “DHT.h”
#include “LiquidCrystal.h”复制代码
library.jpg (40.77 KB, 下载次数: 145)
-1-17 16:56 上传
通过库管理器将这两个库添加到Arduino IDE中。
然后我们初始化了连接LCD和DHT22传感器的引脚。之后,我们定义了DHT传感器的类型,我们使用的是DHT22传感器。还有许多其他类型的DHT传感器可供选择,如DHT11,因此在此定义类型非常重要。
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
#define DHTPIN 8
#define DHTTYPE DHT22
DHT sensor(DHTPIN, DHTTYPE);复制代码
在setup()函数中,我们将命令发送到DHT22和LCD,开始与Arduino通信。然后我们将继电器引脚声明为输出引脚,因为我们将从Arduino向继电器提供电压以起送继电器。继电器反向工作(高电平表示继电器低电平)。
lcd.begin(16,2);
sensor.begin();
pinMode(relay_pin, OUTPUT);
digitalWrite(relay_pin, HIGH);复制代码
在loop()函数中,我们清除LCD显示,然后从传感器读取温度值。
lcd.clear();
float t = sensor.readTemperature(); //reading the temperature from the sensor
// Checking if the sensor is sending values or not
if (isnan(t)) {
lcd.print("Failed");
delay(1000);
return;
}复制代码
然后我们在LCD上打印此温度值,如果温度值大于35,则启动继电器,风扇开始旋转。
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(t);
lcd.print(" C");
if (t > 35){
digitalWrite(relay_pin, LOW);
lcd.setCursor(0,1);
lcd.print("Fan is ON ");
delay(10);
}复制代码
以下是本文的完整代码:
main.rar
(507 Bytes, 下载次数: 364)
-1-17 17:02 上传
点击文件名下载附件