【电子DIY作品】+WiFi远程开机卡+ESP-12F+欢迎围观!!!

[复制链接]
查看1040 | 回复5 | 2023-11-16 00:03:42 | 显示全部楼层 |阅读模式
本帖最后由 shawnting 于 2023-11-16 00:14 编辑

1、前言
        家用电脑搭建的服务器,偶尔停电和宕机,是否有个产品能远程开机或从启服务器呢?使用万能的淘宝搜索,确实有这样的产品,价格还可以接受。对嵌入式还有点兴趣,看看自己能不能肝出硬件来,然后烧录上自己写的程序。

2、功能介绍
1、 主控采用ESP-12F,带wifi模块。基于Blinker物联网平台;
2、 硬件光耦隔离,两路输入。一路开机,一路复位;
3、 手机端使用Blinker App,自定义控制界面;开机从和重启复用一个按钮,单机是开机,长按重启。

3、硬件设计
3.1 硬件原理图
屏幕截图 2023-11-15 231547.png
3.2 硬件PCB
屏幕截图 2023-11-15 232722.png
3.3 硬件3D视图
屏幕截图 2023-11-15 231832.png
嘉立创下单打样,反正也不着急,正常周期3天,京东物流2天到手。
3.4 硬件实物
sw.png
4、软件设计
基于Blinker平台,手机端用的Blinker app,设计界面如下:
jm.png
软件部分:
  1. #define BLINKER_WIFI
  2. #define BLINKER_ALIGENIE_OUTLET

  3. #include <Blinker.h>

  4. char auth[] = "xxxxxxxxx";
  5. char ssid[] = "xxxxxx";
  6. char pswd[] = "xxxxxxx";

  7. /***************************手机APP接口***********************/
  8. //按键1初始化, 创建对象
  9. #define BUTTON1 "ButtonKey1"
  10. BlinkerButton Button1(BUTTON1);
  11. #define BOOTGPIO4   4
  12. #define RESETGPIO5  5
  13. #define LED   LED_BUILTIN

  14. //按键1数据处理回调函数
  15. void Button1Callback(const String& state) {
  16.   BLINKER_LOG("get button state: ", state);

  17.   if (state == "tap") {
  18.     //电脑开关机
  19.     digitalWrite(BOOTGPIO4, HIGH);
  20.     digitalWrite(LED, HIGH);
  21.     delay(1000);
  22.     digitalWrite(BOOTGPIO4, LOW);
  23.     digitalWrite(LED, LOW);
  24.     Blinker.print("Boot OK.");
  25.     BLINKER_LOG("Boot OK.");
  26.   }
  27.   if (state == "press") {
  28.     //电脑重启
  29.     digitalWrite(RESETGPIO5, HIGH);
  30.   }
  31.   if (state == "pressup") {
  32.     digitalWrite(RESETGPIO5, LOW);
  33.     Blinker.print("Reboot OK.");
  34.     BLINKER_LOG("Reboot OK.");
  35.   }
  36. }

  37. //检测收到未解析数据时的回调函数
  38. void dataRead(const String& data) {
  39.   BLINKER_LOG("Blinker readString: ", data);

  40.   Blinker.vibrate();

  41.   uint32_t BlinkerTime = millis();

  42.   Blinker.print("millis", BlinkerTime);
  43. }

  44. void setup() {
  45.   //初始化串口服务
  46.   Serial.begin(115200);
  47.   BLINKER_DEBUG.stream(Serial);
  48.   //设置引脚模式并初始化引脚
  49.   pinMode(LED, OUTPUT);
  50.   digitalWrite(LED, LOW);
  51.   pinMode(BOOTGPIO4, OUTPUT);  //开关机控制引脚
  52.   digitalWrite(BOOTGPIO4, LOW);
  53.   pinMode(RESETGPIO5, OUTPUT);  //重启控制引脚
  54.   digitalWrite(RESETGPIO5, LOW);

  55.   //网络初始化
  56.   Blinker.begin(auth, ssid, pswd);

  57.   //注册Blinker APP命令的回调函数
  58.   Blinker.attachData(dataRead);
  59.   Button1.attach(Button1Callback);
  60. }

  61. void loop() {
  62.   Blinker.run();
  63. }
复制代码
屏幕截图 2023-11-16 001252.png
回复

使用道具 举报

干簧管 | 2023-11-19 12:31:19 | 显示全部楼层
回复

使用道具 举报

WT_0213 | 2023-11-19 22:30:27 | 显示全部楼层
看看
回复

使用道具 举报

King6688 | 2023-11-27 23:16:38 | 显示全部楼层
不错
回复

使用道具 举报

cnfulishe | 2024-3-27 16:33:26 | 显示全部楼层
楼主太厉害了!加油,点个赞
回复 支持 反对

使用道具 举报

1055173307 | 2024-4-2 12:42:58 | 显示全部楼层
学习
回复

使用道具 举报

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

本版积分规则