通过将Arduino与雨量传感器接口,可以轻松构建一个简单的雨量检测系统。传感器将检测到任何降雨,而Arduino开发板将对其进行检测并执行所需的操作。这样的系统可用于许多不同的领域,例如农业和汽车领域。降雨检测可用于自动调节灌溉过程。此外,连续降雨数据可以帮助农民使用该智能系统,仅在绝对需要时才自动给作物浇水。同样,在汽车领域,可以通过使用雨水检测系统使雨刷器实现全自动。而且,家庭自动化系统还可以使用雨水检测功能自动关闭窗户并调节室温。在本教程中,我们将使用带蜂鸣器的Arduino构建基本的雨量传感器。然后,您可以使用此设置在其上构建任何所需的内容。另外,请注意,根据使用情况,雨量传感器模块也称为雨滴传感器或雨量计传感器或雨水传感器,但它们均指的是本项目中使用的同一传感器,并且它们均以相同原理工作。
我们还仅通过使用555 Timer来构建了一个简单的Rain Alarm和一个自动汽车刮水器,如果您不想使用Arduino,也可能要检查一下。话虽如此,让我们回到这个项目并开始构建Arduino Rain Gauge。
所需材料
- Arduino UNO
- 雨量传感器
- 蜂鸣器
- 面包板
- 连接线
雨量传感器
该雨滴模块由两块板,即雨板,控制板上的。
的雨板模块由两个铜轨,在这样一种方式,在干燥条件下它们提供了对电源电压高电阻设计的,并且该模块的该输出电压将是5V。随着电路板上湿度的增加,该模块的电阻逐渐减小。随着电阻的降低,其输出电压也会相对于模块上的湿度降低。的雨板模块包括用于如下所示连接到控制电路板的两个销。
控制板模块控制灵敏度并将模拟输出转换为数字输出。如果模拟值低于控制板的阈值,则输出为数字低;如果模拟值高于阈值,则输出为数字高。为了进行比较和转换,使用了LM393运算放大器比较器。运算放大器比较器是一个有趣的电路,可用于比较两个不同的电压值,我们已经在许多项目中将该电路用于智能电子蜡烛,激光安全警报,线路跟随器机器人等项目。
如下所示的雨量控制模块由4个用于连接Arduino的引脚组成,即VCC,GND,D0,A0,另外两个引脚用于连接雨量板模块。总之,防雨板模块检测到雨水,控制板模块用于控制灵敏度,并将模拟值转换为数字值。
雨水传感器的工作
该工作雨水传感器模块很容易理解。在晴天期间,由于防雨板模块干燥,因此对电源电压具有很高的抵抗力。该电压在雨板模块的输出引脚上显示为5V。如果由Arduino的模拟引脚读取,则此5V读取为1023。在下雨期间,雨水会导致雨板上的湿度增加,进而导致提供给水的阻力减小。随着电阻逐渐减小,输出电压开始减小。
当防雨板完全湿透并且其提供的电阻最小时,输出电压将尽可能低(约0)。如果由Arduino的模拟引脚读取,则此0V将读取为0值。如果雨板模块部分潮湿,则该雨板模块的输出将取决于其提供的电阻。如果防雨板模块提供的电阻是这样的,即输出为3V,则读取的模拟值将为613。查找ADC的公式可由下式给出:ADC =(模拟电压值X 1023)/ 5。通过使用此公式,您可以将任何模拟电压转换为t Arduino模拟读取值。
电路原理图
下面的电路图显示了带Arduino的雨滴传感器的电路连接。设计使用proteus完成,物理模块类似于电路图中所示的模块。
电路图中所示的雨量计模块已连接至控制板。控制板的VCC引脚连接到5V电源。接地引脚接地。如果需要,D0引脚连接到Arduino的任何数字引脚,并且该引脚必须在程序中声明为输出引脚。 D0引脚面临的问题是我们无法获得输出电压的确切值。如果输出超过阈值电压,则控制模块可以检测到输出的变化。即使防雨板模块中的输出电压发生很大变化,我们也需要操作蜂鸣器。由于这些原因,A0引脚连接到Arduino的模拟引脚,这使得监视输出变化变得容易。蜂鸣器,用作向用户发出的信号,可以连接到Arduino的任何数字引脚。如果蜂鸣器需要5V以上的电压,则尝试连接继电器电路或晶体管,然后将负载连接到它。
代码说明
雨量传感器的Arduino代码是使用Arduino IDE编写的。该项目的完整代码在页面末尾给出。
#定义降雨A0#定义蜂鸣器5 int值;int set = 10;
将引脚A0定义为降雨,将引脚5定义为蜂鸣器,并将变量“值”和“设置”声明为整数,并将其变量设置值设置为10。可以根据所需的操作级别更改该值。如果您希望蜂鸣器启动,即使下雨很少也可以将其设置为最小值
void setup(){Serial.begin(9600); pinMode(蜂鸣器,输出); pinMode(降雨,输入); }
初始化串行通讯,并设置蜂鸣器。将降雨引脚设置为输出引脚和输入引脚。
无效loop(){value = AnalogRead(rainfall); Serial.println(value); 值= map(值,0,1023,225,0);
函数analogRead读取降雨传感器的值。该功能图映射来自输出引脚的雨水传感器的值,并为变量分配一个值,范围从0到225。
if(value> = set){Serial.println(“检测到雨水”); digitalWrite(buzzer,HIGH);
如果读取的传感器值大于设置值,则程序进入循环,在串行监视器上打印消息并打开蜂鸣器
else {digitalWrite(buzzer,LOW);
仅当该值小于设定值时,程序才进入else功能。当设定值高于传感器的值时,此功能将关闭蜂鸣器,表明没有雨。
基于Arduino的雨水检测系统的工作
该系统的工作方式是,当下雨时,雨水充当触发器,从而打开蜂鸣器。在“雨滴传感器Arduino代码”中,我们定义了引脚5和A0为蜂鸣器和降雨。通过这样做,我们可以更改功能定义部分中的引脚,而代码的其余部分将保持不变。这将使程序员可以轻松地编辑引脚。
在空循环中, analogRead 命令从传感器读取值。在下一行,命令 Serial.println(value) 在串行监视器上打印该值。这在调试时将很有帮助。映射函数将输入值映射在0 -225之间。 映射 的功能格式是映射(值,最小值,最大值,要映射为最小值的值,要映射为最大值的值)。根据设定值和传感器的输出,蜂鸣器将被打开或关闭。该值在if函数中与设置值进行比较。如果该值大于设定值,它将打开蜂鸣器。如果该值小于设定值,蜂鸣器将关闭。
完整的工作可以在下面的视频链接中找到。这是众多应用程序中的一种,在雨刷,其他家庭自动化,农业部门等中也会看到相同的原理。希望您理解该项目并喜欢构建有用的东西。如果您有任何疑问,请使用下面的评论部分,或将我们的论坛用于其他技术问题。