数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 19775|回复: 109

[外设] 不到10块钱,山特不间断电源MT500 PRO改WIFI管理,实现电脑停电自动关机

    [复制链接]
发表于 2020-2-12 01:57:28 | 显示全部楼层 |阅读模式
本帖最后由 hmj901 于 2020-2-12 12:56 编辑

先给大家问个好,上大学开始潜水数码之家,工作之后很忙,便也没有发过帖子。今年受疫情影响,公司远程办公(工作性质原因基本等于没事做),终于得空整理一下,发个帖子。


前几天花170块钱买了个某品牌的UPS,自带USB管理,配套的软件也很全面,支持自动关机啥的,避免广告嫌疑,具体就不表了


看到配套软件支持串口,想起吃灰的山特MT500 PRO(当年因为没找到配套软件没弄成自动关机就吃灰了),也带了个RS232串口,不知道支不支持


于是又翻出来一根上古USB转RS232,这个线是真的丑,而且驱动还不好找,还好WIN10免驱


试了试还真的可以用那个软件!抽了根烟想了想,这就是个串口,手头也有几块ESP8266闲置着,能不能用ESP8266连到WIFI去接入网络然后做网络管理呢?查了查资料,找到不少关于这个通信协议的,都试了试,发现是下面这个(比特率2400):
https://wenku.baidu.com/view/60c25777b9d528ea80c77978.html


手上的ESP8266就是这种,5块多还包邮的ESP-01,避免广告,商店信息去掉了


简直就是绝配!虽然这个板子IO缩的不行,基本就一个硬件串口可以用,但是用来接这个UPS是刚刚好,还自带WIFI

话不多说,开始讲过程。由于我是弄完了再整理的,大家就将就看吧,我照着操作顺序说,供大家参考一下

需要准备:
1.ESP8266一块
2.USB转TTL模块(给ESP8266刷固件用)
3.AMS1117-3.3一块(给ESP8266提供电源,没有可以用DC-DC降压模块)
4.导线等常用物料
5.烙铁焊锡剪刀万用表等工具


第一步,拆机,拆掉所有螺丝


注意红圈处有颗螺丝,但不容易发现



第二步,切断原有的串口RS232电压转换线路(红圈处),以防影响ESP8266和UPS的MCU通信



第三步,在控制板上焊上AMS1117,能并联一个电容最好,控制板是立起来插着的那块板,上面有个6P座子是连接前面板的开关和指示灯的,图中圈出来了,左一常通12V电池正极,左二在开机开关按下的时候通12V,那就用这个脚做供电正极,负极在板子上用万用表随便打找一个,和电池负极通就行。忽略我的渣渣焊工哈哈



第四步,焊上串口线,如图,有实机的拆客们应该能辨认出来(这俩脚我用万用表找了半天)



第五步,裁一块万用板,把线焊上万用板,再整个双排4P的座子,连接ESP8266,下面的图中,黑色负极,红色3.3V,白色TX,黄色RX。还有一点注意的是把ESP8266的一个脚上拉,用导线或者电阻都行




第六步,电脑上准备好Arduino for ESP8266的环境,具体可以参照下面这个链接
https://blog.csdn.net/chenchen2360060/article/details/84838788

用然后在arduino安装如下这个wifiManager库,看清楚作者,不要安装错了


ESP8266用USB转TTL连接电脑,连之前上面一张图中上面一排的右二脚要接地进入刷写模式,arduino新建一个项目,粘贴我的代码,上传配置如下,主要是框出来的俩,端口要改成你ESP8266的串口,给ESP8266传上代码



我的代码(附件中有):
  1. #include <ESP8266WiFi.h>
  2. #include <DNSServer.h>
  3. #include <ESP8266WebServer.h>
  4. #include <WiFiManager.h>

  5. #define PERIOD 1000   //检测间隔,单位为毫秒

  6. String upsinfo = "Starting";
  7. unsigned long t = 0;

  8. WiFiServer ser(80);

  9. void updateUpsInfo() {
  10.   
  11.   Serial.println("Q1");
  12.   delay(10);
  13.   if (Serial.available() > 0) {
  14.     delay(20);
  15.     upsinfo = Serial.readStringUntil('\r');
  16.   }
  17.   t = millis();
  18. }

  19. void handleHttp() {
  20.   WiFiClient client = ser.available();
  21.   while (client.available()) {
  22.     client.read();
  23.   }
  24.   client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n"));
  25.   client.print(upsinfo);
  26. }

  27. void setup() {

  28.   WiFiManager wifiManager;

  29.   wifiManager.autoConnect("ESP_UPS");

  30.   ser.begin();

  31.   Serial.begin(2400);
  32.   Serial.flush();
  33. }

  34. void loop() {
  35.   if (t > millis()) {
  36.     t = 0;
  37.   }
  38.   else if (t + PERIOD < millis()) {
  39.     updateUpsInfo();
  40.   }
  41.   handleHttp();
  42. }
复制代码


第七步,把ESP8266插上焊好的座子,然后开UPS试机(注意安全,不要摸到高压部分),我没有电池只能接12V座子了:lol:


开机之后,ESP8266应该会启动并发射名为ESP_UPS的无密码的WIFI热点,手机连上,如图配置ESP8266的WIFI,如果没有检查一下连线之类的有没有问题




去路由器看一下ESP8266获取的IP是哪一个,并设置成固定IP,以后ESP8266只要连接这个WIFI就会默认获取这个IP,大家的路由器不一样就不细表。我这里是192.168.119.24,用电脑浏览器打开,应该能看到数据:


用热熔胶固定所有焊上去的线路和板子,防止短路和乱动


第八步,需要自动关机的电脑上安装winpower(UPS管理软件,后面找到的,不用注册,我买的UPS带的那个要注册码)、VSPD虚拟串口、python,其中python还要安装pyserial和requests这两个库,如果你没有装过python,就需要先安装python,再安装pip,然后在命令行窗口下面输入:

pip install pyserial
pip install requests


winpower下载地址:http://mydown.yesky.com/pcsoft/413547207.html
VSPD下载地址:http://www.3322.cc/soft/28771.html

VSPD安装好之后打开,新建一对串口就可以关掉了(我用的是COM10和COM11):


然后新建一个python文件,.py的后缀名,粘贴如下代码,IP地址改成你的ESP8266的,还有COM口要改一下,如果上一步你用的不是10和11的话:
尝试了引用的python代码显示出来的格式有问题,所以代码放在附件中了


保存并用python运行,应该不会报错,如果报错就检查一下python的环境是否有问题


第九步,运行python脚本,不要退出它,然后打开UPS,如果你试机的时候设置了WIFI,它就会自动连接WIFI,然后,打开安装好的winpower,没有弹出对话框的话就去任务栏点那个绿色插头,然后点系统-->成为管理员,提示输入密码,实际上没有密码,直接点确定,然后再点系统,自动搜索设备,它就会自动搜索出COM10的设备了,然后就可以正常使用了




第十步,在winpower设置自动关机,再把这个python脚本加进启动项,就可以长期使用了,市电断了会自动关机,就不细表了,网上有各种方法,例如下面这个
https://blog.csdn.net/Game_jqd/article/details/86707836




总结:
该方案的优点:
1.对于MT500PRO这个机子来说,成本低,买一根USB转RS232的线也得十几块钱
2.相比直接用串口,这个方案可以支持更多的机器一起自动关机
3.ESP8266的代码稍加修改可以支持到其他的UPS机器,没有串口的都行,有一个GPIO能检测UPS是不是在电池状态就行了,如果在电池状态就按照协议WEB输出电池状态的数据,就能帮助电脑自动关机了


以上就是所有内容,供大家参考,欢迎交流,搞了一天,现在终于写完帖子了,太晚了,要睡了,毕竟明天还上班呢哈哈哈


-------------------------重新编辑了一下,给加上了python代码,个人觉得这点渣渣代码不值35M币,之前是没找到插入代码的按钮---------------------------------
  1. # -*- coding:utf-8 -*-
  2. import serial
  3. import requests
  4. import time


  5. url = 'http://192.168.119.24'

  6. ser = serial.Serial('com11', 2400, timeout=0.1) #com10改成自己的
  7. data=''
  8. err_c=0
  9. last_t=0


  10. while True:
  11.   try:
  12.     key=ser.readline()
  13.     if key=='Q1\r':
  14.       info=(data+'\r').encode()
  15.       ser.write(info)
  16.     now_t=time.time()
  17.     if now_t-last_t>1:
  18.       try:
  19.         req = requests.get(url,timeout=0.1)
  20.         data=req.text
  21.         err_c=0
  22.         now_t=time.time()
  23.       except:
  24.         if err_c==5:
  25.           data=''
  26.         else:
  27.           err_c+=1
  28.   except:
  29.     print('')
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 28家元 +434 收起 理由
沙漠臭屁虫 + 20
学者无限 + 9
vicdoo + 20 高手 只能表示折服,我是学不会了.
woss1001 + 30 優秀文章
sckocn + 4
懒虫包子 + 20 優秀文章
newnet1234 + 20 原創內容
b280444623 + 3 優秀文章
jtcat + 22 謝謝分享
风间尘 + 20

查看全部打赏

发表于 2023-6-16 15:31:03 | 显示全部楼层
现在用ups的家庭不算多,毕竟停电概率大大降低了。对有数据保存要求的应该还配备有。谢谢楼主,确实如楼主所言,可以实现一个ups保护多台电脑了
回复 支持 反对

使用道具 举报

发表于 2023-6-13 15:44:28 | 显示全部楼层
大神的这个改装软硬件通吃啊,厉害。
回复 支持 反对

使用道具 举报

发表于 2022-6-28 10:34:37 | 显示全部楼层
动手大神呐,厉害!!!!
回复 支持 反对

使用道具 举报

发表于 2022-6-27 21:02:16 来自手机浏览器 | 显示全部楼层
做个手机端程序或web 8266服务器不香么
回复 支持 反对

使用道具 举报

发表于 2022-1-13 14:43:22 | 显示全部楼层
我的天啊~好强啊!一直有这个需求,早知道就好了,现在买了一个全新自带这个功能的UPS
回复 支持 反对

使用道具 举报

发表于 2022-1-10 16:58:18 | 显示全部楼层
天使之音 发表于 2020-2-12 09:31
高手!很棒!!!
方案很详细~~
UPS估计是工频、梯形波输出。

现在都是开关电源,什么波都无所谓。
回复 支持 反对

使用道具 举报

发表于 2021-12-22 09:58:55 | 显示全部楼层
高手,支持这类自己动手
回复 支持 反对

使用道具 举报

发表于 2021-11-23 21:33:08 | 显示全部楼层
涨价了  8块了  8266模块
回复 支持 反对

使用道具 举报

发表于 2021-9-2 23:20:53 来自手机浏览器 | 显示全部楼层
佩服,学习了
回复 支持 反对

使用道具 举报

发表于 2020-4-15 22:40:52 来自手机浏览器 | 显示全部楼层
小白前来学习。谢谢分享
回复 支持 反对

使用道具 举报

发表于 2020-4-14 18:46:05 | 显示全部楼层
什么都能改,我也有个老的不知道能用不能。
回复 支持 反对

使用道具 举报

发表于 2020-4-11 21:38:36 来自手机浏览器 | 显示全部楼层
真是高手,:smile:学习好多知识
回复 支持 反对

使用道具 举报

发表于 2020-3-23 09:16:45 来自手机浏览器 | 显示全部楼层
支持大神,多发动手实倒
回复 支持 反对

使用道具 举报

发表于 2020-3-16 17:25:27 来自手机浏览器 | 显示全部楼层
真真的高手!膜拜你。。。。
回复 支持 反对

使用道具 举报

发表于 2020-3-8 20:20:29 来自手机浏览器 | 显示全部楼层
非常好的贴,学到很多东西!
回复 支持 反对

使用道具 举报

发表于 2020-3-2 01:51:24 | 显示全部楼层
hmj901 发表于 2020-2-12 10:21
一觉起来,加精了,感谢感谢
看了眼传的附件要扣35M币,不想在上面编辑了,就直接贴到这一楼吧

支持SNMP的话可以接入Zabbix 统一管理比较香
回复 支持 反对

使用道具 举报

发表于 2020-3-1 18:53:10 | 显示全部楼层
不到10块钱,山特不间断电源MT500 PRO改WIFI管理,实现电脑停电自动关机 :smile:
回复 支持 反对

使用道具 举报

发表于 2020-3-1 18:27:57 来自手机浏览器 | 显示全部楼层
高手,我的APC的UPS用usb控制都不能自动关机:sweat:
回复 支持 反对

使用道具 举报

发表于 2020-2-26 22:21:13 来自手机浏览器 | 显示全部楼层
高手,你这单片机啥都会搞啊。也有个朋友也会写单片机,喜欢搞各种电器,介绍他进来看看。
回复 支持 反对

使用道具 举报

发表于 2020-2-22 22:25:25 | 显示全部楼层
这个不就是加了个wifi串口而已
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-13 20:49 , Processed in 0.390001 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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