Arduino 简易水位报警器的实现

Arduino 简易水位报警器的实现

物联网课程,老师布置的一个作业,要求用到2个以上传感器或设备完成一个Arduino小项目。本人选择使用水位传感器和蜂鸣器,组合形成一个简易的水位报警器——当水位升高至水位传感器,蜂鸣器发出声响,起到警报作用。

一、软硬件准备

  1. 硬件: Arduino UNO开发板,水位传感器,无源蜂鸣器(低电平触发MH-FMD),杜邦线若干根、USB方口数据线1根;
    Arduino UNO开发板:
    Arduino 简易水位报警器的实现_第1张图片 水位传感器:
    Arduino 简易水位报警器的实现_第2张图片
    无源蜂鸣器:
    Arduino 简易水位报警器的实现_第3张图片
  2. 软件: Arduino IDE;

二、模块与开发板间的接线

由于在用fritzing绘制arduino硬件连线图时找不到无源蜂鸣器(低电平触发MH-FMD)元件,找了个外形差不多的元件做接线示意图的代替,希望见谅-。-

  1. 水位传感器的通用三接口连线,一个连VCC(5V),一个连GND,本实验不测量水位抵达传感器的高度,故输出端选择接入数字输入端口4,而不是模拟端口。测试水位高度可参考使用Arduino读取水位传感器数据
  2. 无源蜂鸣器(低电平触发MH-FMD)的VCC则连接开发板的3V电源,一个连DND,输出端连数字端口8。

arduino模拟接线图:
Arduino 简易水位报警器的实现_第4张图片

arduino实际接线图:
Arduino 简易水位报警器的实现_第5张图片
注意:水位传感器正负极不能反接,会烧坏传感器。

三、代码部分

水位传感器(Water Sensor),它是一个模拟输入模块,通过具有一系列的暴露的平行导线线迹测量其水滴/水量大小从而判断水位,完成水量到模拟信号的转换,输出的模拟值可以直接被Arduino开发板读取,达到水位报警的功效。

本实验不做模拟值测试。

水位传感器没有插入到水中时,输出值为0,代码处表示的变量为temp;反之其输出值为1;当水位传感器完全拔出,输出值为0。当temp为1时,满足报警条件,蜂鸣器发出声响,当temp为0时,蜂鸣器不会响起。

水位传感器的使用可参考使用Arduino读取水位传感器数据
蜂鸣器播放歌曲的方法可参考Arduino学习笔记—超简单制作音乐

//简谱频率,可用蜂鸣器实现音乐播放,此处简化只用于发出警报声
#define DH1 523
//列出全部D调的频率
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
//根据简谱列出各频率 
int tune[] = {DH1,DH1,DH1,DH1};
//根据简谱列出各节拍
float duration[]={1,0.5,0.5,1,};
int length; //用于表示tune长度,即音符个数
int temp; //水位传感器的输出值
int beep = 8;  //定义蜂鸣器接口为数字8接口
int water = 4; //定义水位传感器接口为数字4接口

void setup() {
  Serial.begin(9600);
  pinMode(beep, OUTPUT); //定义蜂鸣器的输出beep为输出接口
  pinMode(water, INPUT); //定义水位传感器的输出water为输入接口
  length=sizeof(tune)/sizeof(tune[0]);   //计算tune长度,即音符个数,用于播放乐谱
}

void loop() {
  temp = digitalRead(water); //获取水位传感器输出状态
  Serial.print(temp); //用于串口监视器看到temp数值变化
  if(temp == 1){
    //digitalWrite(beep, HIGH); 
     for(int x=0;x<length;x++)
  {
    tone(beep,tune[x]); //此函数依次播放tune序列里的数组,即每个音符
    delay(500*duration[x]); //每个音符持续的时间,即节拍duration,500是调整时间的越大,曲子速度越慢,越小曲子速度越快
    noTone(beep); //停止当前音符,进入下一音符
  }
  delay(100); //等待100ms后,循环重新开始
  }
  else{ 
     digitalWrite(beep, LOW);
   }
 delay(100);
}

四、水位报警器测试

  1. 水位传感器放置水中,蜂鸣器根据乐谱与频率发出响声。
    矿泉水瓶反抗无效,无奈上镜-。-
    Arduino 简易水位报警器的实现_第6张图片
  2. 水位传感器从水中取出,蜂鸣器停止发出响声。如果取出传感器后蜂鸣器仍在响,水位传感器表面可能残留大片水渍,擦干即可停止奏乐。
    Arduino 简易水位报警器的实现_第7张图片
  3. 串口监视器中temp数据变化:
    Arduino 简易水位报警器的实现_第8张图片

参考文章

[1] : https://blog.csdn.net/song527730241/article/details/50897997
[2] : https://www.geek-workshop.com/thread-288-1-1.html
[3] : https://baijiahao.baidu.com/s?id=1632071100919342482&wfr=spider&for=pc

你可能感兴趣的:(物联网)