| 在本篇文章中,我们将主要介绍如何使用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。 
  
 代码说明 首先我们需要包含用于DHT22传感器和LCD的库文件。 
 这些库将有助于简化代码。由于我们使用库,必须确保使用的库安装在Arduino IDE中。要在Arduino IDE中安装,请转到Sketch选项卡,下拉到Include Library,然后单击Manage Library。在Library Manager中搜索DHT和LiquidCrystal,然后安装。 复制代码#include “DHT.h”
#include “LiquidCrystal.h”
  通过库管理器将这两个库添加到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, 下载次数: 691) |