4810| 11
|
[进阶] 基于Yeelink平台的智能厨房燃气报警装置 |
本帖最后由 hnyzcj 于 2018-2-19 09:05 编辑 基于Yeelink平台的智能厨房烟雾报警装置 创意来源: 普通的家用燃气报警器只能报警或切断燃气管路,若主人不在家并且在电磁阀的上端发生漏气,报警器将束手无策。我们切实需要一款能够远程通知并更有效地排险的报警器。 作品设计: A燃气检测: 采用高性能燃气传感器,可以检测包括一氧化碳、烷类、石油气、天然气等多种气体,检测更全面。 B报警方式: 支持本地报警和远程报警。本地报警的同时可以开启排气扇和窗户(支持拓展电磁阀)。 C报警模式选择: 可以通过自锁开关选择报警方式(蜂鸣器响或不响),可以让用户更加安心地寻找泄露源。 D远程报警: 只要接上网线,登录Yeelink客户端,家中的燃气报警情况便可以了如指掌。如果家中燃气泄漏,客户端会第一时间推送通知。 E新颖的排险方式:兼容传统报警方式又弥补老报警方式的不足,开启窗户和排气扇,彻底通风让屋内环境更加安全。 项目器材:
制作过程: A电路连接: 使用Arduino Uno作为主控器,上面堆叠W5100拓展板和I/O拓展板。所有传感器及输出装置均通过此I/O板进行,无需额外焊接或接线。 接线索引: MQ9传感器接分支模块,一路接A0脚,一路经阈值模块接A1脚。 3、4脚接LED模块。 5、6脚接蜂鸣器模块。 7脚接自锁开关模块。 8脚接9g 180°舵机。 9脚接风扇模块。 接以太网拓展板至英特网。 B代码编写: [mw_shl_code=cpp,true]/* ****************************** * 厨房燃气报警主动排险系统 * 制作人:淮南一中高一(20)周孜宁 * * 接线索引: * MQ9传感器接分支模块,一路接A0脚,一路经阈值模块接A1脚。 * 3、4脚接LED模块。 * 5、6脚接蜂鸣器模块。 * 7脚接自锁开关模块。 * 8脚接9g 180°舵机。 * 9脚接风扇模块。 * 接以太网拓展板至英特网。 * * Update Log: * 20170301231051 开始编写。 * 20170304004603 基础部分编写完成,风扇模块有bug,Yeelink未编写。 * 20170304100237 修正不能返回主循环的bug,取消风扇模块查看效果。 * 20170304152002 修正风扇模块的bug。 * 20170304225615 修正bug,剩余Yeelink未做。 ****************************** */ //为避免版权纠纷只提供本地代码,Yeelink代码示例和库文件请到Yeelink官网下载。 //目前上交的作品中烧录的代码包含Yeelink远程监测,请勿烧写新代码。 #include <Ethernet.h> #include <SPI.h> #include <yl_device.h> #include <yl_w5100_client.h> #include <yl_wifi_client.h> #include <yl_messenger.h> #include <yl_value_data_point.h> #include <yl_sensor.h> #include <Servo.h> #define LED1 3 #define LED2 4 #define Beep1 5 #define Beep2 6 #define Switch 7 #define fan 9 int Deg = 0; //设置舵机角度(全局变量) int Dly = 1000;//设置延时时间(全局变量) Servo windowServo; void setup() { Serial.begin(9600); //引脚定义 pinMode(LED1,OUTPUT); //定义3脚为输出口 pinMode(LED2,OUTPUT); //定义4脚为输出口 pinMode(Beep1,OUTPUT); //定义5脚为输出口 pinMode(Beep2,OUTPUT); //定义6脚为输出口 pinMode(Switch,INPUT); //定义7脚为输入口 pinMode(8,OUTPUT); //定义8脚为输出口 pinMode(fan,OUTPUT); //定义9脚为输出口 windowServo.attach(8); //定义windowServo舵机位置 } void loop() { //变量设置 intGasD = analogRead(1); //燃气传感器(报警用) intGasA = analogRead(0); //燃气传感器(上传用) intPower = digitalRead(Switch);//自锁开关状态 //此处为Yeelink代码并获取GasA值上传。 Serial.println(GasD); //串口测试 if(GasD >= 512 & Power ) { //若燃气超出阈值、自锁开关压下 OpenWindowAlarm(); } //调用开窗报警函数 if(GasD >= 512 & !Power ) { //若燃气超出阈值、自锁开关弹起 OpenWindow(); } //调用开窗函数 if(GasD <512 ) { //若燃气未超出阈值 CloseWindow(); } //调用关窗函数 } void OpenWindowAlarm(){ Deg =100; //设置Deg值 windowServo.write(Deg); //设置舵机角度为Deg delay(1000); //延时1s让舵机旋转至100° digitalWrite(LED1,HIGH);//LED1亮 digitalWrite(LED2,HIGH); //LED2亮 digitalWrite(Beep1,HIGH);//Beep1响 digitalWrite(Beep2,HIGH);//Beep2响 digitalWrite(fan,HIGH); //风扇启动 } void OpenWindow(){ Deg =100; //设置Deg值 windowServo.write(Deg); //设置舵机角度为Deg delay(1000); //延时1s让舵机旋转至100° digitalWrite(LED1,HIGH);//LED1亮 digitalWrite(LED2,HIGH);//LED2亮 digitalWrite(Beep1,LOW);//Beep1不响 digitalWrite(Beep2,LOW);//Beep2不响 digitalWrite(fan,HIGH); //风扇启动 } void CloseWindow(){ Deg =0; //设置Deg值 windowServo.write(Deg); //设置舵机角度为Deg delay(1000); //延时1s让舵机旋转至0° digitalWrite(LED1,LOW); //LED1不亮 digitalWrite(LED2,LOW); //LED2不亮 digitalWrite(Beep1,LOW);//Beep1不响 digitalWrite(Beep2,LOW);//Beep2不响 digitalWrite(fan,LOW); //风扇关闭 } [/mw_shl_code] 以上为本地模块代码。 C安装: 1. 将纸盒平铺展开,在对应孔位上开孔,后端留出气源连接线和电池出口。 2. 将纸盒上面开展示槽;在侧面开舵机槽,模拟“窗户”。 3. 将“窗户”粘接至舵机上,用热熔胶固定在侧面。 4. 将各组件用螺丝和螺母固定到位。 5. 将模拟展示区和接线区分隔开。 6. 接上电源,指示灯亮,安装成功。 上述是用纸盒做的步骤,后改为收纳盒制作。 (该作品已获2017安徽省青少年科技创新大赛二等奖) |
© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed