admin管理员组

文章数量:1637858

严正声明:此项目为他人开源项目,此文章公开目的为分享个人制作项目经验。不可售卖,转发获取利益

有问题请添加QQ3089348817,无偿解决问题;也欢迎大佬指点。

建议电脑查看,比例尺寸不会调,吃我图片。。。。。。。。

Esp8266串口WiFi模块

懒人神器,装B利剑。

一:材料清单

材料费大概20大洋左右,多说无益,开始制作!!!

  1. Esp8266串口WiFi模块(12.4块大洋左右,配套线可以用于烧录,所以能买就买)。【淘宝】https://m.tb/h.5A3QgpUV7q4sYeK?tk=MoCpWKAw2no MF6563 「ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340」
  2. sg90舵机(用各种优惠卷大概180°为2.77一个。两种方案:180°:适用于小型开关,一个舵机就可开关灯。90°:适用于较大开关,两个舵机分别负责开灯,关灯)。【淘宝】https://m.tb/h.5zIBFUVAphPL7uZ?tk=wSC8WKAEXl4 MF3543 「SG90 9G经典舵机 180/360度 数字舵机云台遥控飞机马达固定翼航模」
  3. 杜邦线若根(有公头和母头区分,比较便宜,自行挑选就行)。
  4. 电源(充电宝或其它电源,我建议电宝)。

二:官网下载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同样原理,一个引脚可控制多个舵机。

Esp8266sg90舵机
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);
}

本文标签: 也可小爱宿舍同学智能