前言

上一个帖子写的是自制网络温湿度计,里面对需要用到的app和编译软件写的都很清楚,这个帖子呢就写一下小爱同学网络控制电脑开机的小项目,首先要声明一点,一定要弄明白ardunio编程、esp8266模块(esp01/nodemcu),这样的话看这篇帖子就很容易啦,如果想继续跟着做的话,还是用自制网络温湿度计的例程上手比较快。

硬件材料:

(1)esp8266烧录器一个,用来给wifi模块烧写程序。
(2)esp8266烧录器配套的wifi模块一个(esp01或者esp01s都可)。
注:esp01是两个led灯,esp01s是一个led信号灯,都是wifi模块,但是一定要和烧录器配套。建议两个各买一个,备用和实验。
(3)物联网wifi继电器一个,我这里用的是这种有转接板的可以接esp01的这种,当然也有没有转接板的,肯定就不能接esp01了,没有转接板的可以接到nodemcu开发板上(也是esp8266的一个模块,不过引脚比较多所以连接的设备也就比较多),如需购买看下图!
注:仔细看下图的配件,wifi继电器接线是需要用一字小螺丝刀(2.5mm)拧的,手里没有的在网上记得买昂。
(4)杜邦线4根。


配件图片:

          
                        图3-1 esp8266烧录器                       图3-2wifii模块 esp01s                               图3-3 wifi继电器


下面是我用的电子零件淘宝链接,个人觉得这家店铺的性价比超级高!推荐一下,复制淘口令打开手机淘宝即可下单,如有过期请在评论区留言! esp8266烧录器:(¥D1XY1EC9mdh¥-GOOD-)
wifi模块esp01s(推荐买安信可品牌,通信比较好):(¥LB7C1ECRamN¥-GOOD-)
与esp01s配套的继电器:¥BKgK1ECreBy¥-GOOD-)


软件准备

如果有安装可省略此步,也可参考自制网络温湿度计或者点灯科技官网。
1.电脑端安装Arduino IDE,esp8266扩展,安装blinker库。
2.手机安装点灯科技app、米家、小爱同学。

工作原理

首先看一下wifi继电器的构造:(此继电器是低电平触发)


常开端:继电器吸合前悬空,吸合后和公共端短接;
公共端:继电器公用接口;
常闭端:继电器吸合前短接,吸合后和公共端悬空;
注:具体要根据功能需求确定使用常开端还是常闭端哈。


电脑开机原理: 机箱开关键连接主板PW两个引脚引脚,当 PW两个引脚先断开再短接,从而使得电源给主板和其他设备供电从而开机。关机也是如此。
注:这里的继电器是连接的pw引脚,模拟电脑开关键的动作,而不是直接断电源。
继电器控制电脑开关机原理:wifi继电器的常闭端和公共端连接pw引脚,收到远程信号时,继电器先悬空后吸合,从而起到远程控制开关机的作用。
供电原理:电脑在关机插电源的时候会有5v供电的,称为待命电压,具体哪根线供电看下面具体流程。

具体流程:

(1)线路连接。
电脑关机状态下的5v供电线:
将电源线在主板下拔下来,将有卡子的一面儿面对着自己,从右往左数第九根紫色线就是5v供电线(第九引脚),可以连接wifi继电器的vcc,然后随便找一根黑色线连接GND。
具体接法:将VCC线头去掉塑料头压扁后插入到5V供电线的卡子中(或者直接用公对母杜邦线,将公直接拧在继电器端),GND线同。wifi模块继电器的长闭端和公共端相连(没有一一对应要求)。

wifi继电器 接口
vcc 电源线有卡子的一面对着自己,从右往左数第九根紫色线口
GND 电源线随便一黑色线口
长闭端NO 电脑主板PW任意一引脚
公共端COM 电脑主板PW另外一引脚
注:检验是否供电方法,将wifi模块插到继电器esp8266转接板上,如果esp01s的led灯亮,说明已经供电。

(2)将esp01s插到烧录器上,打开ardunio IDE,开发板选择esp8266Module,端口选择对应端口.
(3)复制手机点灯科技app中arduino设备的key,粘贴到程序中。
(4)程序思路:

  • 电脑按下开机键,PW引脚瞬时短接,不是一直短接,短接后会断开,关机也是如此。
  • 模仿开机键的功能在程序中实现可以通过触发继电器继电器实现。
  • 如果要控制开机,先要给继电器一个低电平触发继电器悬空,然后再给一个高电平吸合.,使用点动效果实现模拟开关机的功能。

(5)程序代码,代码解释部分写到注释里了,具体请看注释。

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET   //小爱同学配置电源类设备#include <Blinker.h>char auth[] = "********";//你的设备key
char ssid[] = "********";//你的wifi名字
char pswd[] = "********";//你的wifi密码BlinkerButton Button1("btn-abc"); //定义按钮键名
bool oState = false; //全局变量,电脑状态设为false 关机状态
int counter = 0; //计数器//自定义电源类操作的回调函数
void miotPowerState(const String & state)
{    //blinkwer打印电脑状态BLINKER_LOG("need set power state: ", state);if (state == BLINKER_CMD_ON)//小爱同学控制开机命令 {  /*先给io设备一个低电平触发继电器吸合,使得开关由接通变为断开,然后再给高电平,使得开关由断开变为接通状态,点动控制开机。*/digitalWrite(0, LOW);delay(200);digitalWrite(0, HIGH);BlinkerMIOT.powerState("on");BlinkerMIOT.print();oState = true;}else if (state == BLINKER_CMD_OFF)//小爱同学控制关机命令{ /*先给io设备一个低电平触发继电器吸合,使得开关由接通变为断开,然后再给高电平,使得开关由断开变为接通状态,点动控制关机。*/digitalWrite(0,LOW);delay(200);digitalWrite(0, HIGH);BlinkerMIOT.powerState("off");//执行关机命令BlinkerMIOT.print();oState = false;}
}void miotQuery(int32_t queryCode)//自定义设备查询函数
{BLINKER_LOG("MIOT Query codes: ", queryCode);switch (queryCode){case BLINKER_CMD_QUERY_ALL_NUMBER ://小爱查询全部内容BLINKER_LOG("MIOT Query All");//小爱查询//查询电脑开关机,如果ostate为真,状态为“on”开机,如果为假,状态为“off”关机。BlinkerMIOT.powerState(oState ? "on" : "off");BlinkerMIOT.print();break;//终止循环case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :BLINKER_LOG("MIOT Query Power State");//小爱同学查询电脑状态BlinkerMIOT.powerState(oState ? "on" : "off");BlinkerMIOT.print();break;default :BlinkerMIOT.powerState(oState ? "on" : "off");BlinkerMIOT.print();break;}
}void dataRead(const String & data)      // 如果未绑定的组件被触发,则会执行其中内容
{BLINKER_LOG("Blinker readString: ", data);//读取字符串,打印Blinker.vibrate();//起刷新作用uint32_t BlinkerTime = millis();//获取到系统运行的时间Blinker.print("millis", BlinkerTime);//打印出来
}void button1_callback(const String & state)//点灯app内控制按键触发
{BLINKER_LOG("get button state: ", state);//app按键一旦触发,就会给设备高电平开始工作/*先给io设备一个低电平触发继电器吸合,使得开关由接通变为断开,然后再给高电平,使得开关由断开变为接通状态,点动控制开机。*/digitalWrite(0,LOW);delay(200);digitalWrite(0, HIGH);
}void setup()//主程序
{   //初始化串口Serial.begin(115200);BLINKER_DEBUG.stream(Serial);pinMode(0, OUTPUT);//定义io口为输出/*定义io默认为高电平,因为是连接的常闭端,低电平触发继电器。而我们在默认情况下是要保证开关处于接通状态,所以要给io口设置默认为高电平*/digitalWrite(0, HIGH);//初始化blinkerBlinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);Button1.attach(button1_callback);//小爱同学反馈信息,调用设备查询函数,查询设备开关机状态BlinkerMIOT.attachQuery(miotQuery);  //小爱同学反馈信息,小爱控制开关机操作BlinkerMIOT.attachPowerState(miotPowerState);
}void loop()//主循环,多次运行blinker(即以上程序)
{Blinker.run();
}

(6)编译,无错后上传程序。
  (6) 将wifi模块在烧录器上拔下来,然后插到wifi继电器上即可。
(7)在手机点灯app上添加按钮,数据键名要和代码一致。
(8)给小米同学添加训练,实现小爱同学语音控制开关机。


可改进之处

(1)这里使用的小爱同学,同样也是可以修改代码使用天猫精灵和百度小度,可参考点灯科技官网。
(2)这里我是直接把电脑开关键的线从pw引脚上直接拔下来,使用wifi继电器的话这个开关键就没有用了。
解决方法:采用并联的方式,

  • 直接将开关键的线破开口并入wifi继电器长闭端和公共端,操作不好会弄坏电脑连接开机键的线。
  • 用母对公杜邦线连接PW引脚,在这根杜邦线上破口并联,这样即使有损害也不影响电脑开机键自带的线。

总结

经过两次编写blinker的程序以及对程序的分析来看,也是因为功能的需求,程序实则是由两大块构成,一是设备数据和blinker客户端的交互,二是设备数据和小爱同学的交互,两个功能的代码其实并不影响,如果只想要Blinker-app显示的话,完全可以把小爱同学部分的代码删除,当然如果只想要语音控制的话必须还要包括blinker的设备key,小爱同学语音控制也是要借助点灯科技编写好的小爱的api接口,小爱同学添加训练的时候也要对应手机blinker的设备,当然,只要语音不要blinker这种操作很没有必要。
欢迎一起讨论一起进步,有问题可在下方评论,一起进步!

物联那点事儿之小爱同学网络控制电脑开机(arduino+点灯科技篇)相关推荐

  1. 使用小爱同学语音控制电脑关机 - Winform C#

    使用小爱同学语音控制电脑变关机 前言 实现原理 准备 注册巴法云账号 接入巴法云 接入米家 编写程序 连接TCP 接收信息并运行关机指令 发送指令订阅主题 添加心跳机制 后台运行 阻止默认关闭窗口事件 ...

  2. 物联那点事儿之DS18B20自制网络温度计(arduino+点灯科技篇)

    前言 很久没有更新了,该好好反思了,废话不多说,fighting! 代码开源,喜欢的给个star吧! git链接!!! 物联那点事儿专栏往期回顾: arduino+点灯科技+温湿度DHT11+esp0 ...

  3. 小米网关控制空调伴侣_小爱同学怎么控制灯?

    说说我们神奇小爱同学吧,小爱同学是小米旗下的一款智能AI音箱,会根据您的指令来操作电器设备,比如说开关灯,那么小爱同学怎么控制灯?如果家里的是传统的灯泡,不是智能灯连接还能控制吗?今天蜜罐蚁装修网小编 ...

  4. 电脑入米家,让小爱同学随意操控电脑开关机(需主机或软路由)

    电脑入米家,让小爱同学随意操控电脑开关机 前言 一.效果展示 二.环境准备 三.巴法平台获取密钥及添加设备: 1.注册巴法平台账号 2.获取密钥 3.添加设备 四.目标电脑设置(网络唤醒+免密SSH) ...

  5. 基于Blinker的小爱同学语音控制【脱坑指南】

    基于Blinker的小爱同学语音控制ESP8266 前些天在使用esp8266时遇到很多小爱不能控制设备问题,现在来叙述我控制过程中所遇到的问题,以及到完整的小爱能成功控制Esp8266的过程. 1. ...

  6. 小爱同学+blinker+esp8266实现千里点灯

    文章目录 前言 一.准备材料: 二.开发步骤 1.arduino开发环境准备 2.注册blinker账号 3 编写程序 5 USB-ttl 和esp01s 接线 6 代码烧录: 7 手机上的小爱配置 ...

  7. 想用天猫精灵、小爱同学语音控制灯、窗帘、卷帘门、投影幕……实现你的智能家居梦?用十几元钱制作一个红外射频转发器试试吧

    使用场景 自从智能音箱出现以后,是不是想用智能音箱控制家里的电器和设备?但是购买接入天猫精灵和小爱同学的设备都很贵,比如一套普通的电动窗帘架300元左右,但是接入智能音箱控制的最少要700元.想尝试智 ...

  8. ESP8266 Blinker 小爱同学 本地控制 手机配网 四路开关 物联网 arduino编程详细注释

    作为一名注册12年CSDN的电脑爱好者,没有从事喜欢的IT行业还是颇有那么一丝丝的想念. 通过一段时间的arduino编程和ESP8266学习,参考示例程序等,完善了自己的一份小爱同学四开关控制的程序 ...

  9. 通过贝壳物联,让小度或天猫精灵语音控制你的8266

    我用的是网上继电器模块上可以插8266-01S那种5V取电,自带5转3.3电源,模块是安装在顶灯里面的.原始开关还在,考虑到单火取电难度太大,主要是8266功率太大了.所以既能在开关处控制灯,也能智能 ...

  10. 小白也可以学会小爱同学语言控制灯

    教程 软件准备 电脑端安装Arduino软件,手机端安装点灯科技APP,以及米家APP和小爱音响. 电脑端所需以及点灯科技APP都在在网盘资料文件夹中,需要网盘资源的评论区找我要. 硬件准备 小爱音响 ...

最新文章

  1. python中的module
  2. BigGAN被干了!DeepMind发布LOGAN:FID提升32%,华人一作领衔
  3. python【力扣LeetCode算法题库】257- 二叉树的所有路径
  4. 数据降维(PCA、KPCA、PPCA)及C++实现
  5. c++怎么输入带有空格的字符串_C 语言入门 11 fscanf() 函数对空格的处理
  6. html自动识别循环列表元素,动态添加的元素,怎么遍历它们的功能及内容
  7. Jar 包依赖冲突排查思路和解决方法
  8. OLTP v.s. OLAP
  9. SuSE配置zypper(功能相当于RHEL中的yum)
  10. 集群服务器分析系统,集群服务器系统可扩展性的研究与实现
  11. React行内样式写法
  12. Qt实现 文件比较工具
  13. 小程序的申请开通需要什么条件
  14. html里的底部c怎么打出来,版权所属符号-网站底部版权符号怎么打出来
  15. 小项目一:使用fping统计网络中主机的网络连通情况
  16. 1427: 数字转换
  17. 债务美元是怎样“炼成”的
  18. ORMLite 数据库的使用--二次封装
  19. AutoLeaders控制组——51单片机学习笔记(蜂鸣器、AT24C02芯片)
  20. 广州百田 技术类 笔试题

热门文章

  1. 20 个实例玩转 Java 8 Stream
  2. 【课程作业】学术英语写作:文献阅读报告1
  3. 从负指数分布/泊松分布到排队论(经理能扣篮,但不经常也不绝对)
  4. 一些常用的物理特殊符号的读法
  5. HTML CSS游戏官网网页模板——卡通的萌王游戏网页(13个页面)
  6. SolidEdge完整安装教程-亲测
  7. C#几行代码让电脑蓝屏
  8. 你还在为找素材发愁吗?自媒体高手都知道的免费自媒体素材网
  9. 跳妹儿学编程之ScratchJr(五):ScratchJr入门程序积木块功能介绍与使用技巧
  10. wdr7660虚拟服务器设置,TP-LINK WDR7660用手机怎么设置?