lou 发表于 2020-5-7 13:12:53

Blynk物联网系列(4)-远程烟雾报警器

Blynk物联网系列(4)-远程烟雾报警器(基于Blynk平台+WeMos D1 WIFI开发板)


一、材料准备


[*]MQ-2烟雾传感器
MQ-2型烟雾传感器采用半导体气敏材料,当与烟雾接触时,会引起内部导电率的变化,烟雾越浓,导电率越大,输出模拟信号越大。MQ-2型烟雾传感器对天然气、液化石油气灯烟雾有很高的敏感性,尤其对烷类烟雾更为敏感。烟雾传感器为模拟信号传感器,接线时需要连接到开发板的模拟管脚。

[*]有源蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,主要用于电子玩具、打印机、小型报警器、定时器等产品中。在程序中可以通过控制蜂鸣器发出声音的频率来改变声音。
二,项目实践-远程烟雾报警(1)思路分析
在本项目中,当烟雾报警器检测到烟雾是,蜂鸣器发出报警声,同时给主人手机发送邮件通知。
(2)硬件连接
烟雾传感器            WeMos D1S            <------>       A0V            <------>       5VG            <------>      GNG
蜂鸣器             WeMos D1S      <------>    D2(GPIO16)V      <------>       5VG      <------>      GNG
(3)创建项目
Blynk APP中,点击“New Project”,在“Create New Project”页面输入项目名称“远程烟雾报警”,选择ESP8266硬件类型,然后单击“Create”按钮,即可创建项目。

(4)添加LabeledValue组件
为了能显示烟雾传感器检测到的烟雾值,我们需要使用一个Labeled Value组件,添加Labeled Value组件后,设置输入管脚为“ADC0”

Labeled Value组件设置参数说明如下:

设置项推荐值说明
设置组件名称烟雾值设置组件名称,建议少于4个字
INPUTADC0设置管脚号为该组件要读取数据的管脚号
MIN0组件读取到的最小值
MAX1023组件读取到的最大值
LABEL左对齐设置文本对齐方式,设置数值后缀,如温度符号℃,湿度符号%等
FONTSIZE中设置文字大小
TEXT绿色设置文本颜色
READINGRATE1sec设置组件读取数据的频率

(5)添加Email组件
当烟雾值过大时,还需要设置系统自动给手机发送邮件通知,这时就需要用到Email组件。添加组件后,设置邮箱地址和文本类型。

Email组件设置参数说明如下:

设置项推荐值说明
To收件人邮箱地址收件人邮箱地址
CONTENTTYPEtext/html文本类型

(6)程序实现
①用Mixly编写程序在Mixly软件模块类别中,打开Blynk IoT,选择“服务器信息”,输入正确的服务器地址、WiFi名称、WiFi密码及Blynk授权码。在本项目中,每隔500ms判断烟雾传感器检测到的数值是否大于800,如果大于,则发送邮件提醒主人。

②用Arduino IDE编写程序打开ArduinoIDE软件,复制以下代码,修改程序中的授权码、WiFi名称和密码,舵机对应管脚号,具体程序如下:
/*************************************************************
项目说明:发送邮件
App项目设置:创建e-mail组件
硬件连接:按钮传感器连接在GPIO2管脚
注意事项:最高频率5秒1封邮件
*************************************************************/
#define BLYNK_PRINT Serial
#define BLYNK_MAX_SENDBYTES 128 // 该值越大,能发送的邮件长度越长
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <NewTone.h>
char auth[] = "v2W7PEi2hH_3bBlm0InIrFaaED_mOEfR";//授权码
char ssid[] = "ssid";//wifi名称
char pass[] = "pass";//wifi密码
BlynkTimer timer;
void myTimerEvent1() {
Serial.println(analogRead(A0));
if (analogRead(A0) > 50) // 你可以在此设置任何触发邮件发送的条件
{
    Blynk.email("xyuanli@163.con", "家里着火了", String("当前烟雾浓度:") + String(analogRead(A0)));
    Blynk.notify("Notify");
    for (int i = 1; i <= 3; i = i + (1)) {
      NewTone(12,131,1000);
      noTone(12);
    }
}
}
void setup(){
Serial.begin(9600);
   Blynk.begin(auth, ssid, pass,"blynk-cloud.com",8080);//官方服务器
pinMode(12, OUTPUT);
timer.setInterval(5000L, myTimerEvent1);
}
void loop(){
Blynk.run();
timer.run();
}

APP端显示如下:

页: [1]
查看完整版本: Blynk物联网系列(4)-远程烟雾报警器