Blynk物联网系列(4)-远程烟雾报警器 (基于Blynk平台+WeMos D1 WIFI开发板)
MQ-2型烟雾传感器采用半导体气敏材料,当与烟雾接触时,会引起内部导电率的变化,烟雾越浓,导电率越大,输出模拟信号越大。MQ-2型烟雾传感器对天然气、液化石油气灯烟雾有很高的敏感性,尤其对烷类烟雾更为敏感。烟雾传感器为模拟信号传感器,接线时需要连接到开发板的模拟管脚。
蜂鸣器是一种一体化结构的电子讯响器,主要用于电子玩具、打印机、小型报警器、定时器等产品中。在程序中可以通过控制蜂鸣器发出声音的频率来改变声音。
二,项目实践-远程烟雾报警 (1)思路分析
在本项目中,当烟雾报警器检测到烟雾是,蜂鸣器发出报警声,同时给主人手机发送邮件通知。
(2)硬件连接
烟雾传感器 WeMos D1 S <------> A0 V <------> 5V G <------> GNG
蜂鸣器 WeMos D1 S <------> D2(GPIO16) V <------> 5V G <------> GNG
(3)创建项目
Blynk APP中,点击“New Project”,在“Create New Project”页面输入项目名称“远程烟雾报警”,选择ESP8266硬件类型,然后单击“Create”按钮,即可创建项目。
(4)添加LabeledValue组件
为了能显示烟雾传感器检测到的烟雾值,我们需要使用一个Labeled Value组件,添加Labeled Value组件后,设置输入管脚为“ADC0”
Labeled Value组件设置参数说明如下:
设置项 | | | | | | | | | | | | | | | | | 设置文本对齐方式,设置数值后缀,如温度符号℃,湿度符号%等 | | | | | | | | | |
(5)添加Email组件
当烟雾值过大时,还需要设置系统自动给手机发送邮件通知,这时就需要用到Email组件。添加组件后,设置邮箱地址和文本类型。
Email组件设置参数说明如下:
(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端显示如下:
|