数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 4877|回复: 23

[Arduino] ESP8266制作一个物理网络唤醒开机器,没有wol功能主板的福音

[复制链接]
发表于 2022-1-23 00:26:38 | 显示全部楼层 |阅读模式
前言
最近从朋友那收了台主机,笔记本就吃灰去了,可是外出的时候就有远程的需求。老平台嫌一直开机的话功耗太大,但是一番折腾发现主板居然不支持WOL(通过幻数据包唤醒),那要远程开机就只有一条路了,就只能在开机键上做文章了。先说下网络环境,内网有台猫盘作为nas,有公网ipv6(移动宽带几乎无法要到公网ipv4,好在现在ipv6一般都给了,特别是三家的4g5g都有v6了),并且通过ddns做了v6的动态域名,然后搭了wireguard(微屁嗯),所以在在外面可以直接访问家里内网,所以我只要实现内网的开机系统即可,就不接入物联网平台了。

方案选型
既然和wifi有关系,那首选当然是esp8266了,价格低,又可以在Arduino IDE中进行开发。

硬件方案
淘宝一搜,ESP8266+继电器模块才9.9包邮,果断下单,然后用上面的继电器代替开机按钮(我直接取代了开机按钮,当然也可以并联,保留手动和通过网络),这款主板支持关机usb输出5V,刚好给他供电

实现功能
1. Airkiss协议实现wifi配网
2. 基于web页面,实现开机(控制继电器接通0.5s)
3. 基于web页面,实现强制关机(控制继电器接通10s以上)
程序编写
这块wifi模块里面其实默认有安信可固件,连app都给你配套了,但这不是我想要的,特别是不想安装个app。我的想法是实现基于web的控制,不管是使用手机还是电脑,都可以通过web界面来进行操控,甚至在linux命令行下通过curl发送http请求也可以进行操作。
开发使用Arduino IDE进行开发,需要安装ESP8266的支持库,具体过程就不赘述了,网上很多教程。

首先实现Airkiss,其实这个也是封装好的了,调用
WiFi.beginSmartConfig();
即可开始Airkiss配网,具体使用的话,微信里搜一下,随便找个支持Airkiss配网的公众号,都是通用的协议
使用
WiFi.smartConfigDone()
检查是否完成配置,然后进行保存
WiFi.setAutoConnect(true);

我的策略是开机的时候检查wifi是否连接成功,不成功就进入Airkiss。当然你如果图方便,直接写死连什么wifi也可以

然后是实现web服务器,引用http server的库需要包含头文件
#include <ESP8266WebServer.h>
然后开启服务器,参数是端口号,选择80的话访问时无需写端口号
ESP8266WebServer server(80);


然后设置相应的回调函数,这个有点像cgi-bin那种,设置好监听的url,如果访问到那个url就会调用相应的回调函数,然后在回调函数实现相应的操作即可实现功能,这里是操作继电器
server.begin();                  
server.on("/", handleRoot);      
server.on("/power_on", handlePowerOn);      
server.on("/force_power_off", handleForcePowerOff);      
server.onNotFound(handleNotFound);   
假设esp8266联网后私网ip为192.168.1.100,则第二三四五行分别是,注册访问根目录(http://192.168.1.100),访问http://192.168.1.100/power_on,访问http://192.168.1.100/force_power_off以及其他url时调用的函数
接下来实现函数体,根目录就放两个功能页面的超链接,供用户点击跳转;power_on对应开机,访问后一方面要输出内容,我放置了提示信息以及返回首页的超链接,另一方面要执行继电器的操作,即操作GPIO0,强制关机页面(force_power_off)同理
根目录的函数
void handleRoot() {
  server.send(200, "text/html; charset=utf-8", " \
  <a href=\"/power_on\"  target=\"opentype\">开机</a>\r\n \
  <br> \
  <br> \
  <a href=\"/force_power_off\"  target=\"opentype\">强制关机</a>\r\n \
  ");   
}
实现效果如图

开机的函数
void handlePowerOn() {  
  server.send(200, "text/html; charset=utf-8", " \
  <p>正在执行开机</p>\r\n \
  <br> \
  <br> \
  <a href=\"/\"  target=\"opentype\">返回</a>\r\n \
  ");
  digitalWrite(RELAY_PIN, HIGH);
  delay(500);
  digitalWrite(RELAY_PIN, LOW);
}
页面效果如图

主循环需要调用
server.handleClient();
web界面理论上可以写些css美化下啥的,懒,反正自己用,有兴趣网友可以自行美化
最后,懒得装壳子了,直接热熔胶大法+铁丝把他挂在机箱外面,防止机箱内wifi信号不好,引出来5V和开机线,收工

平时使用的时候,我直接将开机的url 如http://192.168.1.100/power_on,发到微信文件传输助手,然后收藏起来,即使在电脑前,开机也用微信点击,不用弯腰去按开机键了
需要源码,请移步gitee
https://gitee.com/Sumn255/esp8266-pc_power_on


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 3家元 +150 收起 理由
jf201006 + 20 謝謝分享
家睦 + 100
453395398 + 30 謝謝分享

查看全部打赏

发表于 2022-1-23 00:46:45 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-23 00:58:40 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-23 01:35:38 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-23 02:28:12 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-23 08:45:43 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-23 09:21:56 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-23 09:48:32 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-23 09:56:58 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-23 10:27:11 | 显示全部楼层
游客请登录后查看回复内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 2022-1-23 10:34:22 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-23 14:52:50 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-23 18:24:53 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-24 00:33:21 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-24 00:34:33 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-24 00:40:36 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-24 11:08:06 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-28 19:31:38 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-30 15:12:11 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-1-30 15:15:09 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|数码之家-技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2026-6-18 00:38 , Processed in 0.249600 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz!

© MyDigit.Net Since 2006

快速回复 返回顶部 返回列表