利用小爱同学与点灯科技,制作智能关灯神器:小白也可制作,米家同步设备可实现多部手机进行控制。
文章目录
-
- 利用小爱同学与点灯科技,制作智能关灯神器:小白也可制作,米家同步设备可实现多部手机进行控制。
-
- 1.材料清单
- 2.官网下载Arduino IDE
- 3.将 Esp8266串口WiFi模块 和 sg90舵机 安装好
- 如果买和我一样就按照我拍的图片连接线就好,如果不一样 ,需要问商家,舵机线条颜色代表啥, 和问 Esp8266商家 开发板的接线 代表含义
- 4.把代码上传到 esp8266 开发板 这里我提供两套代码,
- 5.代码上传到 esp8266 开发板 代码在目录4
- 6. 小爱同学 控制 开灯 ,关灯 需要 下载 小爱同学 和 米家
- 7. 确保 录入语音控制 ,然后就可以用小爱同学控制
- 8. 多个手机控制 也就是用多个 小爱同学绑定 同一个 点灯app 账号
- 9. 我在墙上 这样粘住的 舵机下面垫了 纸板,胶带 粘在墙上。大家可以用 纳米胶好用
1.材料清单
材料费大概15大洋左右,多说无益,开始制作!!!
1.1Esp8266串口WiFi模块
Esp8266串口WiFi模块(12.4块大洋左右,配套线可以用于烧录,所以能买就买)。
【淘宝】https://m.tb.cn/h.gjgmND9Pv9ilE6m?tk=PYdI324I9na CZ3456 「ESP8266串口WIFI模块 CP2102/CH340 NodeMCU Lua V3物联网开发板」
1.2 sg90舵机 我买的一个 180度的(控制开关)
【淘宝】 https://m.tb.cn/h.gQaqqV35piYBw1D?tk=4zz3324ra1u HU0025 「SG90 9g舵机MG996R mg90s MG995模块马达遥控飞机航模9克360度180」
1.3电源(充电宝或其它电源,我建议电宝)。
2.官网下载Arduino IDE
2.1 网址
https://arduino.me/home
2.2 点击这里可以下载软件
2.3 注册后 点击浏览器端下载
2.4 找到下载好的安装包 双击运行
2.5 切换为中文模式
2.6 回到之前的网站 点击离线安装包
https://arduino.me/download
2.7 复制这个网址
https://arduino.me/packages/esp8266.json
2.8 粘贴到这里
2.9 点击历史版本下载
2.10 下载这个
2.11 将下载好的安装包解压
2.12 重要步骤一定要看
用户名这这里如果有中文 安装3.0.2 英文 安装 3.0.1 版本 双击安装
3.将 Esp8266串口WiFi模块 和 sg90舵机 安装好
如果买和我一样就按照我拍的图片连接线就好,如果不一样 ,需要问商家,舵机线条颜色代表啥, 和问 Esp8266商家 开发板的接线 代表含义
3.1 按照第一个图片安装就好
3.1 (可以忽略) 按照第一个图片安装就好 红线条 接5v VU 棕 GND 黄色 D4
3.2 线接好后, 把usb插到电脑上 ,usb线条 要有数据传输功能 ,电脑端的插头也要支持 传输数据多换几个地方插入
4.把代码上传到 esp8266 开发板 这里我提供两套代码,
注意代码需要微调的内容 舵机旋转度数,
const int SERVO_ANGLE_OFF = 10; //关灯舵机从 90 度旋转到 10 度,微调为适合自己的
const int SERVO_ANGLE_ON = 170;//开灯舵机从 90 度旋转到 170 度,微调为适合自己的
4.1 这个代码 适合家里的灯, 开 关 开 关 开 ,是最亮的开关的
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
#include <Blinker.h>
#include <Servo.h>
Servo myservo;//定义舵机
char auth[] = ""; //点灯Key 下面我讲如何获取 目录 4.4
char ssid[] = ""; //wifi名称 需要选这种 名字结尾不带5G 的网 见目录 4.3
char pswd[] = ""; //wifi密码
// 新建组件对象
BlinkerButton Button1("btn-on");//开灯或关灯
BlinkerButton Button2("btn-off");//关灯
BlinkerButton Button3("btn-bright");//降低灯亮度
BlinkerButton Button4("btn-banZi");//开发板灯亮度
BlinkerButton Button5("btn-go");//只开灯
BlinkerNumber Number1("num-abc");
bool isLightOn = false; // 初始状态设为关
BlinkerButton Button6("btn-onOne");//开灯
// 舵机动作角度定义
const int SERVO_ANGLE_OFF = 10;
const int SERVO_ANGLE_ON = 170;
const int SERVO_ANGLE_RESET = 90;
int counter = 0;
// 舵机动作函数 修改舵机度数
void servoTurn(int angle) {
myservo.write(angle);
delay(1000);
}
// 更新灯的状态
void updateLightStatus(bool newStatus) {
isLightOn = newStatus;
if (newStatus) {
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
isLightOn = true;
//开灯
servoTurn(SERVO_ANGLE_ON);
servoTurn(SERVO_ANGLE_OFF);
servoTurn(SERVO_ANGLE_ON);
servoTurn(SERVO_ANGLE_OFF);
servoTurn(SERVO_ANGLE_ON);
servoTurn(SERVO_ANGLE_RESET);
} else {
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
isLightOn = false;
//关灯
servoTurn(SERVO_ANGLE_OFF);
servoTurn(SERVO_ANGLE_RESET);
}
updateEspLightStatus();//关闭esp8266灯
}
// 更新esp8266 灯的状态
void updateEspLightStatus() {
digitalWrite(LED_BUILTIN, HIGH); // 如果状态是 "on",设置 LED 为高电平(亮) 搜索后发现有的是相反的
}
//小爱同学判断开灯关灯
void miotPowerState(const String &state) {
BLINKER_LOG("电源状态: ", state);
if (state == BLINKER_CMD_ON) {
<