admin管理员组文章数量:1637861
严正声明:此项目为他人开源项目,此文章公开目的为分享个人制作项目经验。不可售卖,转发获取利益
有问题请添加QQ3089348817,无偿解决问题;也欢迎大佬指点。
建议电脑查看,比例尺寸不会调,吃我图片。。。。。。。。
Esp8266串口WiFi模块
懒人神器,装B利剑。
一:材料清单
材料费大概20大洋左右,多说无益,开始制作!!!
- Esp8266串口WiFi模块(12.4块大洋左右,配套线可以用于烧录,所以能买就买)。【淘宝】https://m.tb/h.5A3QgpUV7q4sYeK?tk=MoCpWKAw2no MF6563 「ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340」
- sg90舵机(用各种优惠卷大概180°为2.77一个。两种方案:180°:适用于小型开关,一个舵机就可开关灯。90°:适用于较大开关,两个舵机分别负责开灯,关灯)。【淘宝】https://m.tb/h.5zIBFUVAphPL7uZ?tk=wSC8WKAEXl4 MF3543 「SG90 9G经典舵机 180/360度 数字舵机云台遥控飞机马达固定翼航模」
- 杜邦线若根(有公头和母头区分,比较便宜,自行挑选就行)。
- 电源(充电宝或其它电源,我建议电宝)。
二:官网下载Arduino IDE
进入Arduino官网→软件, Arduino官网地址:Arduino - Home
选择第一个Win10及更新版本,64位。傻瓜式下载,一直点同意和下一步就行。
三:进入软件并修改配置
进入首选项(Preferences )更改语言为中文(简体)
→找到附加开发板管理器地址(Additional Board Manager URLs),并在其后添加如下信息:
http://arduino.esp8266/stable/package_esp8266com_index.json
→再点击确定;
。
点击工具 - 开发板 - 开发板管理器,进入开发板管理器界面下载Esp8266插件:
将开发板与电脑连接,把线插到电脑上,忘了就先开把王者玩玩
选择开发板类型:点击工具-开发板-esp8266-NodeMCU 1.0(ESP-12E Module)和串口(如用CH340烧录代码需要下载驱动)。
四:手机端下载电灯科技
通过百度网盘分享的文件:iot.dian…
链接:https://pan.baidu/s/1j50yXZoZpvRJk6N8ckdezg?pwd=ygbk
提取码:ygbk
打开电灯科技-右上角添加-选择独立设备-网络接入-复制Secret Key(复制后需粘贴至Arduino代码中)。
五:Esp8266烧录代码
代码如下(禁止玩信息差进行买卖,开源项目为B站作者“枫林晚Vx”所有。)
注意:需更改三处代码:
char auth[] = "填入刚刚复制的key";//电灯科技的key
char ssid[] = "手机热点名称";//wifi名称
char pswd[] = "手机热点密码";//wifi密码
注意:手机热点名称和密码切勿花里胡哨,建议数字加字母。
代码运行典型错误解决方法:Blinker固件未安装,下面是固件:
通过百度网盘分享的文件:blinker-…
链接:https://pan.baidu/s/1huK2MPgQJn7rqQv31bZ_bw?pwd=ygbk
提取码:ygbk
导入方法在CSDN一搜就有“给ardunio ide导入blinker库”。
#define BLINKER_MIOT_LIGHT
#define BLINKER_WIFI
#include <Blinker.h>
#include<Servo.h>
char auth[] = "";//电灯科技的key
char ssid[] = "";//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();
}
六:sg90舵机
黄色线为PWM信号线,中间红色线为电源线,棕色或黑色线为接地线。
旋转角度设置,先看代码
myservo1.write(90);//把舵机1初始角度设置为90度
BlinkerMIOT.powerState("off");//反馈状态
BlinkerMIOT.print();
delay(2000);//延迟2秒
myservo1.write(45);//把舵机1设置为45度,打开第一个灯
delay(2000);//延迟2秒
myservo1.write(135);//把舵机1设置为135度,打开第二个灯
delay(2000);//延迟2秒
myservo1.write(90);//把舵机1设置为90度,这一步是为了返回初始状态,防止关灯时开关翘起。
sg90舵机
这里舵机角度解释可以自行搜索,尽量设为0°,45°,90°,135°,180°。其他角度未尝试,舵机坏了与我无关。
七:开发板与舵机连接
开发板5.5V只有一处,连接多个舵机需要将两根或多根线接到一起(用打火机烧就行)。
同理可得,D3/D4同样原理,一个引脚可控制多个舵机。
Esp8266 | sg90舵机 |
---|---|
D4(开灯) | 黄线 |
D3(关灯) | 黄线 |
G | 红线 |
VU(5.5V) | 棕或黑线 |
八:下载米家和小爱同学(安装不适配手机型号可下载小爱同学lite)
通过百度网盘分享的文件:小爱同学.apk
链接:https://pan.baidu/s/1KuVoQjZ7y4nfT-v8zNWGJg?pwd=ygbk
提取码:ygbk
米家添加其他平台设备(点灯科技)
米家点开我的→下滑选项添加其他平台→添加搜点灯科技→同步设备(添加多个设备时教程一样,只需要下载米家和小爱同学。)
九:小爱同学添加“我的训练 ”
进入软件→点击右上角→我的训练→添加训练
填入你想唤醒开灯操作说的话,再填入小爱同学的回应语音,最后点击设备控制加入“打开灯”操作。
十:多个手机设备通过共享实现多对一控制
打开点灯→左上角→设备共享→输入共享的手机号(注册点灯科技账号)→其他设备同意共享
十一:完结
至此完成,对于这个开源项目还有多个方案可待开发。
如直接用点灯科技添加按钮控制舵机;
或用其他对话助手进行操纵。
最后,欢迎各方大佬进行指导。
小爱同学控制开关灯
最后,附上我自己修改的代码:
#define BLINKER_MIOT_LIGHT
#define BLINKER_WIFI
#include <Blinker.h>
#include<Servo.h>
char auth[] = "自己创建的设备key";//电灯科技的key
char ssid[] = "热点名称";//wifi名称
char pswd[] = "热点密码";//wifi密码
Servo myservo1,myservo2;//定义舵机对象
void mioPowerState(const String & state){
BLINKER_LOG("ee",state);
if(state==BLINKER_CMD_OFF){//如果语音接受到的是关灯就执行的动作
myservo1.write(90);//把舵机1设置为90度
BlinkerMIOT.powerState("off");//反馈状态
BlinkerMIOT.print();
delay(2000);//延迟2秒
myservo1.write(45);//把舵机1设置为45度
delay(2000);//延迟2秒
myservo1.write(135);//把舵机1设置为135度
delay(2000);//延迟2秒
myservo1.write(90);//把舵机1设置为90度,设置这些是因为室内有两个灯需要控制,依次旋转进行熄灭,下面同理。
}
else if(state==BLINKER_CMD_ON){//如果语音接受到的是开灯就执行的动作
myservo2.write(90);//把舵机2设置为90度
BlinkerMIOT.powerState("on");//反馈状态
BlinkerMIOT.print();
delay(2000);//延迟2秒
myservo2.write(45);//把舵机2设置为0度
delay(2000);//延迟2秒
myservo2.write(135);//把舵机2设置为0度
delay(2000);//延迟2秒
myservo2.write(90);//把舵机2设置为0度
}
}
void setup() {
myservo1.attach(D3);//舵机信号线接口(开灯)
myservo2.attach(D1);//关灯
myservo1.write(90);//把舵机初始角度设为90度
myservo2.write(90);
#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以及电灯科技
BlinkerMIOT.attachPowerState(mioPowerState);
}
void loop() {
Blinker.run();
pinMode(D4, OUTPUT);//这两行是为了将8266灯熄灭实现低功耗,实测费电很少
digitalWrite(D4, HIGH);
}
版权声明:本文标题:利用小爱同学与点灯科技,智能掌控宿舍照明:小白也可制作,米家同步设备可实现多部手机进行控制。 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729260196a1192830.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论