在本文中,我们将了解如何制作Arduino温度控制风扇,项目会使用到DHT22温湿度传感器和继电器,通过DHT22传感器获取温度值,并将此温度值显示在LCD上,然后程序检查温度值是否大于35度,如果满足,继电器就会被激活,风扇就会开始转动。
硬件部分
首先将LCD1602模块与Arduino连接起来:深入了解LCD1602模块
- 连接LCD1602模块的VSS针脚到Arduino的GND;
- 连接LCD1602模块的VDD引脚到Arduino的5V;
- 将LCD1602模块的V0引脚连接到10K电位器的中心引脚。将电位器的另外两个引脚连接到5V和地;
- 连接LCD1602模块的RS引脚到Arduino的引脚2;
- 连接LCD1602模块的R/W引脚到Arduino的地。LCD处于读取模式;
- 连接LCD1602模块的E(使能)引脚到Arduino的引脚3;
- 将LCD1602模块的D4-D7引脚连接到Arduino的引脚4,5,6,7;
- 通过220欧姆电阻将LED背光的正引脚15连接到5V;
- 连接LCD1602模块的引脚16,LED背光负到Arduino的地。
然后将继电器模块与Arduino连接。连接方法如下:深入了解继电器
- 连接继电器模块的VCC引脚到Arduino的5V引脚;
- 连接继电器模块的IN 引脚到Arduino的引脚 9;
- 连接继电器模块的GND 到Arduino的GND。
然后连接风扇,在继电器模块的输出端,将9V电池的负极连接到继电器模块的公共端(C),将继电器模块的NC连接到风扇的负极,最后连接电池的正极到风扇的正极。
最后,连接DHT22温湿度传感器:深入了解DHT22
- 将DHT22的引脚 1 (VCC 引脚)连接到Arduino的5V上;
- 将DHT22的引脚 2(data 引脚)连接到Arduino的引脚 8;
- 将DHT22的引脚4连接到Arduino的接地引脚。
程序代码解释
首先,程序包含了DHT22传感器和LCD的库。
#include "DHT.h" #include "LiquidCrystal.h"
然后,初始化连接LCD1602模块和DHT22传感器的引脚。程序定义了DHT传感器的类型,使用的是DHT传感器。其他类型的DHT传感器可根据实际可用,如DHT11,所以在这里定义的类型是很重要的。
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); #define DHTPIN 8 #define DHTTYPE DHT22 DHT sensor(DHTPIN, DHTTYPE);
在setup函数中,我们命令DHT22和LCD1602与Arduino开始通信。然后将继电器引脚声明为输出引脚,我们用Arduino的电压激活继电器,继电器的工作电平与之相反(对继电器来说,高意味着低)。
lcd.begin(16,2); sensor.begin(); pinMode(relay_pin, OUTPUT); digitalWrite(relay_pin, HIGH);
在loop函数中,程序先清屏,然后再从传感器读取温度值。
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); }