基于Esp8266的远程开机棒

  • 第一章 引言
    • 1.1 背景
    • 1.2目的和意义
  • 第1章 硬件选型与电路设计
    • 1.1 开机原理
    • 1.2 硬件选用
    • 1.3电路连接
    • 1.4 物联网平台选择
  • 第2章 实验验证
    • 2.1实验准备
    • 2.2 实验过程和结果
  • 第3章 总结和展望

第一章 引言

1.1 背景

2020年是不平凡的一年,远程办公呈现快速发展。当办公地点没有人的时候如何实现远程开机便成为远程办公的一个必须解决的问题。目前已经有许多可行的方案,例如wol局域网唤醒,通过esp8266无线模块驱动继电器或者智能插座设置主板来电自动启动等。wol唤醒要求主板有此功能的支持,没有此支持的便无法使用,而且wol唤醒的前提是唤醒设备在同一局域网内,要想在蜂窝移动网络即数据流量模式下启动需要做内网穿透或者采用zerotier搭建虚拟局域网。利用主板来电自动启动功能是很多远程开机设备选择的方案:主机电源连接智能插座,远控设备控制插座的通断实现主板的通电,需要主板有断电后来电实现开机的功能,部分主板仍然受到限制。充分的市场调研表明,现有的开机棒、开机卡等硬件设备相对价格较高,功能单一,甚至pcie类型的网卡开机棒还需要占用一个pcie插槽,板载资源不能得到充分利用。在此背景下希望设计一款远程开机棒,能够在板载接口有限的情况也能实现远程开机,降低设备成本。

1.2目的和意义

本项目旨在开发不受主板类型限制的、价格低廉的远程开机方案,为远程开机棒提供新的思路。

第1章 硬件选型与电路设计

1.1 开机原理

主板上开机的原理如图所示,当开机键按下时A点电平被拉低,使得ATX电源第9脚和第14脚被短接,激活ATX电源,开始给主板供电。利用这一原理,使用Esp8266模块的io口高电平拉低模拟A点电平降低的过程完成开机动作。在实现远程开机的基础上,本地按钮功能仍然需要保留,可以通过判断A点对地的电压控制io输出实现。

1.2 硬件选用

本项目的目标是要实现低成本的远程开机,因此wifi模块是必须的。常见的wifi模块包括esp8266 、esp32等,这两种模块有不同的封装形式在不同的应用场景下可以根据需求选用。考虑到电脑开机需要仅需要控制2个io(一个检测按钮输入,一个IO连接A点输出),esp8266 的esp-01s型模块引出了IO0和IO2 两个IO,当不使用串口通信因此tx,rx也可用作I。esp-01s型模块需要3.3v供电,需要外电压转换模块。esp01-s模块价格低廉,非常适合本项目的使用。如果有其他需求还可以使用具有更多引脚的nodemcu模块,该模块为5v供电可以直接使用主板未使用的USB接口取电。本项目以esp01-s为例进行介绍,因为实验室有现成的nodemcu模块,所以实验以nodemcu进行。

1.3电路连接

电脑机箱面板一般会引出8根杜邦接头的连接线,以微星主板为例,如下表和图所示,分别为硬盘工作指示灯,电源指示灯,开机按键和重启按键。在电脑处于关机状态下测量开关按键和重启按键引脚电压,发现第5和第6引脚电平为3.3v,第7和第8脚为地。

1 HDD LED+ 2 Power LED+
3 HDD LED- 4 Power LED-
5 Reset Switch 6 Power Switch
7 Reset Switch 8 Power Switch
9 Reserved 10 No Pin


结合开机原理图可以看到,第6脚对应就是A点,开机按钮按下等价于将6脚电平拉低然后拉高。
esp01-s模块的引脚如下图所示,引出了IO0与IO2,查询手册可以知道模块的LED灯由IO2进行控制,因此首选IO2作为输出的控制引脚。将2脚与主板上JFP1的第6脚连接IO2,第8脚连接GND,开关按键通过杜邦线连接到IO0和GND。因为主板上有未连接的USB接口,因此可以将开关一端接在USB接口的GND另一端接在esp01-s的IO0。

esp01-s的电气特性如图所示,供电电压为3.3v需要特别注意。使用烧写器可以使用充电宝等具有USB输出口的设备进行独立供电也可以购买USB延长线进行改造,使用未使用的USB接口供电。实验中主板USB2接口同时为无线网卡和nodemcu供电。

1.4 物联网平台选择

要实现远程开机需要将设备接入物联网,常见的免费物联网平台包括阿里云、贝壳物联、点灯Blink等等。直接接入云平台需要使用云平台对应的SDK,编程过程复杂。贝壳物联平台和电灯都可以使用arduino进行编程,示例程序只需要修改少量代码即可。相比于贝壳物联,电灯使用手机app进行交互页面设计控件类型丰富界面也比较好看。对比之后决定选择接入电灯Blink平台。
在手机应用商店下载电灯blink的app,添加独立设备选择网络接入阿里云,添加入门示例。在arduino中安装esp8266和blinker软件库,并打开Blinker_hello/Hello_Wifi.ino示例,如图所示。


修改授权码auth为设备的授权码,ssid为要接入的wifi名,pswd为对应的密码。修改按钮的回调函数并增加按钮按下时的开机实现,然后上传到esp01-s。修改后的代码如下:

/* ******************************************************************* Download latest Blinker library here:* https://github.com/blinker-iot/blinker-library/archive/master.zip* * * Blinker is a cross-hardware, cross-platform solution for the IoT. * It provides APP, device and server support, * and uses public cloud services for data transmission and storage.* It can be used in smart home, data monitoring and other fields * to help users build Internet of Things projects better and faster.* * Make sure installed 2.7.2 or later ESP8266/Arduino package,* if use ESP8266 with Blinker.* https://github.com/esp8266/Arduino/releases* * Make sure installed 1.0.4 or later ESP32/Arduino package,* if use ESP32 with Blinker.* https://github.com/espressif/arduino-esp32/releases* * Docs: https://diandeng.tech/doc*       https://github.com/blinker-iot/blinker-doc/wiki* * ****************************************************************** * Blinker 库下载地址:* https://github.com/blinker-iot/blinker-library/archive/master.zip* * Blinker 是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、* 服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、* 数据监测等领域,可以帮助用户更好更快地搭建物联网项目。* * 如果使用 ESP8266 接入 Blinker,* 请确保安装了 2.7.2 或更新的 ESP8266/Arduino 支持包。* https://github.com/esp8266/Arduino/releases* * 如果使用 ESP32 接入 Blinker,* 请确保安装了 1.0.4 或更新的 ESP32/Arduino 支持包。* https://github.com/espressif/arduino-esp32/releases* * 文档: https://diandeng.tech/doc*       https://github.com/blinker-iot/blinker-doc/wiki* * *****************************************************************/#define BLINKER_WIFI#include <Blinker.h>char auth[] = "6650efab7f0a";
char ssid[] = "有没有wifi";
char pswd[] = "i8888888";
// 设定读取按钮的引脚
#define POWER_SWITCH 0
// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");int counter = 0;// 按下按键即会执行该函数
void button1_callback(const String & state)
{BLINKER_LOG("get button state: ", state);
//    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));digitalWrite(LED_BUILTIN,LOW);// 模拟按钮按下delay(200);//延时200ms模拟按下延迟digitalWrite(LED_BUILTIN,HIGH);//模拟松开按钮
}// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{BLINKER_LOG("Blinker readString: ", data);counter++;Number1.print(counter);
}void setup()
{// 初始化串口Serial.begin(115200);BLINKER_DEBUG.stream(Serial);BLINKER_DEBUG.debugAll();// 初始化有LED的IOpinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);// 初始化电源按钮读取引脚pinMode(POWER_SWITCH,INPUT);// 初始化blinkerBlinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);Button1.attach(button1_callback);
}void loop() {Blinker.run();if digitalRead(POWER_SWITCH)==LOW //说明被按下{digitalWrite(LED_BUILTIN,LOW);// 模拟按钮按下delay(200);//延时200ms模拟按下延迟digitalWrite(LED_BUILTIN,HIGH);//模拟松开按钮}
}

第2章 实验验证

2.1实验准备

实验使用主板为微星迫击炮B360,机箱为酷冷至尊Q300L,无线网卡使用USB2的一排引脚的电源进行供电,使用双排2x4pin的胶壳。杜邦线去除胶壳重新填到胶壳另一排电源的位置,目的是引出GND。设置主板bios中usb口关机不断电。将实验电脑关机(电源不关),按照前文所述连接开关按键和esp01s模块。在手机app中应该看到设备在线提示。
实验说明:本实验在app中修改了开机按钮的位置和样式,所以与默认示例有所不同。为了能够看清楚接线远程开机实验将模块放在外边独立供电。

2.2 实验过程和结果

断开手机wifi,打开电灯app,切换到开机设备点击示例按钮“点我开关灯”,主板正常点亮,远程开机实验成功。过程如视频所示。

blinker +esp8266远程开机效果演示

再次将电脑关机,手动点击开机键,主板正常开机,实验结束,按键开机功能保留成功。

第3章 总结和展望

本项目使用esp8266模块通过IO口高低电平变换模拟开机键按下过程,通过电灯blinker平台接入物联网实现了远程开机。项目优点在于成本低廉代码量小,不需要内网穿透等复杂操作;缺点和遗憾是没有实现接入需要认证的PWA2 enterprise 校园网络。使用esp01s模块需要电平转换模块或者编程模块,供电方式需要改进。

基于Esp8266的远程开机棒设计和实现相关推荐

  1. linux下php可以实现哪些功能,基于Linux的远程管理系统的设计与实现(PHP)

    基于Linux的远程管理系统的设计与实现(PHP) 来源:2BYSJ.cn 资料编号:2SJ260700 资料等级:★★★★★ %D7%CA%C1%CF%B1%E0%BA%C5%A3%BA2SJ260 ...

  2. “远程开机棒”设置教程

     软件下载地址:https://www.coolapk.com/apk/cn.sharepeople.wol 本文不定时更新,欢迎加入QQ群:681872385,我会尽我所能帮助大家 一.软件使用说明 ...

  3. 基于ESP8266的阿里云远程实时温度监控

    基于ESP8266的阿里云远程实时温度监控 基于ESP8266的远程实时温度监控 基于ESP8266的远程实时温度监控系统,通过ESP8266开发板采集DHT11温湿度传感器的数据,在连接WIFI接入 ...

  4. 远程开机并不难 用开机棒轻松打开局域网多台电脑

    ▶导语 "小李啊,周末没出远门吧,那个并购方案,你们组还得抓紧时间再完善一下啊!"作为上班族,我想大家都会有与我类似的经历,好不容易挨到周末休息两天,又被抓回来弄个破方案.我们小组 ...

  5. android 远程控制服务,基于Android的远程控制系统

    摘 要 远程控制可以实现远程操作服务端设备,达到远距离完成计算机作业的目的.本文所描述的系统便是一种远控系统,该系统在点对点模式的基础上,利用局域网建立手机和电脑端的连接,让手机模拟鼠标功能,远程操作 ...

  6. 基于RT-Thread+RA6M4的远程开机助手

    本文由RT-Thread论坛用户@原子号参加瑞萨电子 MCU RT-Thread开发设计大赛发布的原创文章:https://club.rt-thread.org/ask/article/e086a4b ...

  7. WOL远程开机——通过ESP8266+blinker(点灯)平台实现

    WOL远程开机--通过ESP8266+blinker(点灯)平台实现 之前疫情现在家里,无聊时改装家里的吸顶灯入网时,寻找了各种物联网平台,最终找到了blinker(点灯)这个物联网平台,APP很简洁 ...

  8. win10查看pcie设备_壹拓网科技解密WIN10系统使用向日葵开机棒远程开机需要设置几个地方...

    向日葵开机棒,是一款非常好用的远程智能远程开机硬件,它一头接网线,另外一头和被开电脑接在同一个路由器下,不需要和被开电脑或者设备直接连接,当然,被开电脑需要有线联网,暂时不支持使用无线方式联网的电脑. ...

  9. linux mac地址远程开机,用MAC地址远程开机的开机棒你见过吗?

    如今这个物联网时代,远程开机已经不是想象,即便是用户外地出差,也能在异地开启办公室的电脑,这就给很多经常有远程需求的人来说具有很大的便利性.下面小编就为大家分享向日葵这个开机神器--开机棒. 局域网模 ...

  10. 基于点灯科技的温湿度传感器设计:STM32C8T6+DHT11+0.96寸oled显示屏+ESP8266

    基于点灯科技的温湿度传感器设计,课程设计自取. 保证可以做出来,接线有手进行,小学生来了都会. 耗时一个礼拜,移植网上各种资料,最终形成了这样一个简洁的版本 并且,oled的显示由单片机控制,设计ap ...

最新文章

  1. 002_ZooKeeper安装配置
  2. html地图周边搜索,html5 百度地图定位关键字搜索附近
  3. Hadoop配置文件参数详解
  4. C和指针之函数之求参数列表中的最大值
  5. css 关闭按钮实现,CSS做的关闭按钮动效
  6. python字典的内置函数_python – 用于字典转换的特殊方法名称的内置函数
  7. 用mysql建立商城数据字典_把mysql数据库生成数据字典,直接可用
  8. 网易开源分布式存储系统 Curve,性能彪悍!这是要吊打阿里?
  9. tp3.2.3 命令模式
  10. 数学建模之数据比较与影响因素分析
  11. awgn信道c语言程序,关于awgn信道的程序求解~!
  12. 演示文稿 Beamer 入门
  13. FPS射击游戏透视自瞄之搞定数据逆向csgo(一)-(三)
  14. 状压dp解释及位运算相关介绍
  15. python编写一个名片_python基础-实现名片功能
  16. 【软件测试】白盒测试用例设计——基本路径法
  17. C# Win32API类
  18. 《大数据》涂子沛【3.0升级版】读后感
  19. linux环境配置git认证
  20. Java基础学习——第十章 枚举类注解

热门文章

  1. 电子密码锁的设计(Verilog HDL实现)
  2. 【mysql】MySQL中的锁原理(表锁、行锁、间隙锁、共享锁、排他锁)
  3. exchange创建邮箱组_Exchange批量创建用户组及启用通讯组邮箱
  4. 将uniapp打包成安卓APP
  5. 新浪邮箱下载的都是php,为什么我用新浪邮箱以及手机号码注册的支付宝能够登陆,但是用163邮箱的支付宝登陆数据库就会报错...
  6. creo三维生成二维图_proe5.0三维图转二维图
  7. vscode 添加版权信息
  8. 详解散度、旋度(二维、三维)
  9. 窗内网所有编程类视频大集合
  10. 微商公社新兵连第四天