分享一个小项目
本帖最后由 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¬humb=yes
最上面tex-272框:下面的文字组件
第二行,两个按键(都是普通按钮),图标自己修改换一下
第三行,两个数据组件,样式设成第二个,数据单位湿度改成%,最大值100;温度同理。
第四行,一个数据组件,样式设成第二个,数据单位改成“单位”,最大值1000(因为这里是直接调用烟雾传感器的数值,所以就设置成1000,报警在200左右,平常100左右);
第五行,一个按键
第六行,一个调试组件,直接放上面就
最后,保存就完成了,直接调试上传ok。
最后的效果
https://www.arduino.cn/forum.php?mod=attachment&aid=Njc1NDd8YWM3MjNiYTF8MTU5MTQ0MjY5NHwyMTY3NTd8OTg2MTE%3D¬humb=yes
环境烟雾异常,温度异常同理
https://www.arduino.cn/forum.php?mod=attachment&aid=Njc1NTN8MDc2OTQzNGN8MTU5MTQ0MjY5NHwyMTY3NTd8OTg2MTE%3D¬humb=yes
新手经验还不是很足,最后欢迎大家一起交流指导。
您的DHT的库能发我以下吗 FAN-YI 发表于 2020-6-13 12:29
您的DHT的库能发我以下吗
咋给你 联系我www.huatou.fun
页:
[1]