安全设备/系统
通过将Arduino 与雨量传感器连接,可以轻松构建一个简单的雨量检测系统。传感器将检测到任何落在其上的降雨,Arduino 板将感应到它并可以执行所需的操作。像这样的系统可以用于许多不同的领域,例如农业和汽车领域。降雨检测可用于自动调节灌溉过程。此外,持续降雨数据可以帮助农民使用这个智能系统,仅在绝对需要时自动给作物浇水。类似地,在汽车领域,挡风玻璃刮水器可以通过使用雨水检测系统实现全自动。和家庭自动化系统还可以使用雨水检测自动关闭窗户和调节室温。在本教程中,我们将使用带有蜂鸣器的 Arduino构建一个基本的雨量传感器。然后,您可以使用此设置在其上构建您想要的任何东西。另外,请注意,雨量传感器模块根据用途也称为雨滴传感器或雨量计传感器或雨水传感器,但它们均指本项目中使用的同一传感器,并且它们的工作原理相同。
所需材料
Arduino UNO
雨量传感器
蜂鸣器
面包板
连接线
雨量传感器
Raindrops 模块由两块板组成,即雨板和控制板。
雨板模块由两条铜线组成,其设计方式是在干燥条件下为电源电压提供高电阻,该模块的输出电压为 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 代码是使用 Arduino IDE 编写的。该项目的完整代码在页面末尾给出。
#定义降雨量A0 #定义蜂鸣器 5 整数值; 诠释集=10;
定义引脚 A0 为降雨,引脚 5 为蜂鸣器,并将变量“值”和“设置”声明为整数并将其变量设置值设置为 10。该值可以根据所需的操作级别进行更改。如果您想让蜂鸣器激活,即使在下雨的情况下也将其设置为最小值
无效设置(){ 序列号.开始(9600); pinMode(蜂鸣器,输出); pinMode(降雨,输入); }
初始化串口通讯,设置蜂鸣器。将雨量管脚设置为输出管脚和输入管脚。
无效循环(){ 值 = 模拟读取(降雨); 序列号.println(值); 值 = 地图(值,0,1023,225,0);
函数analogRead 读取雨量传感器的值。函数映射从输出引脚映射雨量传感器的值,并为变量分配一个值,范围从 0 到 225。
如果(值>=设置){ Serial.println("检测到雨"); 数字写入(蜂鸣器,高);
如果读取的传感器值大于设定值,则程序进入循环,在串行监视器上打印消息并打开蜂鸣器
别的{ 数字写入(蜂鸣器,低);
数字写入(蜂鸣器,低);
只有当值小于设定值时,程序才进入else函数。此功能会在设定值高于传感器值时关闭蜂鸣器,表示没有下雨。
基于Arduino的雨水检测系统的工作
该系统的工作方式是,当下雨时,雨水充当触发器,打开蜂鸣器。在雨滴传感器 Arduino 代码中,我们定义引脚 5 和 A0 是蜂鸣器和降雨。通过这样做,我们可以更改函数定义部分的引脚,而代码的其余部分将保持不变。这将使程序员在编辑引脚时很容易。
在 void 循环中,analogRead命令从传感器读取值。在下一行,命令Serial.println(value)在串行监视器上打印值。这将在调试时有所帮助。map 函数将传入的值映射在 0 -225 之间。映射的函数格式是映射(值、最小值、最大值、最小值映射的值、最大值映射的值)。蜂鸣器将根据设定值和传感器的输出打开或关闭。该值在 if 函数中与设置值进行比较。如果该值大于设定值,则开启蜂鸣器。如果该值小于设定值,蜂鸣器将关闭。
#define雨量A0
#define蜂鸣器5
int值;
诠释集=10;
无效设置(){
序列.开始(9600);
pinMode(蜂鸣器,输出);
pinMode(降雨,输入);
}
无效循环(){
值=模拟读取(降雨);
Serial.println("LOL");
序列号.println(值);
值 = 地图(值,0,1023,225,0);
序列号.println(值);
if(value>=set){
Serial.println("检测到雨");
数字写入(蜂鸣器,高);
}
其他 {
数字写入(蜂鸣器,低);
}
延迟(200);
}
全部0条评论
快来发表一下你的评论吧 !