想白嫖开发者更进一步研究-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4766|回复: 11

[分享] 想白嫖开发者更进一步研究

[复制链接]
发表于 2020-6-1 17:07 | 显示全部楼层 |阅读模式
看了公告的我,只有来这发一波自己的毕设项目了,不喜请轻喷,谢谢,好的,开冲
项目介绍一下,我用烟雾和温湿度传感器以及继电器实现远程控制以及联动。好像很简单的样子...

白嫖公告

白嫖公告
 楼主| 发表于 2020-6-1 17:18 | 显示全部楼层
首先准备的元器件:1.温湿度传感器(DHT11) 2.烟雾传感器(MQ-2)3.继电器(5v) 4.开发板用的是ESP8266 for arduino(uno R3),免去了arduino外接ESP8266。

关于成本:开发板(30.8)    DHT11(5.48)    MQ-2 (6.68 )继电器 (2.58) usb转ttl串口线也可以直接用老版的充电线(6.5)总共50左右
发表于 2020-6-1 17:25 | 显示全部楼层
直接用WEMOS D1不香吗?
 楼主| 发表于 2020-6-1 17:30 | 显示全部楼层
关于环境的搭建,arduino IDE应该就不用我教了吧....去arduino官网下载最新版的arduino IDE(我用的arduino-1.8.10),然后找到文件->首选项->附加开发板管理网址(http://arduino.esp8266.com/stable/package_esp8266com_index.json)->点击“好”

找到工具->开发板->开发板管理器,等待下载平台索引,好了之后上面的输入框搜索(ESP8266)安装最新版,可能需要点时间(github实在太慢,我花了一整夜更新。。。),后来发现可以直接去点灯的用户交流群下载最新版的包(我枯了...),顺便下载blinker库文件,关于怎么加库,以及下载论坛应该能找到。
环境搭建完之后,直接开整
 楼主| 发表于 2020-6-1 17:33 | 显示全部楼层
代码部分:
#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设备连接码
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);
  }

}
 楼主| 发表于 2020-6-1 17:35 | 显示全部楼层
代码注释应该很完整了吧,,,具体不清楚的地方可以百度,再不行直接回复问我也成。
 楼主| 发表于 2020-6-1 17:39 | 显示全部楼层
再来看下点灯blinker app上的操作
自己注册账号,右上角“+”号->Diy设备->选择arduinoWiFi接入->复制secret key
 楼主| 发表于 2020-6-1 17:40 | 显示全部楼层
huatou520 发表于 2020-6-1 17:33
代码部分:
#define BLINKER_WIFI//调用库
#include

关于blinker设备连接码,看七楼操作,设备码填了之后就直接跟 点灯blinker app 你里面的设备连接上了
 楼主| 发表于 2020-6-1 17:55 | 显示全部楼层
app点击你创建的设备后,右上角有个编辑图像,点击一下,进入布局
添加数据组件,并按照我这样命名,自己命名也可以,不过记得把上面代码中的按键换一下,也没啥难度。
最上面tex-272框:下面的文字组件
第二行,两个按键(都是普通按钮),图标自己修改换一下
第三行,两个数据组件,样式设成第二个,数据单位湿度改成%,最大值100;温度同理。
第四行,一个数据组件,样式设成第二个,数据单位改成“单位”,最大值1000(因为这里是直接调用烟雾传感器的数值,所以就设置成1000,报警在200左右,平常100左右);
第五行,一个按键
第六行,一个调试组件,直接放上面就行
最后,保存就完成了,直接调试

数据组件

数据组件
 楼主| 发表于 2020-6-1 18:05 | 显示全部楼层
在这最后放一下我最后的展示吧
app效果.png
烟雾测试.png
烟雾测试(继电器自动关闭)0.png
app烟雾预警.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 09:33 , Processed in 0.153227 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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