自从接触到了Blinker,本着折腾的思想,就一直想将家里的设备都接入网络,方便使用。这篇文章就做我的家庭改造记录吧。一个nodeMCU是有许多引脚供我们使用的,既然这样,我们就不能浪费掉,把它们都利用起来。
以下内容适合对Blinker和Arduino有一定了解和一定编程能力的人士食用。当然我对程序进行了较详细的注释。若想进行学习,可以看这里Blinker快速接入指南
为了方便,我这里使用的是成品板nodeMCU。就像这样的:
再奉献上一张它的引脚图(图片来自百度):
转载请注明出处。以下是程序:
#define BLINKER_WIFI
#define BLINKER_PRINT Serial
#define BLINKER_ALIGENIE_LIGHT//将设备定义为传感器类型,对接天猫精灵使用
#include <Blinker.h>
char auth[] = "*************";//设备key,在手机APP查看
char ssid[] = "*************";//网络名称,亲测证明手机热点也可以
char pswd[] = "*************";//网络密码
#define LED 16 //引脚1
#define CS 5 //引脚2
#define btn1 "btn" //设备按键1
#define btn2 "btn-awu" //设备按键2
BlinkerButton Button1(btn1);//创建按键组件
BlinkerButton Button2(btn2);//
// 按下按键btn1即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
digitalWrite(LED, !digitalRead(LED));
if(state == "on")
{
digitalWrite(LED,LOW);
Button1.print("on");
}
else if(state == "off")
{
digitalWrite(LED,HIGH);
Button1.print("off");
}
}
// 按下按键btn2即会执行该函数
void button2_callback(const String & state2) {
BLINKER_LOG("get button state: ", state2);
digitalWrite(CS, !digitalRead(CS));
if(state2 == "on")
{
digitalWrite(CS,LOW);
Button2.print("on");
}
else if(state2 == "off")
{
digitalWrite(CS,HIGH);
Button2.print("off");
}
}
void setup() {
Serial.begin(115200);// 初始化串口
pinMode(LED, OUTPUT);// 初始化有LED的IO
digitalWrite(LED, HIGH);
pinMode(CS, OUTPUT);// 初始化测试IO
digitalWrite(CS, HIGH);
Blinker.begin(auth, ssid, pswd);// 初始化blinker
Button1.attach(button1_callback);//绑定回调函数
Button2.attach(button2_callback);
BLINKER_DEBUG.stream(Serial);//调试信息
BLINKER_DEBUG.debugAll();//调试信息
}
void loop() {
Blinker.run();
}