|
在本篇文章中,我们将主要介绍如何使用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)
|