牟东
水火无情。为了及时对“水情”和“火灾”等突发情况进行报警,我们利用Arduino,借助雨量传感器和火焰传感器,开发制作了一套“火与水报警”系统——LED灯、蜂鸣器发声,报警信息显示在屏幕上。1.实验设备和电路连接
设备:Arduino UNO主板一块,雨量传感器一块,火焰传感器一块,红色LED灯一块,低电平触发蜂鸣器一块,面包板一块,各种颜色的Du-Bang线若干根。首先,将Arduino的5V和GND通过杜邦线连接至面包板;接着,将雨水传感器和火焰传感器的VCC和GND端均插接至面包板(与Arduino的5V和GND相连),二者的DO数字输出端则分别插接至Arduino的7号和8号数字引脚;然后,将蜂鸣器的VCC和GND端同样也插接至面包板,它的I/O信号端插接至12号数字引脚;最后,将LED灯长腿插入13号、短腿插入相邻的GND引脚,再通过数据线将Arduino与计算机USB接口连接(如图1)。
首先通过杜邦线将Arduino的5V和GND连接到面包板上;然后将雨量传感器和火焰传感器的VCC和GND端子插入面包板(接Arduino的5V和GND),它们的DO数字输出分别插入Arduino的7号和8号数字引脚;然后,蜂鸣器的VCC和GND端子也插入面包板,其I/O信号端子插入12号数字引脚;最后,将LED灯的长腿插入13号,短腿插入相邻的GND插针,然后通过数据线将Arduino与电脑的USB接口连接起来(如图1)。
值得一提的是,雨量传感器和火焰传感器的数字输出信号是“反逻辑”的结果——当雨量传感器的传感板上没有水滴时,数字输出信号为高电平“1”;并且当检测到水滴时,输出低电平“0”。另外,如果蜂鸣器标有“低电平触发”字样,其工作模式与此类似,只有被低电平“0”触发才会发声。2.Arduino IDE代码编程实现“火灾和水报警”
首先,定义变量:语句“int Beep = 12”和“int led = 13”分别对应蜂鸣器和LED灯的引脚号,语句“int water sensor pin = 7;和“内部火焰传感器”pin = 8;”分别对应于雨量传感器和火焰传感器的管脚号;然后,在引脚模式下,在setup()函数中声明它们。蜂鸣器和LED灯为输出模式——“引脚模式(蜂鸣,输出);" " pinMode(led,输出);”,两个传感器都是输入模式——“pin模式(水传感器pin,输入);" " pinMode(火灾传感器
Pin,INPUT);”;然后,再通过语句“Serial.begin(9600);”设置串口监视器的波特率(如图2)。
Pin,输入);";然后,通过语句“serial . begin(9600);"设置串行监视器的波特率(如图2所示)。
在loop()函数中,首先定义两个变量WaterSensorValue和FireSensorValue,并传递“int WaterSensor”
value = digital read(WaterSensorPin);和“内部火灾传感器值=数字读数(火灾传感器
Pin);”两个语句,实现分别读取雨水传感器和火焰传感器数字信号;接着,构建“if……else……”双分支选择结构,判断雨水传感器和火焰传感器所检测的信号是否为低电平:“WaterSensorValue == LOW or FireSensorValue == LOW”,其中有一个成立(或同时成立)的话,则进行“亮灯、发声、屏显”三种形式的报警——语句“digitalWrite(led,HIGH);”控制LED灯,语句“digitalWrite(Beep,LOW);”控制蜂鸣器(注意是低电平触发),语句“Serial.println(“警报——水火无情,火速检查!”);”是向串口监视器输出提示信息;否则,则通过类似的三个语句来实现“熄灯、无声、屏显”——“digitalWrite(led,LOW);”“digitalWrite(Beep,HIGH);”和“Serial.println(“情况正常,请保持!”);”;最后,添加迟延0.5秒钟的语句“delay(500);”(单位是毫秒),避免死机。完成程序的编写(如图3)。
pin);“两句话分别读取雨量传感器和火焰传感器的数字信号;然后构造一个“if……else……”双分支选择结构来判断雨水传感器和火焰传感器检测到的信号是否为低:“水传感器值= =低或火传感器值= =低”。如果其中一个为真(或两个都为真),将发出三种形式的警报——“灯光、声音和屏幕显示”的声明。控制LED灯,说“digitalWrite(哔,低);“控制蜂鸣器(注意是低电平触发),语句“Serial.println”(“报警-水火无情,快查!" ); "将提示信息输出到串行监视器;否则“熄灯、静音、上屏”就要靠三个类似的句子来实现————“digital write(led,LOW);" " digitalWrite(嘟嘟,高);”和“Serial.println”(“情况正常,请保持!" ); ";最后,添加语句“delay(500);”有0.5秒的延迟。(单位为毫秒)以避免崩溃。完成编程(如图3所示)。
保存程序,编译后上传到Arduino。打开串口监视器后,测试“火灾与水报警”:正常情况下无“水情”或“火灾”,LED灯不亮,蜂鸣器不响,屏幕显示“情况正常,请保持!”;当水滴滴落在雨量传感器的感应板上(或用湿纸巾触摸)时,LED灯闪亮,蜂鸣器鸣响,屏幕显示“报警——水火无情,快检查!”;或者用打火机靠近火焰传感器进行“打火”测试,也会触发报警(如图4)。3.Python代码编程实现“水火报警”
Python还可以控制Arduino实现“水火报警”。首先通过语句“import time”和“from pinpong.board import Board,pin”导入时间和Pinpong库,初始化Arduino uno开发板:“Board(“uno”)。begin()";然后,通过语句" Beep = Pin(Pin。D12,引脚。OUT)”和“led = Pin(引脚。D13,引脚。OUT)”,说明蜂鸣器和LED灯分别插在Arduino的12号和13号数字引脚上,都是数字输出;同样,语句“WaterSensor = Pin(Pin。D7,引脚。IN)”和“FireSensor = Pin(Pin。D8,引脚。在中)是雨量传感器和火焰传感器的声明,它们分别插入7号和8号数字引脚,都是数字输入。在“while True:”的循环结构中,首先建立两个变量Water_Sensor_Value和Fire_Sensor_Value,赋值语句“water _ sensor _ value = water sensor。read _ digital()"和" Fire_Sensor_
Value = FireSensor.read_digital()”,实现读取雨水传感器和火焰传感器所检测到的数字信号功能;然后再建立“if……else……”双分支选择结构,通过对条件表达式“Water_Sensor_Value == 0 or Fire_Sensor_Value == 0”进行逻辑值的判断,条件成立,说明有“水情”或“火情”,则执行“亮灯、发声、屏显”动作——“led.write_digital(1)”“Beep.write_digital(0)”和“print(‘警报——水火无情,火速检查!)”;条件不成立的话(else分支),则执行“熄灯、无声、屏显”动作——“led.write_digital(0)”“Beep.write_digital(1)”和“print(‘情况正常,请保持!)”;最后,添加延迟0.5秒钟语句“time.sleep(0.5)”(如图5)。
Value = FireSensor.read_digital()”,实现读取雨水传感器和火焰传感器检测到的数字信号的功能;然后建立“if……else……”双分支选择结构,判断条件表达式“water _ sensor _ value = = 0或fire _ sensor _ value = = 0”的逻辑值。如果条件成立,则意味着存在“水情”或“火情”,然后执行“发光、发声和屏幕显示”的动作。)";如果条件不成立(else分支),执行“关灯、静音、屏幕显示”-“LED”动作。Write _ digital (0)" "哔。Write _ digital (1)”和“print('情况正常,请保留!)";最后,添加延迟为0.5秒的语句“time.sleep(0.5)”(如图5所示)。
程序保存后再按功能键F5运行程序,测试Arduino“水火警报仪”,功能与IDE代码编程完全一致(如图6)。
程序保存后,按功能键F5运行程序并测试Arduino“火灾和水报警”。该功能与IDE代码编程完全一致(图6)。
4.思维+图形化编程实现“水火报警”
首先,点击Mind+左下角的“扩展”项,将Arduino Uno主控板加载至主界面,注意不要加载其中的水分传感器和火焰传感器,因为该积木块默认封装的数据读取模式是模拟方式,不符合我们的需求。接着,建立“如果……那么执行……否则……”双分支选择结构,先对插接在7号和8号数字引脚的雨水传感器、火焰传感器进行数字信号的读取,再进行逻辑“或”运算判断;条件成立的话,设置数字引脚13输出为高电平——LED灯发光,设置数字引脚12输出为低电平——蜂鸣器发声,串口字符串输出“警报——水火无情,火速检查!”;条件不成立,则对应熄灭LED灯、蜂鸣器不发声和输出显示“情况正常,请保持!”的操作;最后,添加“等待0.5秒”时间延迟积木模块(如图7)。
首先点击Mind+左下角的“展开”项,将Arduino Uno主控板加载到主界面。注意不要在里面加载湿度传感器和火焰传感器,因为这个积木默认的数据读取方式是模拟的,不符合我们的需求。然后,建立“如果…则执行…否则…”的双分支选择结构。首先读取插在7号和8号数字引脚上的雨量传感器和火焰传感器的数字信号,然后判断逻辑or运算。如果满足条件,将数字13脚输出设为高电平——LED灯亮,数字12脚输出设为低电平——蜂鸣器鸣响,串串输出“报警——水火无情,快查!”;不满足条件,LED灯熄灭,蜂鸣器不响,输出显示“情况正常,请保持!”运营;最后,添加“等待0.5秒”时间延迟构建块(如图7所示)。
保存程序后,点击“上传到设备”测试Arduino“火水报警器”,同样会实现“水情”和“火灾”的检测报警功能。
评论列表()