求大神写一个ESP-01s加继电器模块电灯科技控制电脑开机-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 团子yyb

[已解答] 求大神写一个ESP-01s加继电器模块电灯科技控制电脑开机

[复制链接]
发表于 2021-2-14 23:15 | 显示全部楼层
奈何col 发表于 2021-1-2 23:12
只是简单IO控制,用示例程序就可以

攻城狮大神您好:我想写一个用ESP8266-01S控制电脑开关机,加电脑状态反馈,我现在用io1口控制继电器,想用io2口来反馈电脑运行状态,现在问题就出在io2口上了,能不能提供我一个思路指点一下,我这个想法我断断续续研究了半年,一直没好的办法解决,我尝试把io2口设置成输入模式,输入上拉模式,输出模式,去连接电脑5V正极和负极都有BUG,是不是ESP8266-01S本身不能完美胜任这俩项任务,还是必须要在借助其他模块,麻烦指点一下,我之前还尝试过使用Ping来P电脑看看在不在线来判断电脑是不是开机,最后因为速度太慢赶不上小爱的答复时间放弃了,

点评

没用过01s,建议换其他8266模块试试  详情 回复 发表于 2021-2-15 05:53
发表于 2021-2-15 05:53 | 显示全部楼层
南阳|永党 发表于 2021-2-14 23:15
攻城狮大神您好:我想写一个用ESP8266-01S控制电脑开关机,加电脑状态反馈,我现在用io1口控制继电器,想用i ...

没用过01s,建议换其他8266模块试试
发表于 2021-2-15 13:26 | 显示全部楼层
本帖最后由 z01228 于 2021-2-15 13:28 编辑

可以的  io1控制继电器去开关电脑主机  io2通过光耦 监视cpu风扇的情况 就可以反映电脑的开机状态了
至于小爱的应答速度 这个和网络 有关系就不好说了
发表于 2021-2-18 15:19 | 显示全部楼层
本帖最后由 安少 于 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:32 | 显示全部楼层
安少 发表于 2021-2-18 15:19
/***********************************************************************************************
   ...

pin2脚接一个继电器,用主板上的usb口给继电器供电,电脑开机继电器上电触点吸合,继电器常开断开,01spin2口得到一个低电平信号,给APP反馈电脑开机。关机同理,继电器触点断开了,继电器常开吸合,就给了一个高电平的信号
发表于 2021-2-19 13:43 | 显示全部楼层
不需要继电器,电脑电源有5v待机电压,直接接esp8266,找开机触点pin,给个高电平就直接开机了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 14:39 , Processed in 0.076593 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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