只是简单IO控制,用示例程序就可以
攻城狮大神您好:我想写一个用ESP8266-01S控制电脑开关机,加电脑状态反馈,我现在用io1口控制继电器,想用io2口来反馈电脑运行状态,现在问题就出在io2口上了,能不能提供我一个思路指点一下,我这个想法我断断续续研究了半年,一直没好的办法解决,我尝试把io2口设置成输入模式,输入上拉模式,输出模式,去连接电脑5V正极和负极都有BUG,是不是ESP8266-01S本身不能完美胜任这俩项任务,还是必须要在借助其他模块,麻烦指点一下,我之前还尝试过使用Ping来P电脑看看在不在线来判断电脑是不是开机,最后因为速度太慢赶不上小爱的答复时间放弃了, 南阳|永党 发表于 2021-2-14 23:15
攻城狮大神您好:我想写一个用ESP8266-01S控制电脑开关机,加电脑状态反馈,我现在用io1口控制继电器,想用i ...
没用过01s,建议换其他8266模块试试 本帖最后由 z01228 于 2021-2-15 13:28 编辑
可以的io1控制继电器去开关电脑主机io2通过光耦 监视cpu风扇的情况 就可以反映电脑的开机状态了
至于小爱的应答速度 这个和网络 有关系就不好说了
本帖最后由 安少 于 2021-2-18 15:24 编辑
/***********************************************************************************************
定义头文件
***********************************************************************************************/
#define BLINKER_WIFI
#define BLINKER_WITHOUT_SSL//非SSL加密通信接入,省堆栈
#define BLINKER_PRINT Serial //给debug打开串口
#include <ESP8266WiFi.h>
#include <Blinker.h>
#define TEXTE_ip "tex-ip"
#define TEXTE_zt "tex-zt"
/***********************************************************************************************
定义全局变量
***********************************************************************************************/
char auth[] = "***************";
char ssid[] = "**************";//你的wifi 名称
char pswd[] = "**************";//你的wifi 密码
const int D0 = D0;
const int buttonPin = 2;//01、01S对接口复用了,pin2上电时得拉高,使用其他引脚就不会有影响
int buttonState = 0;
int A1 = 0;
int A2 = 0;
int A3 = 0;
/***********************************************************************************************
新建数据类型组件对象,作用:将数据传输到手机blinker app
***********************************************************************************************/
BlinkerText Text_ip(TEXTE_ip);
BlinkerText Text_zt(TEXTE_zt);
BlinkerButton Button1("btn-A1");
BlinkerButton Button2("btn-A2");
BlinkerButton Button3("btn-A3");
BlinkerNumber Number1("num-A1");
BlinkerNumber Number2("num-A2");
BlinkerNumber Number3("num-A3");
BlinkerNumber Number4("num-xinhao");//定义信号强度键名
/***********************************************************************************************
按下按键即会执行该函数
***********************************************************************************************/
void button1_callback(const String & state) {
BLINKER_LOG("get button state1: ", state);
if (buttonState == HIGH) {
Blinker.vibrate();
digitalWrite(D0, LOW);
delay(1000);
digitalWrite(D0, HIGH);
A1++;
Number1.print(A1);
}
else {
Text_zt.print("电脑已开机");
}
}
void button2_callback(const String & state1) {
BLINKER_LOG("get button state2: ", state1);
if (buttonState == HIGH) {
Text_zt.print("电脑已关机");
}
else {
Blinker.vibrate();
digitalWrite(D0, LOW);
delay(10000);
digitalWrite(D0, HIGH);
A2++;
Number2.print(A2);
}
}
void button3_callback(const String & state1) {
BLINKER_LOG("get button state3: ", state1);
Blinker.vibrate();
digitalWrite(D0, LOW);
delay(10000);
digitalWrite(D0, HIGH);
delay(1000);
digitalWrite(D0, LOW);
delay(1000);
digitalWrite(D0, HIGH);
A3++;
Number3.print(A3);
}
/***********************************************************************************************
附加心跳包
用于APP上实时更新按键次数数据
***********************************************************************************************/
void Number() {
delay(2000);
Number1.print(A1);
Number2.print(A2);
Number3.print(A3);
Number4.print(WiFi.RSSI());
Text_ip.print(WiFi.localIP().toString().c_str());
if (buttonState == HIGH) {
Text_zt.print("电脑已关机");
}
else {
Text_zt.print("电脑已开机");
}
}
/***********************************************************************************************
将设置代码放在此处,运行一次
***********************************************************************************************/
void setup() {
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
// 初始化有LED的IO
pinMode(D0, OUTPUT);
pinMode(buttonPin, INPUT);
digitalWrite(D0, HIGH);
//Blinker.delay(180000);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
Button2.attach(button2_callback);
Button3.attach(button3_callback);
Blinker.attachHeartbeat(Number);
}
/***********************************************************************************************
把主代码放在这里,重复运行
***********************************************************************************************/
void loop() {
Blinker.run();
buttonState = digitalRead(buttonPin);
} 安少 发表于 2021-2-18 15:19
/***********************************************************************************************
...
pin2脚接一个继电器,用主板上的usb口给继电器供电,电脑开机继电器上电触点吸合,继电器常开断开,01spin2口得到一个低电平信号,给APP反馈电脑开机。关机同理,继电器触点断开了,继电器常开吸合,就给了一个高电平的信号 不需要继电器,电脑电源有5v待机电压,直接接esp8266,找开机触点pin,给个高电平就直接开机了
页:
1
[2]