找回密码
 立即注册
查看: 210403|回复: 10

如何使用Arduino开发板制作温度控制的风扇

  [复制链接]

864

主题

285

回帖

3695

积分

版主

积分
3695
QQ
发表于 2019-1-17 17:06:20 | 显示全部楼层 |阅读模式

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


代码说明

首先我们需要包含用于DHT22传感器和LCD的库文件。


这些库将有助于简化代码。由于我们使用库,必须确保使用的库安装在Arduino IDE中。要在Arduino IDE中安装,请转到Sketch选项卡,下拉到Include Library,然后单击Manage Library。在Library Manager中搜索DHT和LiquidCrystal,然后安装。

  1. #include “DHT.h”
  2. #include “LiquidCrystal.h”
复制代码

library.jpg

通过库管理器将这两个库添加到Arduino IDE中。


然后我们初始化了连接LCD和DHT22传感器的引脚。之后,我们定义了DHT传感器的类型,我们使用的是DHT22传感器。还有许多其他类型的DHT传感器可供选择,如DHT11,因此在此定义类型非常重要。

  1. LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

  2. #define DHTPIN 8

  3. #define DHTTYPE DHT22
  4. DHT sensor(DHTPIN, DHTTYPE);
复制代码

setup()函数中,我们将命令发送到DHT22和LCD,开始与Arduino通信。然后我们将继电器引脚声明为输出引脚,因为我们将从Arduino向继电器提供电压以起送继电器。继电器反向工作(高电平表示继电器低电平)。

  1. lcd.begin(16,2);

  2. sensor.begin();

  3. pinMode(relay_pin, OUTPUT);

  4. digitalWrite(relay_pin, HIGH);
复制代码

loop()函数中,我们清除LCD显示,然后从传感器读取温度值。

  1. lcd.clear();

  2. float t = sensor.readTemperature(); //reading the temperature from the sensor

  3. // Checking if the sensor is sending values or not

  4. if (isnan(t)) {

  5. lcd.print("Failed");

  6. delay(1000);

  7. return;

  8. }
复制代码

然后我们在LCD上打印此温度值,如果温度值大于35,则启动继电器,风扇开始旋转。

  1. lcd.setCursor(0,0);

  2. lcd.print("Temp: ");

  3. lcd.print(t);
  4. lcd.print(" C");

  5. if (t > 35){

  6. digitalWrite(relay_pin, LOW);

  7. lcd.setCursor(0,1);

  8. lcd.print("Fan is ON ");

  9. delay(10);

  10. }
复制代码

以下是本文的完整代码: main.rar (507 Bytes, 下载次数: 691)

回复

使用道具 举报

0

主题

1

回帖

13

积分

新手上路

积分
13
发表于 2019-3-26 19:42:15 | 显示全部楼层
感謝,很有用
回复

使用道具 举报

0

主题

5

回帖

42

积分

注册会员

积分
42
发表于 2019-5-10 21:56:55 | 显示全部楼层

你好请问你做了实物出来吗
回复

使用道具 举报

0

主题

1

回帖

18

积分

新手上路

积分
18
发表于 2019-5-16 11:10:32 | 显示全部楼层
pinMode(relay_pin, OUTPUT);

写high输出应该3.3V, 继电器应该吸合吧?
回复

使用道具 举报

0

主题

1

回帖

16

积分

新手上路

积分
16
发表于 2019-6-10 20:33:53 | 显示全部楼层
代码编译不了的    无法编译DHT这个库文件   只有DHT11这个库   楼主可以做一个使用DHT11的温度传感器的温控风扇教程么?
回复

使用道具 举报

0

主题

2

回帖

17

积分

新手上路

积分
17
发表于 2019-6-11 16:40:42 | 显示全部楼层
您好,  看了您的文章。感觉写的非常好。我最近在找合作写手,为我们的产品长期写文章。 这是我的qq:947545626  期待您的消息。
回复

使用道具 举报

0

主题

1

回帖

13

积分

新手上路

积分
13
发表于 2019-7-13 09:35:37 | 显示全部楼层
不错不错,学习一下
回复

使用道具 举报

0

主题

8

回帖

187

积分

注册会员

积分
187
发表于 2019-7-18 11:35:44 | 显示全部楼层
建议设置一个温度的区间 这样避免在临界值的时候继电器的来回跳动~
回复

使用道具 举报

0

主题

1

回帖

16

积分

新手上路

积分
16
发表于 2021-7-6 18:37:15 | 显示全部楼层
我用了dht11后,(代码已改版本号)传感器没有数据,lcd也只有亮屏没有数据,这样该咋整啊
回复

使用道具 举报

864

主题

285

回帖

3695

积分

版主

积分
3695
QQ
 楼主| 发表于 2021-7-7 09:18:11 | 显示全部楼层
yfw 发表于 2021-7-6 18:37
我用了dht11后,(代码已改版本号)传感器没有数据,lcd也只有亮屏没有数据,这样该咋整啊 ...

可以参考以下链接:

Arduino开发板使用DHT11温湿度传感器的方法

Arduino开发板使用DHT11/DHT22温湿度传感器的初学指南
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|YiBoard一板网 ( 冀ICP备18020117号 )

GMT+8, 2025-10-29 23:27 , Processed in 0.188327 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表