分享一个小项目-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2158|回复: 3

[分享] 分享一个小项目

[复制链接]
发表于 2020-6-6 19:42 | 显示全部楼层 |阅读模式
本帖最后由 huatou520 于 2020-6-10 10:54 编辑

项目介绍,我用烟雾和温湿度传感器以及继电器实现远程控制以及联动。好像很简单的样子...这算是我的第一个blinker项目了,新手轻喷



首先准备的元器件:1.温湿度传感器(DHT11) 2.烟雾传感器(MQ-2)3.继电器(5v) 4.开发板用的是ESP8266 for arduino(uno R3),免去了arduino外接ESP8266。
有朋友建议可以使用wemos D1,也可以,两块板子也差不多。

关于成本:开发板(30.8)    DHT11(5.48)    MQ-2 (6.68 )继电器 (2.58) usb转ttl串口线也可以直接用老版的充电线(6.5)总共50左右



关于环境的搭建,arduino IDE应该就不用我教了吧....去arduino官网下载最新版的arduino IDE(我用的arduino-1.8.10),然后找到文件->首选项->附加开发板管理网址(http://arduino.esp8266.com/stable/package_esp8266com_index.json)->点击“好”


找到工具->开发板->开发板管理器,等待下载平台索引,好了之后上面的输入框搜索(ESP8266)安装最新版,可能需要点时间(github实在太慢,我花了一整夜更新。。。),后来发现可以直接去点灯的用户交流群下载最新版的包(我枯了...),顺便下载blinker库文件,关于怎么加库,以及下载论坛应该能找到。

环境搭建完之后,直接开整代码。



代码部分:

#define BLINKER_WIFI//调用库

#include <DHT.h>

#include <Blinker.h>


#define jidianqi D3 //定义继电器针脚号为D3号引脚(设备连在D8)

#define yanwu A0    //定义烟雾传感器针脚号为A0号引脚(设备连在A0)

#define wenshidu D1 //定义温湿度针脚号为D1号引脚(设备连在D3)



char auth[] = "*****"; //blinker设备连接码 关于blinker设备连接码(secret key),点灯blinker app 里面获取

char ssid[] = "****";  //wifi名称

char pswd[] = "wifi密码";


//blinker上控件绑定

BlinkerButton Button1("btn-jidianqi");

BlinkerNumber Number1("num-tem");

BlinkerNumber Number2("num-hum");

BlinkerNumber Number3("num-smk");

BlinkerButton Button2("btn-yujing");


DHT dht(wenshidu, DHT11);//获取温湿度原始数据


bool switch_onoff = 0;  //开关标志位


//开灯函数

void ON() {

  digitalWrite(jidianqi, HIGH);

  Button1.color("#00EE00");

  Button1.text("已开启");

  Button1.print();

  Button2.text("一切正常");

  Button2.color("#00EE00");

  Button2.print();

}

//关灯函数

void OFF() {

  digitalWrite(jidianqi, LOW);

  Button1.color("#000000");

  Button1.text("已关闭");

  Button1.print();


}

//异常预警函数

//int yj = 0; //初始化预警标志

void YJOFF() {

  //digitalWrite(jidianqi, LOW);

  Button1.color("#000000");

  Button1.text("异常,已关闭");

  Button1.print();

}


  void TEMOFF() {

    YJOFF();

    Button2.text("环境温度异常!");

    Button2.color("#FF0000");

    Button2.print();

  }

  void SMKOFF(){

     YJOFF();

    Button2.text("环境烟雾异常!");

    Button2.color("#FF0000");

    Button2.print();

  }


// 按下开关按键即会执行开关灯函数

void button1_callback(const String & state)

{

  switch_onoff = !switch_onoff;

  if (switch_onoff == 1) {

    ON();

  }

  else {

    OFF();

  }

}


float hum_read, tem_read, smk_read;//定义数据类型

//获取实时数据

void dataRead(const String & data)

{

  BLINKER_LOG("Blinker readString: ", data);

  Number1.print(tem_read);

  Number2.print(hum_read);

  Number3.print(smk_read);

}



void heartbeat()//心跳包

{

  Number1.print(tem_read);

  Number2.print(hum_read);

  Number3.print(smk_read);

}


void setup()

{

  Serial.begin(115200);

  BLINKER_DEBUG.stream(Serial);//串口输出


  pinMode(jidianqi, OUTPUT);//配置引脚

  digitalWrite(jidianqi, LOW);//初始化继电器引脚电平

  pinMode(yanwu, INPUT);

  // 初始化blinker

  Blinker.begin(auth, ssid, pswd);

  Blinker.attachData(dataRead);//注册实时数据按钮回调数据

  Blinker.attachHeartbeat(heartbeat);//注册回调心跳包函数

  Button1.attach(button1_callback);//注册开关按钮回调状态


  dht.begin();//启动温湿度算法库

}


void loop()

{

  Blinker.run();

  float h = dht.readHumidity();

  float t = dht.readTemperature();

  float s = analogRead(A0);

  hum_read = h;

  tem_read = t;

  smk_read = s;

  if (t > 40) //温度预警

  {

    digitalWrite(jidianqi, LOW);

    BLINKER_LOG("temperature is too high , electriical have shut down !");//电器关闭

    TEMOFF();

     delay(1000);

  }

  if (s > 200) //烟雾预警

  {

    digitalWrite(jidianqi, LOW);

    BLINKER_LOG("smoke volue is too high ,electriical have shut down !");//电器关闭

    SMKOFF();

    delay(1000);

  }

}


代码注释应该很完整了吧,,,



再来看下点灯blinker app上的操作
自己注册账号,右上角“+”号->Diy设备->选择arduinoWiFi接入->复制secret key


app点击你创建的设备后,右上角有个编辑图像,点击一下,进入布局
添加数据组件,并按照我这样命名,自己命名也可以,不过记得把上面代码中的按键换一下,也没啥难度。
数据组件及布局:

最上面tex-272框:下面的文字组件
第二行,两个按键(都是普通按钮),图标自己修改换一下
第三行,两个数据组件,样式设成第二个,数据单位湿度改成%,最大值100;温度同理。
第四行,一个数据组件,样式设成第二个,数据单位改成“单位”,最大值1000(因为这里是直接调用烟雾传感器的数值,所以就设置成1000,报警在200左右,平常100左右);
第五行,一个按键
第六行,一个调试组件,直接放上面就
最后,保存就完成了,直接调试上传ok。


最后的效果



环境烟雾异常,温度异常同理



新手经验还不是很足,最后欢迎大家一起交流指导。

发表于 2020-6-13 12:29 | 显示全部楼层
您的DHT的库能发我以下吗
 楼主| 发表于 2020-6-13 14:35 来自手机 | 显示全部楼层
FAN-YI 发表于 2020-6-13 12:29
您的DHT的库能发我以下吗

咋给你
 楼主| 发表于 2020-6-13 15:24 来自手机 | 显示全部楼层
联系我www.huatou.fun
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 04:34 , Processed in 0.080322 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表