加湿器是用于增加封闭区域的相对湿度以确保该区域有足够水分的设备。特别是在冬天,当打开加热器时,它会导致空气的相对湿度降低。在这个diy项目中,我们将建造一个自动加湿器,它可以通过传感器机制保持大气空气的相对湿度。我们还使用显示器以空气中水分百分比的形式显示相对湿度 (RH)。除了 Arduino 和 LCD,我们还使用DHT11 传感器来读取大气湿度值。如果它发现相对湿度低于要求的限制,它会打开加湿器,反之亦然。
构建便携式加湿器所需的组件
超声波加湿器
Arduino纳米
5V继电器
7805
25V,1000uf电解电容
12V,2 AMP AC-DC 适配器
DHT11 传感器
USB母插座
性能板
连接线
便携式加湿器的工作原理
便携式加湿器可以通过使用高频振动的金属膜片产生温暖/凉爽的雾气。声音振动将水分推入空气中。加湿器中产生的雾气几乎立即被空气吸收。加湿器需要漂浮在水床上才能产生雾气。我们要建造的加湿器的工作原理可以通过下面的框图来理解:
如上框图所示,超声波加湿器放置在容器内的水面上。加湿器漂浮在水面上。由于我们需要感应湿度,因此 DHT11 湿度传感器与 Arduino Nano 连接,并连接 OLED 显示器以显示实时值。此外,根据湿度值,我们需要触发继电器,进而将加湿器切换到 ON/OFF。因此,将加湿器值与参考值进行比较,并根据湿度值打开/关闭加湿器。该除湿机的主要特点如下:
类型:浮动/超声波
电源:USB,5V DC
工作电流:500Ma
噪音等级:≤36db
便携式加湿器电路图
此处给出了使用 Arduino构建DIY 加湿器的完整原理图:
让我们详细了解电路图。如图所示,首先使用 7805 稳压器和电容滤波器将 12V 直流电源转换为 5V 直流电源。然后将此电源提供给 Arduino Nano、OLED、DHT11 和继电器电路。DHT11 的数据引脚连接到 Arduino 的数字输入引脚,如代码所示和配置。OLED 显示器通过 I2C 引脚连接到 Arduino,即 Arduino 的 A4、A5 引脚。同样,Arduino 的数字输出引脚连接到 Relay 和 BJT 用于 DC 风扇驱动。
在 Perfboard 上焊接组件:
为了使项目设置移动化且更兼容,我将所有组件焊接在穿孔板上,如下图所示:
为加湿器编程 Arduino Nano
按照电路图完成硬件连接成功后,现在是时候将代码刷入 Arduino 了。完整的代码在文档末尾给出。这里我们逐行解释整个代码。
因此,第一步是在代码中包含整个所需的库,即本项目中的“ SoftwareSerial.h ”、“ wire.h ”、“Adafruit_SH1106.h”和“DHT.h”。“ SoftwareSerial.h ”和“ wire.h ”是内置的,“ Adafruit_SH1106.h ”可以从这个链接下载,“DHT.h”可以从这个链接下载。
#include
#include
#include
#include "DHT.h"
然后,定义 OLED I2C 地址,可以是 OX3C 或 OX3D,在我的例子中是 OX3C。通常,1.3英寸OLED的地址是OX3C。此外,必须定义显示器的复位引脚。在我的例子中,它被定义为 -1,因为显示器共享 Arduino 的复位引脚。
#define OLED_ADDRESS 0x3C
#define OLED_RESET -1
Adafruit_SH1106 display(OLED_RESET);
现在,在 DHT 类类型中声明了一个对象,该对象可以在整个代码中使用。
DHT dht;
国际湿度=0;
在setup()中,我们知道,这里需要对串行通信、OLED 显示器初始化等进行初始化。这里,对于软件串行通信,默认波特率定义为 9600。这里 SH1106_SWITCHCAPVCC 用于从3.3V 内部和display.begin函数用于初始化显示。
无效设置()
{
序列.开始(9600);
dht.setup(2);
pinMode(6,输出);
pinMode(11,输出);
display.begin(SH1106_SWITCHCAPVCC, OLED_ADDRESS);
display.clearDisplay();
}
要从传感器读取湿度值,使用 getHumidity() 函数并将其存储在变量中。然后使用选择文本大小和光标位置的相应功能将其显示在 OLED 上,如下所示。
延迟(dht.getMinimumSamplingPeriod());
湿度 = dht.getHumidity();
display.setTextSize(1);
display.setTextColor(白色);
display.setCursor(27, 2);
display.print("电路文摘");
display.setTextSize(1);
display.setCursor(35, 20);
display.print("湿度(%)");
显示.显示();
display.setTextSize(2);
display.setCursor(55, 40);
display.print(湿度);
显示.显示();
延迟(50);
display.clearDisplay();
最后,为了触发加湿器,将湿度值与参考湿度水平进行比较,低于参考湿度水平,触发继电器,打开加湿器和风扇。
如果(湿度<88)
{
数字写入(6,HIGH);
数字写入(11,高);
}
else
{
digitalWrite(6,LOW);
数字写入(11,低);
}
}
测试便携式加湿器
一旦代码和硬件准备就绪,我们就可以测试这款加湿器在封闭房间内的性能。为此,请按照以下步骤操作:
向容器中注入不超过容器3/4的淡水,然后将加湿器漂浮在容器上,如下所示:
打开适配器电源以打开电路,现在我们应该看到 OLED 上的湿度水平。
然后,如果湿度水平低于参考值,则加湿器应该开始产生雾气并且应该打开风扇。
该自制加湿器的完整工作原理也在文档末尾给出的视频中进行了说明。如果您有任何疑问,可以将它们留在下面的评论部分。
代码
#include 《SoftwareSerial.h》
#include 《Wire.h》
#include 《Adafruit_SH1106.h》
#define OLED_ADDRESS 0x3C
#define OLED_RESET -1
Adafruit_SH1106 display(OLED_RESET);
#include “DHT.h”
DHT dht;
国际湿度=0;
无效设置()
{
序列。开始(9600);
dht.setup(2);
pinMode(6,输出);
pinMode(11,输出);
display.begin(SH1106_SWITCHCAPVCC, OLED_ADDRESS);
display.clearDisplay();
}
无效循环()
{
延迟(dht.getMinimumSamplingPeriod());
湿度 = dht.getHumidity();
display.setTextSize(1);
display.setTextColor(白色);
display.setCursor(27, 2);
display.print(“电路文摘”);
display.setTextSize(1);
display.setCursor(35, 20);
display.print(“湿度(%)”);
显示。显示();
display.setTextSize(2);
display.setCursor(55, 40);
display.print(湿度);
显示。显示();
延迟(50);
display.clearDisplay();
如果(湿度《85)
{
数字写入(6,HIGH);
数字写入(11,高);
}
else
{
digitalWrite(6,LOW);
数字写入(11,低);
}
}