前言
在前面已经将Arduino配置esp8266开发环境以及esp8266接入Blinker介绍了以后只是能在手机端看到在线。本文介绍如何给esp8266添加功能。
提示:本篇文章参考点灯科技官方文档进行应用 https://diandeng.tech/doc/arduino-support
一、按键控制
一切开始都要从点灯开始,接下来介绍如何用点灯科技APP远程控制一个灯
1.APP设置
要使用APP远程控制一个灯就要先在界面当中添加开关组件,如下图操作。
上图为按键编辑界面,图中组件名是需要添加到代码中,按键类型中普通按键就是相当于一个按钮,开关即是两种状态(on或者off),其他的都可以自己设置。
1.代码配置
完整代码如下:
#define BLINKER_WIFI//以WiFi方式接入blinker
#include <Blinker.h>
#include <Wire.h>
char auth[] = "*********";//设备密钥
char ssid[] = "*********";//WiFi名称
char pswd[] = "*********";//WiFi密码
// 新建组件对象
BlinkerButton Button1("btn-n40");
// 按下按键即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
if (state=="on") {
digitalWrite(LED_BUILTIN, LOW);
// 反馈开关状态
Button1.print("on");
} else if(state=="off"){
digitalWrite(LED_BUILTIN, HIGH);
// 反馈开关状态
Button1.print("off");
}
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, !LOW);
Button1.attach(button1_callback);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
}
void loop() {
//Blinker运行
Blinker.run();
}
将在APP中添加的按键的组件键名添加到新建组件对象中
BlinkerButton Button1("btn-n40");
将代码烧录到板子上远行,就能通过按键控制esp8266自带的灯啦,同样需要改变按键功能也可以在按键函数中进行修改。
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
if (state=="on") {
digitalWrite(LED_BUILTIN, LOW);
// 反馈开关状态
Button1.print("on");
} else if(state=="off"){
digitalWrite(LED_BUILTIN, HIGH);
// 反馈开关状态
Button1.print("off");
}
}
其中反馈开关状态是反馈到APP端,因为我设置按键为开关按键,所以当状态改变时手机端也会跟着改变。
二、数据反馈
esp8266读取到的数据上传到点灯科技APP中进行显示。
1.APP配置
跟按键控制一样要使用APP远程显示esp8266数据就要先在界面当中添加数据组件,如下图操作。
上图为数据组件编辑界面,图中组件名是需要添加到代码中,其他的都可以自己设置。
2.代码配置
代码如下(示例):
#define BLINKER_WIFI//以WiFi方式接入blinker
#include <Blinker.h>
#include <Wire.h>
char auth[] = "*********";//设备密钥
char ssid[] = "*********";//WiFi名称
char pswd[] = "*********";//WiFi密码
// 新建组件对象
BlinkerNumber num("num-vks");
// 心跳包函数
void heartbeat()
{
num.print(num_read);
sl.print(sl_read);
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
//心跳包函数
Blinker.attachHeartbeat(heartbeat);
}
void loop() {
Blinker.run();
for(float i=100;i>=0;i=i-0.01)
{
float h = i;
if (isnan(h))
{
BLINKER_LOG("Failed to read from DHT sensor!");
}
else
{
BLINKER_LOG("numdity: ", h, " %");
num_read = h;
}
Blinker.delay(1000);
}
}
代码中我并没有真正读取数据而是用循环函数来模拟电量变化的数据,将代码烧录到板子中,打开点灯科技就可以看到数据显示。
三、给微信发送消息
在点灯科技官方文档中有给微信发送消息的功能。
Blinker.wechat("Title: button", "State: pressed", "Message: hello blinker");
模板消息中依次为标题, 状态, 消息内容
注: 每个用户微信推送使用限制为 10条/天/人
*限制 1次/分钟
使用此功能需要提前绑定微信公众号,绑定流程如下:
1、关注 点灯物联 微信公众号
2、打开 点灯物联 微信公众号, 点击主页右下角 Blinker
3、输入账号密码完成绑定
示例
用此功能开发了一个火焰检测报警装置进行演示,代码如下:
#define BLINKER_WIFI//以WiFi方式接入blinker
#include <Blinker.h>
#include <Wire.h>
char auth[] = "*********";//设备密钥
char ssid[] = "*********";//WiFi名称
char pswd[] = "*********";//WiFi密码
#define hy 13
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
pinMode(LED_BUILTIN, OUTPUT);
pinMode(hy,INPUT);
digitalWrite(LED_BUILTIN, !LOW);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
}
void loop()
{
Blinker.run();
int dhy;
dhy=digitalRead(hy);
if(dhy==0)
{
Blinker.wechat("hello word", "明火警告", "发现明火,处理完成后请重启");
while(1)
{
digitalWrite(LED_BUILTIN, LOW);
Blinker.delay(1000);
BLINKER_LOG("等待重启");
digitalWrite(LED_BUILTIN, !LOW);
Blinker.delay(1000);
} //等待重启
}
Blinker.delay(1000);
}
当火焰传感器检测到明火后便会向微信发送一条消息,如下图所示:
文章来源:https://www.toymoban.com/news/detail-436201.html
总结
目前用esp8266结合Blinker实现远程控制、数据回传、微信提醒等功能基本满足目前远程控制需求。文章来源地址https://www.toymoban.com/news/detail-436201.html
到了这里,关于esp8266连接blinker进行控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!