本篇文章,主要介绍如何使用DHT22温湿度传感器和继电器制作一款Arduino温控风扇。使用DHT22传感器获取温度值,然后将在LCD显示屏上显示此温度值。我们将检查温度值是否大于26,如果温度大于26,则启动继电器,风扇将开始旋转。
所需的硬件
● Arduino Uno 开发板
● DHT22 温湿度传感器
● LCD1602 显示屏
● 继电器
● 9V电池 //其他电池也可以
● 1K电阻
● 直流电机
● 小风扇
● 面包板
● 若干条连接导线
LCD1602 显示屏,连接如下:
● 将 “LCD1602 显示屏” 的 “VSS 引脚” 连接到 “Arduino Uno 开发板” 的 “GND 引脚” ;
● 将 “VDD 引脚” 连接到 “Arduino Uno 开发板” 的 “VCC(5v) 引脚” ;
● 将 “V0 引脚” 接 “1K电阻” 到 “GND (或者接电位器) 引脚” ;
● 将 “RS 引脚” 连接到 “Arduino Uno 开发板” 的 “引脚 12” ;
● 将 “R / W 引脚” 连接到 “Arduino Uno 开发板” 的 “GND 引脚”。此时, “LCD1602 显示屏” 处于读取状态;
● 将 “E(使能) 引脚” 连接到 “Arduino Uno 开发板” 的 “引脚 11” ;
● 将 “D4-D7 引脚” 分别连接到 “Arduino Uno 开发板” 的 “引脚10,9,8,7 引脚” ;
● 将 “A 引脚” 接 “1K电阻” 到 “VCC(5v) 引脚” ;
● 将 “K 引脚” 接 “GND 引脚” 。
然后将继电器模块 relayPin 连接到 Arduino Uno 开发板 。在继电器模块的输入端,连接如下:
● 将继电器模块的 “VCC 引脚” 连接到 “Arduino Uno 开发板” 的 “5V 引脚 " ;
● 将继电器模块的 “IN 引脚” 连接到 “Arduino Uno 开发板”的 “引脚 3” ;
● 将继电器模块的 “GND 引脚” 连接到 “Arduino Uno 开发板” 的 “GND 引脚”。
最后,按照以下方式连接DHT22温湿度传感器:
● 将 “DHT22” 的 “引脚 1(即VCC引脚)” 连接到 “Arduino Uno 开发板” 的 “5V 引脚” 。
● 将 “DHT22” 的 “引脚 2(数据引脚)” 连接到 “Arduino Uno 开发板” 的 “引脚 2” 。
● 将 “DHT22” 的 “引脚 3(数据引脚)” 置空。
● 将 “DHT22” 的 “引脚 4(接地引脚)” 连接到 “Arduino Uno 开发板” 的 “GND 引脚” 。
成品展示
源码
#define DHT11PIN 2 //定义温湿度针脚号为2号引脚
dht11 DHT11;
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); //设置接口
int incomedate = 0;
int relayPin = 3; //继电器引脚
void setup()
{
Serial.begin(9600); //连接到电脑串口监视器
pinMode(relayPin, OUTPUT); //继电器输出模式
pinMode(DHT11PIN,OUTPUT); //温湿度模块输出模式
lcd.begin(16,2);
lcd.clear(); //清屏
delay(1000); //延时1000ms
}
void loop ()
{
int chk = DHT11.read(DHT11PIN); //将读取到的值赋给chk
int tem=(float)DHT11.temperature; //将温度值赋值给tem
int hum=(float)DHT11.humidity;
Serial.print("Humidity:"); //打印出Humidity:
Serial.print(hum);
Serial.print("Tempeature:");
Serial.print(tem); //使屏幕显示文字//打印出湿度结果
Serial.println("%");
delay(200);
lcd.setCursor(0, 0) ; //设置光标位置为第1行第1个位置
lcd.print("Tempeature:");
lcd.print(tem); //使屏幕显示温度
lcd.setCursor(0, 1) ;
lcd.print("Humidity:");
lcd.print(hum); //使屏幕显示湿度
if (tem >26) //如果温度大于26摄氏度
{
digitalWrite(relayPin, LOW); //继电器开,风扇开
Serial.println(" OPEN!");
} else
{
digitalWrite(relayPin,HIGH);
Serial.println("CLOSE!");
}
delay(500); //延时0.1秒,这里也就是刷新速度。
}
注意:
此程序需要引用两个 “库文件” ,分别为:
●
●
链接: https://pan.baidu.com/s/1wHXLNhYdRS_h3CqHphllbw
提取码: 7vhi
运行代码
#include
#include
#define DHT11PIN 2 //定义温湿度针脚号为2号引脚
dht11 DHT11;
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); //设置接口
int incomedate = 0;
int relayPin = 3; //继电器引脚
void setup()
{
Serial.begin(9600); //连接到电脑串口监视器
pinMode(relayPin, OUTPUT); //继电器输出模式
pinMode(DHT11PIN,OUTPUT); //温湿度模块输出模式
lcd.begin(16,2);
lcd.clear(); //清屏
delay(1000); //延时1000ms
}
void loop ()
{
int chk = DHT11.read(DHT11PIN); //将读取到的值赋给chk
int tem=(float)DHT11.temperature; //将温度值赋值给tem
int hum=(float)DHT11.humidity;
Serial.print("Humidity:"); //打印出Humidity:
Serial.print(hum);
Serial.print("Tempeature:");
Serial.print(tem); //使屏幕显示文字//打印出湿度结果
Serial.println("%");
delay(200);
lcd.setCursor(0, 0) ; //设置光标位置为第1行第1个位置
lcd.print("Tempeature:");
lcd.print(tem); //使屏幕显示温度
lcd.setCursor(0, 1) ;
lcd.print("Humidity:");
lcd.print(hum); //使屏幕显示湿度
if (tem >26) //如果温度大于26摄氏度
{
digitalWrite(relayPin, LOW); //继电器开,风扇开
Serial.println(" OPEN!");
} else
{
digitalWrite(relayPin,HIGH);
Serial.println("CLOSE!");
}
delay(500); //延时0.1秒,这里也就是刷新速度。
}