小爱同学控制开关灯
•笔记
72
0
在整理东西时,我发现了一个闲置的开发版ESP8266。这个小小的芯片,曾经陪伴我度过了许多探索物联网的时光。我忽然想到,可以用它来实现宿舍远程开关灯的功能。
材料清单
ESP8266(CH340)
SG90舵机(0-180度通用)
杜邦线(公对母)
接线端子(一进二出)
应用软件
米家
小爱同学
点灯·blinker
编程软件
Arduino
操作步骤
1.接线步骤,示意图
2.电脑操作,示意图
代码
#define BLINKER_MIOT_LIGHT
#define BLINKER_WIFI
#include <Blinker.h>
#include<Servo.h>
char auth[] = "";//电灯科技的key
char ssid[] = "402";//wifi名称
char pswd[] = "";//wifi密码
// 新建组件对象
//BlinkerButton Button1("btn-z4h");//把点灯科技的组件键名输入进去
//BlinkerNumber Number1("num-abc");
Servo myservo1,myservo2;//定义舵机对象
//int counter = 0;
// 按下按键即会执行该函数
//void button1_callback(const String & state) {
// BLINKER_LOG("get button state: ", state);
// // digitalWrite(D4, !digitalRead(D4));
// myservo1.write(180);
// delay(2000);
// myservo1.write(0);
//}
void mioPowerState(const String & state){
BLINKER_LOG("ee",state);
if(state==BLINKER_CMD_OFF){//如果语音接受到的是关灯就执行的动作
//digitalWrite(D4, !digitalRead(D4));
myservo1.write(90);//把舵机1设置为90度
BlinkerMIOT.powerState("off");//反馈状态
BlinkerMIOT.print();
delay(2000);//延迟2秒
myservo1.write(0);//把舵机1设置为0度
}
else if(state==BLINKER_CMD_ON){//如果语音接受到的是开灯就执行的动作
//digitalWrite(D4, !digitalRead(D4));
myservo2.write(90);//把舵机2设置为90度
BlinkerMIOT.powerState("on");//反馈状态
BlinkerMIOT.print();
delay(2000);//延迟2秒
myservo2.write(0);//把舵机2设置为0度
}
}
// 如果未绑定的组件被触发,则会执行其中内容
//void dataRead(const String & data)
//{
// BLINKER_LOG("Blinker readString: ", data);
// counter++;
// Number1.print(counter);
//}
void setup() {
// Serial.begin(115200);// 初始化串口
myservo1.attach(D3);//舵机信号线接口
myservo2.attach(D4);
myservo1.write(0);//把舵机初始角度设为0度
myservo2.write(0);
#if defined(BLINKER_PRINT)
BLINKER_DEBUG.stream(BLINKER_PRINT);
#endif
// 初始化有LED的IO
// pinMode(D4, OUTPUT);
// digitalWrite(D4, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);//连接wifi以及电灯科技
// Serial.print("li");
// Blinker.attachData(dataRead);
// Button1.attach(button1_callback);
BlinkerMIOT.attachPowerState(mioPowerState);
}
void loop() {
Blinker.run();
}
3.手机操作,示意图