有时候晚上关了Nas之后,白天会忘记打开。导致需要在外边连接的时候,无法连接。这个内容主要帮助喜欢动手的小伙伴做一个Nas开机的远程控制,当然了如果你家里支持网络唤醒的话,可以忽略。
一、硬件部分:
采用esp8266-01s作为主控核心。
这里我们用GPIO2控制开机键、GPIO0控制重启键、因为电脑主板的电压是5.0V,为了防止烧坏esp8266的引脚,我们需要给2个引脚串联一个1KΩ的电阻,电阻另一端连接一个三极管9014的基极;
三极管的发射极、电脑主板的power-、电脑主板的Reset-与ESP8266模块的GND引脚共地;
三极管的集电极分别连接电脑主板的power+、Reset+;
⚠️esp8266的供电电压是3.3V,如果通过主板取电,一定注意电压的不同;
二、固件代码:
为了方便省事,直接借用了点灯科技的库,大家用的时候可以自行注册一个账号,获取设备token,更换下面固件中的token即可。
#define BLINKER_WIFI
#include <ESP8266WiFi.h>
#include <Blinker.h>
// Blinker 相关配置
char auth[] = "*******"; //设备key
char ssid[] = "******"; //wifi信道
char pswd[] = "******"; //WiFi 密码
// 定义控制引脚
const int powerPin = 2; // 连接开机键的GPIO
const int resetPin = 0; // 连接重启键的GPIO
// Blinker Button 控件
BlinkerButton powerButton("btn-power");
BlinkerButton resetButton("btn-reset");
BlinkerButton forceShutdownButton("btn-force-shutdown");
// 模拟按下按钮的函数
void pressButton(int pin, int duration = 1000) {
digitalWrite(pin, HIGH);
delay(duration);
digitalWrite(pin, LOW);
}
// 处理开机按钮点击事件
void powerButton_callback(const String & state) {
Blinker.vibrate();
pressButton(powerPin);
}
// 处理重启按钮点击事件
void resetButton_callback(const String & state) {
Blinker.vibrate();
pressButton(resetPin);
}
// 处理强制关机按钮点击事件
void forceShutdownButton_callback(const String & state) {
Blinker.vibrate();
// 对于强制关机,不同电脑可能有不同方式,这里假设长按电源键5秒
pressButton(powerPin, 5000);
}
void setup() {
Serial.begin(115200);
Blinker.begin(auth, ssid, pswd);
pinMode(powerPin, OUTPUT);
pinMode(resetPin, OUTPUT);
digitalWrite(powerPin, LOW);
digitalWrite(resetPin, LOW);
powerButton.attach(powerButton_callback);
resetButton.attach(resetButton_callback);
forceShutdownButton.attach(forceShutdownButton_callback);
}
void loop() {
Blinker.run();
}
三、烧录代码:
将上述代码编译后烧录到esp8266-01s芯片中即可,具体烧录教程网上很多。毕竟esp8266模块非常常见且廉价;
更多内容也可以参考我的博客www.zkii.net,有不懂的欢迎讨论。