用esp8266和继电器实现小爱同学开关灯
房间的灯离床太远了,于是想到用esp8266配合点灯科技app来实现用小爱同学开关灯。于是就用小led灯做了测试。
这些是我们需要的材料
在淘宝上都能找到
1.esp8266-01模块;
2. 配合使用的继电器
3. esp8266的读写器
5. 5v供电(在淘宝可以买220v转5v的电源模块)这里用uno板代替
硬件部分的搭建
1.关于继电器的接线
VCC、GND分别接5v直流的正负极。左边nc口为常开端,火线从中间com口进,常开端和com口为默认导通状态,右边为no常闭端,只有当有指令时继电器就会和常闭导通与常开端断开。一般我们接com进火线no出火线。当然如果想实现与机械开关双控可以配合双联开关接三个口。
软件部分
下面是关于点灯科技的软件配置
1.我们需要把点灯科技的开发库:https://codeload.github.com/blinker-iot/blinker-library/zip/master
解压放到 我的电脑>文档>Arduino>libraries 文件夹中
2.在arduino官方论坛上下载esp8266开发板信息安装到arduino(关于详细的环境搭建:可以到点灯科技官网查看
3.下载点灯科技app并添加设备
下面上代码
#define BLINKER_MIOT_LIGHT
#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "888888888"; //设备key,打开点灯app,添加设备,选择arduino设备,选择wifi接入,这里就会获得一个密钥,把密钥填写在这里。
char ssid[] = "**********"; //路由器wifi ssid
char pswd[] = "88888888"; //路由器wifi 密码
int GPIO=0;//定义GPIO口用于控制继电器
#define BUTTON_1 "ButtonKey"
BlinkerButton Button1("key");//这里需要根据自己在BLINKER里面设置的名字进行更改
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
digitalWrite(GPIO,!digitalRead(GPIO));
Blinker.vibrate();
}
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ",state);
if (state == BLINKER_CMD_OFF) {//如果语音接收到是关闭灯就设置GPIO口为高电平
digitalWrite(GPIO, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_ON) {
digitalWrite(GPIO, LOW);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
}
void setup() {
Serial.begin(115200);
pinMode(GPIO,OUTPUT);
digitalWrite(GPIO,HIGH);//初始化,由于继电器是低电平触发。所以刚开始设为高电平
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
BlinkerMIOT.attachPowerState(miotPowerState);//这段代码一定要加,不加小爱同学控制不了,务必在回调函数中反馈该控制状态
}
void loop()
{
Blinker.run();
}
下面插上读写器上传代码
上传好之后安装在继电器上插上电
就会显示设备在线了。
配置米家
在米家app里找到其他平台设备,然后找到点灯科技输入账号密码,就可以绑定啦。然后就可用小爱控制开关灯了。
用点灯科技里的按键控制
点进设备里面添加按键,注意数据键名和代码里面一致就可以,开关类型为开关按键。
来源:oschina
链接:https://my.oschina.net/u/4265014/blog/4382600