本帖最后由 sansui 于 2023-12-20 21:38 编辑
错过了小安派
也错过了M61-32S
太惨了
知道太迟了
这次我用esp12F做一个网络开机卡
没啥要求,就想要一块板子,
板子我都看好了,就要这块
比M61-32S好看多了
接下来介绍下我的项目
我的项目是一个电脑开机卡项目
在网络上已经有现成的,不过是PCIE的
好的一点是可以省的取电
当然不好的一点也就是他省的取电,需要设置关机PCIE不断电
结果,我电脑不支持
所以,我做了我这样的
typec单独供电,供电解决了
开关控制那,每个开关引出两组排针接口
既可以远程控制,又不影响按钮原来的功能
开关控制部分用了两光耦隔离就搞定了
便宜
当然比固态继电器缺少的点在于,方向要接对,否则,二极管的截止功能就开不了机了
给大家看看我的实物图
代码的话,给大家放个点灯app的代码,巴法的也有,但是点灯的会更好的配置智能音箱
- #define BLINKER_WIFI
- #define BLINKER_ALIGENIE_OUTLET
- #include <Blinker.h>
- #include <ESP8266WiFi.h> //智能配网
- #define OneSwitchPIN 4 //开关控制引脚
- #define TwoSwitchPIN 5 //重启控制引脚
- char auth[] = "d111416a28cc";
- /***************************手机APP接口***********************/
- //按钮1初始化, 创建对象,用于正常开关机及强制关机
- #define OneSwitchTXT "OneSwitch"
- BlinkerButton OneSwitch(OneSwitchTXT);
- //按钮2初始化, 创建对象,用于电脑重启
- #define TwoSwitchTXT "TwoSwitch"
- BlinkerButton TwoSwitch(TwoSwitchTXT);
- //按钮1数据处理回调函数-电脑开关机控制
- void OneSwitchCK(const String & state)
- {
- BLINKER_LOG("get button state: ", state);
- //电脑开关机操作
- if(state == "tap"){
- digitalWrite(OneSwitchPIN, HIGH); //执行电脑开关机
- delay(500);
- digitalWrite(OneSwitchPIN, LOW);
- OneSwitch.print("tap OK");
- }
- //电脑强制关机操作
- if(state == "press") //长按按键进行强制关机
- {
- digitalWrite(OneSwitchPIN, HIGH);
- OneSwitch.print("press OK");
- }
- if(state == "pressup") //长按按键松开后检测是否关机
- {
- digitalWrite(OneSwitchPIN, LOW);
- OneSwitch.print("pressup OK");
- }
- }
- //按钮2数据处理回调函数-电脑重启控制及开关机状态查询
- void TwoSwitchCK(const String & state)
- {
- BLINKER_LOG("get button state: ", state);
- //电脑开关机操作
- if(state == "tap"){
- digitalWrite(TwoSwitchPIN, HIGH); //执行电脑开关机
- delay(500);
- digitalWrite(TwoSwitchPIN, LOW);
- TwoSwitch.print("tap OK");
- }
- //电脑强制关机操作
- if(state == "press") //长按按键进行强制关机
- {
- digitalWrite(TwoSwitchPIN, HIGH);
- TwoSwitch.print("press OK");
- }
- if(state == "pressup") //长按按键松开后检测是否关机
- {
- digitalWrite(TwoSwitchPIN, LOW);
- TwoSwitch.print("pressup OK");
- }
- }
- //检测收到未解析数据时的回调函数
- void dataRead(const String & data)
- {
- BLINKER_LOG("Blinker readString: ", data);
- Blinker.vibrate();
-
- uint32_t BlinkerTime = millis();
-
- Blinker.print("millis", BlinkerTime);
- }
- void setup()
- {
- //初始化串口服务
- Serial.begin(115200);
- BLINKER_DEBUG.stream(Serial);
- //设置引脚模式并初始化引脚
- pinMode(OneSwitchPIN, OUTPUT); //开关机控制引脚
- digitalWrite(OneSwitchPIN, LOW);
- pinMode(TwoSwitchPIN, OUTPUT); //重启控制引脚
- digitalWrite(TwoSwitchPIN, LOW);
- //网络重连
- if (!autoConfig())
- {
- Serial.println("SmartConfig Mode");
- //智能配网
- smartConfig();
- }
-
- //Binker设备配置
- Blinker.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str());
-
- //注册Blinker APP命令的回调函数
- Blinker.attachData(dataRead);
- OneSwitch.attach(OneSwitchCK); //按钮1回调函数注册
- TwoSwitch.attach(TwoSwitchCK); //按钮2回调函数注册
- }
- void loop()
- {
- Blinker.run();
- }
复制代码
|