通过使用Arduino开发板和雨量传感器(Rain Sensor)连接,可以轻松制作一个简单的雨水检测系统(Rain Detection System)。传感器将检测到任何降雨,Arduino开发板将对其进行感应并执行所需的操作。这样的系统可用于许多不同的领域,例如农业和汽车领域。降雨检测可用于自动调节灌溉过程。而且,连续的降雨数据可以帮助农民使用该智能系统,仅在需要时才自动为作物浇水。同样,在汽车领域,通过使用雨水检测系统可以使雨刷器完全自动化。而且,家庭自动化系统还可以使用雨水检测功能自动关闭窗户并调节室温。在本篇文章中,我们将使用Arduino和蜂鸣器制作简单的雨量传感器。然后,您可以在该设置基础之上制作任何所需的内容。另外,请注意,雨量传感器模块根据使用情况也称为雨滴传感器、或雨水传感器,但本文中它们均指的是同一传感器,并且工作原理相同。
所需的材料
● Arduino UNO开发板
● 雨量传感器
● 蜂鸣器
● 面包板
● 连接导线
雨量传感器
雨量检测模块由两个电路板组成,分别是雨量传感器电路板和控制板。
雨量传感器电路板模块(Rain Sensor)由两个铜线组成,其设计方式使得它们在干燥条件下可为电源电压提供高电阻,并且该模块的输出电压为5V。随着电路板上湿度的增加,该模块的电阻逐渐减小。随着电阻的降低,其输出电压也会相对于模块上的湿度降低。雨量传感器电路板模块由两个用于连接到控制板的引脚组成,如下所示。
控制板模块控制灵敏度并将模拟输出转换为数字输出。如果模拟值低于控制板的阈值,则输出为低电平;如果模拟值高于阈值,则输出为数字高电平。为了进行比较和转换,使用了LM393运算放大器比较器。运算放大器比较器是一个有趣的电路,可以用来比较两个不同的电压值。
如下所示,雨量控制模块由4个用于连接Arduino的引脚组成,即VCC、GND、D0、A0,另外两个引脚用于连接雨量传感器电路板模块。总之,雨量传感器电路板模块检测雨水,控制板模块用于控制灵敏度,并将模拟值转换为数字值。
雨量传感器的工作原理
雨量传感器模块的工作原理很容易理解。在晴天期间,由于模块干燥,因此对电源电压具有很高的电阻。该电压在模块的输出引脚上为5V。如果由Arduino的模拟引脚读取,则此5V读取为1023。在下雨期间,雨水会导致雨量传感器模块电路板的湿度增加,进而导致电阻减小。随着电阻逐渐减小,输出电压开始减小。
当雨量传感器模块完全湿透并且其提供的电阻最小时,输出电压将尽可能低(约0)。如果由Arduino的模拟引脚读取,则此0V将读取为0值。如果模块部分潮湿,则该雨板模块的输出将取决于其提供的电阻。如果通过防雨板模块提供的电阻的输出为3V,则读取的模拟值将为613。可以通过以下公式得出查找ADC的公式:ADC =(模拟电压值X 1023)/ 5。通过使用此公式,您可以将任何模拟电压转换为Arduino模拟读取值。
电路图
下面的电路图显示了Arduino与雨量传感器的电路连接。
电路图中所示的雨量传感器模块连接至控制板。控制板的VCC引脚连接到5V电源。接地引脚接地。如果需要,可以将D0引脚连接到Arduino的任何数字引脚,并且该引脚必须在程序中声明为输入引脚。 由于D0引脚输出的是高低电平信号,因此我们无法获得D0引脚确切的输出电压值。如果输出引脚超过阈值电压,则控制模块可以监测输出的变化。即使雨量传感器模块中的输出电压发生一点变化,我们也需要操作蜂鸣器。由于这些原因,我们使用A0引脚,并将其连接到Arduino的模拟引脚,这使得监视输出变化变得容易。蜂鸣器可以连接到Arduino的任意数字引脚。如果蜂鸣器需要5V以上的电压,则尝试使用继电器电路或晶体管。
代码说明
雨量传感器的Arduino代码是使用Arduino IDE编写的。该项目的完整代码在本文末尾给出。
#define rainfall A0
#define buzzer 5
int value;
int set=10;
将引脚A0定义为rainfall,将引脚5定义为buzzer,并将变量“value”和“set”声明为整数,并将其变量set值设置为10。可以根据实际情况更改此值。如果您希望即使下雨很小也能启动蜂鸣器,将变量值设置为最小值。
void setup() {
Serial.begin(9600);
pinMode(buzzer,OUTPUT);
pinMode(rainfall,INPUT);
}
初始化串口通讯,并将蜂鸣器设置为输出引脚,将rainfall引脚设置为输入引脚。
void loop() {
value = analogRead(rainfall);
Serial.println(value);
value = map(value,0,1023,225,0);
在loop函数中,函数analogRead读取雨量传感器的值。Serial.println(value)在串口监视器上打印该值,这在调试时很有帮助。map函数映射输出引脚上的雨量传感器的值,并为变量分配一个值,范围为0到225。
if(value>=set){
Serial.println("rain detected");
digitalWrite(buzzer,HIGH);
如果读取的传感器值大于set值,则程序进入循环,在串口监视器上打印消息并打开蜂鸣器
else{
digitalWrite(buzzer, LOW);
仅当该值小于set值时,程序才进入else功能。当设定值大于传感器的值时,将关闭蜂鸣器,表明没有雨。
基于Arduino的雨水检测系统的工作
该系统的工作方式是:在下雨时,雨水充当触发器,从而触发蜂鸣器。在雨滴传感器的Arduino代码中,我们定义了引脚5是蜂鸣器和A0是雨滴传感器引脚。
这是雨量传感器的众多应用场景中的一种,在雨刷、其他家庭自动化、农业部门等中也会看到相同的原理。希望您理解该项目并喜欢进行制作。
编辑:hfy
-
雨量传感器
+关注
关注
1文章
35浏览量
8929 -
Arduino
+关注
关注
187文章
6462浏览量
186613
发布评论请先 登录
相关推荐
评论