前言
每次下班回到家就已经很累了,到门口还要到处翻找钥匙,然后开门,是不是觉得很烦,那我们有没有不用通过钥匙开门且成本低的方案了?下面我会教大家基于ESP8266+点灯科技+小爱同学来控制开门的方法
一、准备工作
1、硬件材料
①、ESP8266开发板(均价13R)
②、SG90 MG90S 9g舵机(均价12R)
③、电源模块 5V (均价2R)
④、杜邦线(母头和公对母)、DC 5.5x2.1 DC005转接头(公头)、电池盒-5号4节 (均价8R)
⑤、紫米电池一盒*10 (均价13R)
⑥、小爱音响 (均价不等,只要支持小爱同学即可,如果手机是小米的,也可以不用购买小爱音响)
- 以上东西都可以通过淘宝购买
2、APP软件安装
①.注册小米账号,并登录米家
- 米家APP下载,下载完成后,注册小米账号,并登录
②注册点灯科技APP,并获取key
- 点灯科技APP下载,下载地址:link,选择适合自己的平台版本
- 安装完成后,注册APP,注册完成后,输入账号密码登录,进入首页
- 点击右上角“+”,选择点灯-独立设备
- 选择网络接入,记住key,后面会用到
3、开发arduino环境搭建
①、arduino安装
下载链接: link
win10电脑版本直接下载:链接: link
- 解压,并运行
②、环境部署
1)添加esp8266开发板到arduino IDE里
- 点击 文件 - 首选项
- 添加开发板,复制地址到红框中,然后点击 好:http://arduino.esp8266.com/stable/package_esp8266com_index.json
- 点击工具 - 开发板 - 开发板管理器,然后点击安装(因为服务器在国外下载可能会出现异常,尽量多试几次,或者fq下载)
- 安装完成后,选择工具 - 开发板… - ESP8266… - Generic ESP8266 Module
2)添加点灯科技的库
- 点灯科技库下载地址:link
- 导入库
二、上传代码
1、连接开发板
-
开发板通过USB连接电脑,点击工具 - 端口,选择开发板端口
注:有时候开发板连接电脑后,端口可能会没有或者时有时无,这个时候我们就需要先按住flash别松手,然后接入USB,再按下rst就可以了(重新操作后,需要重新打开工具选择端口才可以,页面不会自动刷新)
2、上传代码
- 复制代码到编辑器中,以下代码从网上找的,并进行了一些修改,各位可自行优化。
#include <Servo.h> #define BLINKER_WIFI //WIFI
#define BLINKER_MIOT_OUTLET //米家插座类型#include <Blinker.h>char auth[] = ""; //点灯科技设备KEY
char ssid[] = ""; //WIFI名称-只支持2.4G
char pswd[] = ""; //WIFI密码// 新建组件对象
BlinkerButton Button1("btn-max"); //位置1 按钮 数据键名
Servo myServo; // 定义Servo对象来控制int pos = 0; // 角度存储变量//小爱控制
void miotPowerState(const String & state)
{BLINKER_LOG("need set power state: ", state);//对小爱同学说“开门”if (state == BLINKER_CMD_ON) {digitalWrite(LED_BUILTIN, HIGH);BlinkerMIOT.powerState("on");BlinkerMIOT.print();for (pos = 0; pos <= 150; pos ++) { // 0°到150°myServo.write(pos); // 舵机角度写入delay(15); // 等待转动到指定角度} delay(500);//延时0.5sfor (pos = 150; pos >= 0; pos --) { // 从150°到0°myServo.write(pos); // 舵机角度写入delay(15); // 等待转动到指定角度}delay(500);//延时0.5s }//对小爱同学说“关门”else if (state == BLINKER_CMD_OFF) {digitalWrite(LED_BUILTIN, LOW);BlinkerMIOT.powerState("off");BlinkerMIOT.print();for (pos = 0; pos <= 180; pos ++) { // 0°到180°myServo.write(pos); // 舵机角度写入delay(15); // 等待转动到指定角度} delay(1000);//延时1sfor (pos = 180; pos >= 0; pos --) { // 从180°到0°myServo.write(pos); // 舵机角度写入delay(15); // 等待转动到指定角度}delay(1000);//延时1s }
}//位置1 按钮
void button1_callback(const String & state) {for (pos = 0; pos <= 150; pos ++) { // 0°到150°myServo.write(pos); // 舵机角度写入delay(15); // 等待转动到指定角度} delay(500);//延时0.5sfor (pos = 150; pos >= 0; pos --) { // 从150°到0°myServo.write(pos); // 舵机角度写入delay(15); // 等待转动到指定角度}delay(500);//延时0.5s
}void setup() {// 初始化串口Serial.begin(115200); BLINKER_DEBUG.stream(Serial);Blinker.begin(auth, ssid, pswd);Button1.attach(button1_callback);//绑定小爱电源控制BlinkerMIOT.attachPowerState(miotPowerState);//初始化舵机myServo.write(0); //首次上电,舵机角度恢复到0°myServo.attach(14); //控制线-D5
}void loop() { Blinker.run();
}
- 点击上传,上传成功后,会有提示
三、线路部署
- 按如下部署线路
四、绑定
1、点灯app页面设置
①、打开点灯科技APP,点击首页新的设备,跳过配置向导 - 点击右上角编辑 - 添加按钮
②、点击按钮,编辑按钮信息,红框中是上面代码的函数名,信息编写好以后,点击右上角“确定”
③、按钮添加成功后,点击锁定
④、修改设备名称,点击“…”编辑,名称更改为“门”
⑤、设备在线后,我们点击“开门”按钮,查看舵机是否正常运行。
2、绑定小爱同学
①、打开米家APP - 我的 - 其他平台设备 - 点击添加,找到点灯科技,绑定账号,这样我们就绑定成功了,下面可以喊小爱同学“开门”,就可以看见舵机执行了。