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

huatou520 发表于 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点击你创建的设备后,右上角有个编辑图像,点击一下,进入布局
添加数据组件,并按照我这样命名,自己命名也可以,不过记得把上面代码中的按键换一下,也没啥难度。
数据组件及布局:
https://www.arduino.cn/forum.php?mod=attachment&aid=Njc1NDR8YzcyN2RlOTZ8MTU5MTQ0MjY5NHwyMTY3NTd8OTg2MTE%3D&nothumb=yes
最上面tex-272框:下面的文字组件
第二行,两个按键(都是普通按钮),图标自己修改换一下
第三行,两个数据组件,样式设成第二个,数据单位湿度改成%,最大值100;温度同理。
第四行,一个数据组件,样式设成第二个,数据单位改成“单位”,最大值1000(因为这里是直接调用烟雾传感器的数值,所以就设置成1000,报警在200左右,平常100左右);
第五行,一个按键
第六行,一个调试组件,直接放上面就
最后,保存就完成了,直接调试上传ok。


最后的效果
https://www.arduino.cn/forum.php?mod=attachment&aid=Njc1NDd8YWM3MjNiYTF8MTU5MTQ0MjY5NHwyMTY3NTd8OTg2MTE%3D&nothumb=yes


环境烟雾异常,温度异常同理
https://www.arduino.cn/forum.php?mod=attachment&aid=Njc1NTN8MDc2OTQzNGN8MTU5MTQ0MjY5NHwyMTY3NTd8OTg2MTE%3D&nothumb=yes


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

FAN-YI 发表于 2020-6-13 12:29

您的DHT的库能发我以下吗

huatou520 发表于 2020-6-13 14:35

FAN-YI 发表于 2020-6-13 12:29
您的DHT的库能发我以下吗

咋给你

huatou520 发表于 2020-6-13 15:24

联系我www.huatou.fun
页: [1]
查看完整版本: 分享一个小项目