一、项目介绍: 上个月我们制作的“烟雾宝盒”存在一个明显“滞后性”。使用者必须呆在或者近距离观察烟雾宝盒才能知道获知烟雾情况,实际上此时人们已经受到了烟雾的侵扰,那么能否提前得知房间是否出现烟雾呢?我们将本项目中跟大家介绍基于YEELINK平台的烟雾报警装置。可以让大家通过网络或者手机客户端,了解房间的烟雾值。更重要的是当烟雾达到设定的极限值,可以通过发送微博方式提醒您。
二、图片介绍
设备完整效果图。
效果演示视频。
http://www.tudou.com/programs/view/3WeJAvFsBoA/
为了加快实验现象,我们使用打火机的气体。
三、硬件列表
本次项目中为了让东西做出来更“整洁完美”些,我们在上次实验器材的基础上做了一些改动。具体器材列表如下:
| | | | | https://www.dfrobot.com.cn/goods-521.html | | IO 传感器扩展板 V7.1(*1) | https://www.dfrobot.com.cn/goods-791.html | | | https://www.dfrobot.com.cn/goods-160.html | | 模拟一氧化碳气体传感器 -MQ2 (*1) | https://www.dfrobot.com.cn/goods-539.html | | | https://www.dfrobot.com.cn/goods-72.html | | | https://www.dfrobot.com.cn/goods-86.html | | | |
四、制作步骤及数据连线。
(1)主控板安装: 将UNO R3放置在盒子内部,对应孔位,用微钻打孔,用螺丝将其固定在盒子底部。 (2)传感器安装 将W5100安装在UNO上,再将IO 传感器扩展板 V7.1叠加在W5100上。如下所示 (3)指示灯安装 将红、黄、蓝三色LED发光模块,安装在盒子的侧面,对应孔位先用微转打孔,用螺丝固定模块。如下图所示。由于该模块是数字型号,所以分别将其三根线插在传感器拓展板的数字口(扩展板上标有大写字母D的插口)6、7、8上(绿色数字口,红色VCC,黑色GND)。其中红色LED对应数字口6,绿色LED对应数字口7,蓝色LED对应数字口8。 (4)蜂鸣器安装 将数字蜂鸣器模块安装在盒子的另一侧面,将其三根线插在传感器拓展板的数字口4上(绿色数字口,红色VCC,黑色GND) (5)安装传感器,
模拟气体传感器 (MQ2),接在传感器扩展板的模拟口2上(扩展板上标有大写字母A的插口)(蓝色对应模拟口,红色对应VCC,黑色对应GND)。使用DF烟雾传感器内的螺丝将传感器固定在盒子顶部。
至此我们已经完成了本地硬件部分的器材安装与数据连线。 (6)注册并登录平台 进入yeelink平台注册个用户(这里不再介绍),以注册用户身份登录平台,进入用户中心。登录后点击用户头像可以进入“用户中心”。 (7)添加新设备
进入用户中心后,在页面左侧导航栏选择“我的设备”——“增加新设备”如下图所示。同时右侧出现“增加新设备” 页面。依次完成设备来源、设备名、标签 TAGS、描述、地理位置名称、地理位置数据等项目的设置。其中设备来源选择为自选设备、设备名为物联网测试项目、标签TAGS为烟雾、描述为烟雾、地理位置名称为你所在省市地区名称、地理位置数据请从地图放置一个标记以表示设备所在的位置,坐标会被自动记录。当以上设置完成后,点击保存按钮完成新设备的添加。 (8)添加传感器
点击Yeelink页面导航栏“我的设备”——“管理设备”即可看到之前添加的设备,选择需要添加传感器的设备如我们刚才添加的“物联网测试项目”,进入该设备的界面,在页面左下方传感器栏目下,点击“增加一个传感器”即可为烟雾监测添加一个传感器。
(9)设置传感器 点击添加传感器后,进入传感器设置界面。依次设置传感器名为烟雾传感器,类型为:数值型传感器,完成以上设置后点击“保存”按钮。这样我们就建立了一个名为“物联网测测试项目”的设备,同时该设备拥有了一个名为“烟雾传感器”的数值型传感器。
五、程序代码
- <div align="left">.#include <Ethernet.h></div><div align="left">#include <WiFi.h></div><div align="left">#include <SPI.h></div><div align="left">#include <yl_data_point.h></div><div align="left">#include <yl_device.h></div><div align="left">#include <yl_w5100_client.h></div><div align="left">#include <yl_wifi_client.h></div><div align="left">#include <yl_messenger.h></div><div align="left">#include <yl_sensor.h></div><div align="left">#include <yl_value_data_point.h></div><div align="left">#include <yl_sensor.h></div><div align="left">//this example reads data from a lm35dz sensor, convert value todegree Celsius</div><div align="left">//and then post it to yeelink.net</div><div align="left">//replace 2633 3539 with ur device id and sensor id</div><div align="left">yl_device ardu(17617); //此处替换为你的设备编号</div><div align="left">//yl_sensor therm(26154, &ardu);//此处替换为你的传感器编号</div><div align="left">yl_sensor yw(30621, &ardu);</div><div align="left">//replace first param value with ur u-apikey</div><div align="left">yl_w5100_client client;</div><div align="left">yl_messenger messenger(&client,"e1613c569602335b3d76c77cb5e29884","api.yeelink.net"); //此处替换为你自己的API KEY</div><div align="left">const int YW_PIN=A2;//烟雾</div><div align="left">float yw_convertor(int analog_num2)</div><div align="left">{</div><div align="left"> return analog_num2 *(5.0 / 1024.0 * 100);</div><div align="left">}</div><div align="left">void setup()</div><div align="left">{</div><div align="left"> Serial.begin(9600); //for output information</div><div align="left"> pinMode(6,OUTPUT);</div><div align="left"> pinMode(7,OUTPUT);</div><div align="left"> pinMode(8,OUTPUT);</div><div align="left"> pinMode(4,OUTPUT);</div><div align="left"> byte mac[] = {0xDE,0xAD, 0xBE, 0xEF, 0xFE, 0xAA};</div><div align="left"> Ethernet.begin(mac);</div><div align="left">}</div><div align="left">void loop()</div><div align="left">{</div><div align="left"> yl_sensor yw(30621,&ardu);//此处替换为你的传感器编号(烟雾)</div><div align="left"> int y = analogRead(YW_PIN);</div><div align="left"> Serial.println(y);</div><div align="left"> if (y>900) {</div><div align="left"> digitalWrite(6,HIGH); </div><div align="left"> digitalWrite(7, LOW); </div><div align="left"> digitalWrite(8, LOW); </div><div align="left"> tone(4,100); //发出指定频响 </div><div align="left"> pinMode(4,INPUT); //关闭4号口输出,没有想到其他好办法所以将状态改为输入</div><div align="left"> }</div><div align="left">else { </div><div align="left"> if (y>500) {</div><div align="left"> digitalWrite(7,HIGH); </div><div align="left"> digitalWrite(6, LOW); </div><div align="left"> digitalWrite(8, LOW); </div><div align="left"> }</div><div align="left"> else </div><div align="left"> {digitalWrite(8, HIGH); </div><div align="left"> digitalWrite(6, LOW); </div><div align="left"> digitalWrite(7, LOW); </div><div align="left"> }</div>
- <div align="left"> }</div><div align="left"> yl_value_data_pointdp2(yw_convertor(y));</div><div align="left"> yw.single_post(messenger,dp2);</div><div align="left"> delay(1000);</div>
- <div align="left">}</div>
复制代码
六、实验效果
当烟雾值超过设置的极值时,网络端、手机客户端、微博客户端相关节目如下:
|