ESP

您所在的位置:网站首页 物联离线状态怎么开机 ESP

ESP

2024-05-30 22:22| 来源: 网络整理| 查看: 265

ESP-12F WIFI远程电脑开机卡 一、功能介绍二、远程电脑开机卡硬件三、软件教程1、开发环境搭建2、安装并配置Blinker APP3、修改程序并编译上传 四、 绑定天猫精灵五、 天猫精灵组合指令设置六、视频演示

一、功能介绍

1.ESP-12F模组为主控,基于Blinker物联网平台,实现电脑远程控制 2.手机APP实现电脑远程开关机、远程重启、远程电脑状态查询 3.天猫精灵语音控制,实现电脑开关机、电脑重启,能动口绝不动手

二、远程电脑开机卡硬件

(1).远程电脑开机卡硬件在立创开源平台已开源,获取链接:远程电脑开机卡 PCB图

PCB焊接图 装机图 装机图

注: 1.右上角部分为程序下载电路 2.左下角部分为12V到3.3V稳压电路,未测试 3.PCIE接口和ESP8266模组之间为3.3V供电电路,测试稳定

三、软件教程 1、开发环境搭建 环境搭建参考博文:ESP-12S 天猫精灵音控雪花灯 2、安装并配置Blinker APP

Android APP下载:Blinker IOS APP下载:App Store中搜索“blinker”下载

在app中添加设备,获取Secret Key 1.进入App,点击右上角的“+”号,然后选择 DIY设备->Arduino 2.点击选择 WiFi接入 3.复制保存申请到的Secret Key(后续程序修改要用到)

设置界面 : 返回首页,会有一个新的设备(没有的话下滑刷新下),点击刚创建的设备,首次进入设备会弹出向导页,在向导页点击载入示例,接下来我们就开始创建图标界面,步骤如下: 1.在设备首页面,点击右上角图标,进入界面布局面板图3 2.进入界面布局后,在屏幕下方找到 按钮 组件,点击添加,可拖动新建的图标来选择放置位置,如下图: 图1 3.点击新建的图标,进入图标设置界面,把数据键名改为ButtonKey1(如下图,数据键名可任意填写,记住自己设置的数据键名,程序修改时会用到,创建多个同类型组件时数据键名不能相同,如按钮1数据键名为:ButtonKey1,按钮2数据键名可设为:ButtonKey2),然后点击保存完成设置 图2

4.按以上步骤添加两个按钮组件,APP端两个控制按钮实现以下功能: ①开关机按钮(如APP中数据键名设为ButtonKey1的按钮),单击控制电脑开关机,开机状态长按控制电脑强制关机 ②重启按钮(如APP中数据键名设为ButtonKey2的按钮),单击控制电脑重启,长按查询电脑开机状态并回传给APP

5.添加一个文本组件,用于显示电脑开关机状态,如图 1 6.然后修改文本组件的参数,如图,参数可自行填写,记住自己修改的数据键名,修改程序会用到 2

4.为了界面更美观,修改下背景,并保存界面布局,如图 图3

3、修改程序并编译上传

打开Arduino IDE,复制完整代码,在程序中找到如下变量:

char auth[] = "abcdefghijkl"; //在app中创建设备时获取到的Secret Key char ssid[] = "abcdefg"; //你的WiFi热点名称,可以手机开热点 char pswd[] = "123456789"; //你的WiFi密码 //文本组件初始化, 创建对象 #define TEXTE1 "TextKey" BlinkerText Text1(TEXTE1); //按钮1初始化, 创建对象,用于正常开关机及强制关机 #define BUTTON1 "ButtonKey1" BlinkerButton Button1(BUTTON1); //按钮2初始化, 创建对象,用于电脑重启 #define BUTTON2 "ButtonKey2" BlinkerButton Button2(BUTTON2);

1.填入申请到的Secret Key(前面创建设备时保存的)和要连接的 WiFi热点名(ssid)、密码(pswd)

2.填入APP中按钮组件的数据键名以及文本组件的数据键名,将TextKey、ButtonKey1、ButtonKey2按以下方式修改程序:

//文本组件初始化, 创建对象 #define TEXTE1 "TextKey" BlinkerText Text1(TEXTE1); //按钮1初始化, 创建对象,用于正常开关机及强制关机 #define BUTTON1 "ButtonKey1" BlinkerButton Button1(BUTTON1); //按钮2初始化, 创建对象,用于电脑重启 #define BUTTON2 "ButtonKey2" BlinkerButton Button2(BUTTON2);

完整代码如下:

#define BLINKER_WIFI #define BLINKER_ALIGENIE_OUTLET #include char auth[] = "abcdefghijkl"; char ssid[] = "12345678"; char pswd[] = "12345678"; /***************************手机APP接口***********************/ //创建文本对象 #define TEXTE1 "TextKey" BlinkerText Text1(TEXTE1); //按钮1初始化, 创建对象,用于正常开关机及强制关机 #define BUTTON1 "ButtonKey1" BlinkerButton Button1(BUTTON1); //按钮2初始化, 创建对象,用于电脑重启 #define BUTTON2 "ButtonKey2" BlinkerButton Button2(BUTTON2); //按钮1数据处理回调函数 void Button1Callback(const String & state) { BLINKER_LOG("get button state: ", state); //电脑开关机操作 if(state== "tap"){ //检测电脑是否开机 if(digitalRead(13)==LOW){ //执行电脑关机 digitalWrite(14, HIGH); delay(1000); digitalWrite(14, LOW); delay(15000); //等待关机 if(digitalRead(13)==HIGH){ Text1.print("关机成功" ); } else{ Text1.print("关机失败" ); } } else{ //执行电脑开机 digitalWrite(14, HIGH); delay(1000); digitalWrite(14, LOW); delay(15000); //等待开机 if(digitalRead(13)==LOW){ Text1.print("开机成功" ); } else{ Text1.print("开机失败" ); } } } //电脑强制关机操作 if(state== "press"){ //检测电脑是否开机 if(digitalRead(13)==LOW){ //电脑强制关机 Text1.print("强制关机中" ); digitalWrite(14, HIGH); } } if(state== "pressup"){ digitalWrite(14, LOW); delay(6000); if(digitalRead(13)==HIGH){ Text1.print("关机成功" ); } else{ Text1.print("关机失败" ); } } } //按钮2数据处理回调函数 void Button2Callback(const String & state) { BLINKER_LOG("get button state: ", state); if(state== "tap"){ //电脑重启 digitalWrite(12, HIGH); delay(1000); digitalWrite(12, LOW); Text1.print("电脑重启中" ); } if(state== "press"){ //电脑状态查询 if(digitalRead(13)==LOW){ Text1.print("电脑已开机" ); } else{ Text1.print("电脑已关机" ); } } } /**********************************************************/ /***********************天猫精灵接口************************/ //天猫精灵开关类的操作接口 void aligeniePowerState(const String & state) { BLINKER_LOG("need set power state: ", state); if (state == BLINKER_CMD_ON) { //检测电脑是否处于关机状态 if(digitalRead(13)==HIGH) { //电脑开机 digitalWrite(14, HIGH); delay(1000); digitalWrite(14, LOW); BlinkerAliGenie.powerState("on"); BlinkerAliGenie.print(); delay(15000); //等待开机 //检测是否开机成功 if(digitalRead(13)==LOW){ BlinkerAliGenie.powerState("on"); BlinkerAliGenie.print(); } else{ BlinkerAliGenie.powerState("off"); BlinkerAliGenie.print(); } } else{ BlinkerAliGenie.powerState("on"); BlinkerAliGenie.print(); } } else if (state == BLINKER_CMD_OFF) { //检测电脑是否处于开机状态 if(digitalRead(13)==LOW) { //电脑关机 digitalWrite(14, HIGH); delay(1000); digitalWrite(14, LOW); BlinkerAliGenie.powerState("off"); BlinkerAliGenie.print(); delay(15000); //等待关机 //检测是否关机成功 if(digitalRead(13)==HIGH){ BlinkerAliGenie.powerState("off"); BlinkerAliGenie.print(); } else{ BlinkerAliGenie.powerState("on"); BlinkerAliGenie.print(); } } else{ BlinkerAliGenie.powerState("off"); BlinkerAliGenie.print(); } } } //天猫精灵设备查询接口 void aligenieQuery(int32_t queryCode) { BLINKER_LOG("AliGenie Query codes: ", queryCode); switch (queryCode) { case BLINKER_CMD_QUERY_ALL_NUMBER : //所有属性查询 BLINKER_LOG("AliGenie Query All"); BlinkerAliGenie.powerState(digitalRead(13)==LOW ? "on" : "off"); BlinkerAliGenie.print(); break; case BLINKER_CMD_QUERY_POWERSTATE_NUMBER : //查询电源状态 BLINKER_LOG("AliGenie Query Power State"); BlinkerAliGenie.powerState(digitalRead(13)==LOW ? "on" : "off"); BlinkerAliGenie.print(); break; default : BlinkerAliGenie.powerState("off"); BlinkerAliGenie.print(); break; } } /***************************************************************************/ //检测收到未解析数据时的回调函数 void dataRead(const String & data) { BLINKER_LOG("Blinker readString: ", data); Blinker.vibrate(); uint32_t BlinkerTime = millis(); Blinker.print("millis", BlinkerTime); } void setup() { //初始化串口服务 Serial.begin(115200); BLINKER_DEBUG.stream(Serial); //设置引脚模式并初始化引脚 pinMode(14, OUTPUT); //开关机控制引脚 digitalWrite(14, LOW); pinMode(12, OUTPUT); //重启控制引脚 digitalWrite(12, LOW); pinMode(13, INPUT); //电脑状态检测引脚 //Binker设备配置 Blinker.begin(auth,ssid,pswd); //注册Blinker APP命令的回调函数 Blinker.attachData(dataRead); Button1.attach(Button1Callback); //按钮1回调函数注册 Button2.attach(Button2Callback); //按钮2回调函数注册 //注册天猫精灵控制命令的回调函数 BlinkerAliGenie.attachQuery(aligenieQuery); //注册设备查询函数 BlinkerAliGenie.attachPowerState(aligeniePowerState); //注册电源开关函数 } void loop() { Blinker.run(); }

一切就绪,开始上传代码

1.点击左上角 工具->开发板:”Arduino…” 在列表中找到 NodeMCU 1.0(…) 并点击选择

2.用USB连接电脑,点击左上角 工具->端口 ,选择正确的端口号

3.编译并上传程序到ESP8266开发板,如图 下载程序 当出现如下图所示的提示时,复位ESP8266,等待上传完成 图7

上传成功后,打开串口调试器,手机开启热点(设置WIFI名 和 WIFI密码为12345678,只有跟程序中设置一样,ESP8266才能连接该WIFI),复位ESP8266,等待开发板连接手机热点,当看到串口调试器打印出“MQTT Connected!”,说明设备已经成功连接到MQTT服务器

打开手机APP,在APP中刷新,会看到原先创建设备显示在线,若显示未上线可以刷新一下

四、 绑定天猫精灵 打开天猫精灵 App。点击右下角“我的”,点击“添加智能设备”在页面上方搜索栏,搜索blinker,并点击要添加的设备类型点击绑定账号,使用blinker账户登录,完成绑定

绑定成功后,在blinker App中配网成功的设备就会出现在您的智能家居设备列表中,回到设备列表,点击新添加的设备,进入配置界面,在配置界面可以进行一些简单设置,比如:设置地点为卧室。程序中,我们定义的控制设备类型为插座,那么我们就可以说“天猫精灵,打开卧式的插座”,天猫精灵就可以控制设备了。

1.天猫精灵支持的语音指令

①灯 打开/关闭{门口}的{灯} 把{卧室}的{灯}调为{红色} 把{卧室}的{灯}的{亮度调高一点} 把{卧室}的{灯}调为{影院模式} 把{门口}的{灯}的{色温}调到{1400} 把{卧室}的{灯}的{色温调暖一点} 查询{卧室}的{灯}的状态 ②插座 打开/关闭{厨房}的{插座} {客厅}的{插座}是否打开 ③传感器 查询{客厅}的{传感器}的{温度}/{湿度}/{PM2.5}

五、 天猫精灵组合指令设置

在前面的程序中,我们定义的控制设备类型为插座

#define BLINKER_ALIGENIE_OUTLET //控制设备类型为插座

也就是说,当我们用天猫精灵控制电脑开机时,需要说“天猫精灵,打开卧式的插座”,是不是总感觉怪怪的,那如何将插座改为电脑,说“天猫精灵,打开电脑”,电脑就开机呢?天猫精灵APP的组合指令功能就能解决,下面就来配置吧:

1.打开天猫精灵APP,在下方找到首页,点击更多 APP 2.在更多中找到组合指令,点击进入,再点击右上角的新建,进入组合指令创建界面 APP 3.在指令问法处添加指令“打开电脑”,在执行指令处添加指令“打开卧室插座”,然后保存。这样我们就可以对天猫精灵说“天猫精灵,打开电脑”来控制电脑开机了。

六、视频演示

ESP-12F远程电脑开机卡

ESP-12F电脑远程开机卡

END



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3