数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 5278|回复: 92

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

    [复制链接]
发表于 2020-2-12 01:57:28 | 显示全部楼层 |阅读模式

马上注册,认识更多玩家好友,查阅更多资源,享有更多功能

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

x
本帖最后由 hmj901 于 2020-2-12 12:56 编辑

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


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

自带软件

自带软件


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

MT500PRO

MT500PRO


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

USB-RS232

USB-RS232


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

协议

协议


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

ESP-01

ESP-01


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

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

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


第一步,拆机,拆掉所有螺丝
微信图片_20200211235143.jpg

注意红圈处有颗螺丝,但不容易发现
微信图片_20200211235148.jpg


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


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


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


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


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

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

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


我的代码(附件中有):
  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座子了
微信图片_20200211235151.jpg

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

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

用热熔胶固定所有焊上去的线路和板子,防止短路和乱动
微信图片_20200211235208.jpg

第八步,需要自动关机的电脑上安装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):
vspd.PNG

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


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


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

第十步,在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('')
复制代码


打赏

参与人数 26M币 +405 收起 理由
vicdoo + 20 高手 只能表示折服,我是学不会了.
woss1001 + 30 優秀文章
sckocn + 4
懒虫包子 + 20 優秀文章
newnet1234 + 20 原創內容
b280444623 + 3 優秀文章
jtcat + 22 謝謝分享
风间尘 + 20
baoshizhi + 20 優秀文章
aladdinpw + 18 優秀文章

查看全部打赏

发表于 2020-2-12 09:30:53 | 显示全部楼层
高手!很棒!!!
方案很详细~~
UPS估计是工频、梯形波输出。
回复 支持 反对

使用道具 举报

发表于 2020-2-12 09:31:30 | 显示全部楼层
高手!很棒!!!
方案很详细~~
UPS估计是工频、梯形波输出。
回复 支持 反对

使用道具 举报

发表于 2020-2-12 09:36:09 | 显示全部楼层
这么好的帖子居然无人回复?前排留名
回复 支持 反对

使用道具 举报

发表于 2020-2-12 09:42:47 | 显示全部楼层
厉害,这插孔这么斜着排布,是为了方便插头吗
回复 支持 反对

使用道具 举报

发表于 2020-2-12 10:09:05 | 显示全部楼层
大神级,感谢分享!
回复 支持 反对

使用道具 举报

发表于 2020-2-12 10:20:29 | 显示全部楼层
你们这些人就是坏,

成本RMB 10

可是你们积累的知识,技术,技能,加起来超 RMB 8000 了吧?   

其实知识是无价的~~~
回复 支持 1 反对 0

使用道具 举报

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

另外做几点补充:
1.ESP8266这个模块线路要接好,尤其是有两个引脚,一个要拉高,一个要拉低,可以参考:
https://www.cnblogs.com/neverguveip/p/9457252.html

                               
登录/注册后可看大图


2.这个山特MT500PRO的官方软件就是winpower,而且山特官网还有,我不知道为啥我当年会找不到这个软件。。太蠢了
所以由此说来,我这个方案,唯一的好处就是不用拉线了,附上官方下载地址:
http://blob.santak.com.cn/picture/Winpower_setup_Windows.zip

3.我在研究UPS协议的时候,发现了SNMP的标准协议,看看能不能把SNMP搞定,搞定了会比目前这个更稳定更通用
现在有的比较有用的资料:
https://wenku.baidu.com/view/61823381d4d8d15abe234e87.html

最后,谢谢上面顶帖的朋友!

代码.zip

1.15 KB, 下载次数: 4, 下载积分: M币 -35

打赏

参与人数 1M币 +20 收起 理由
懒虫包子 + 20 優秀文章

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

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

是的,的确是工频方波的,只能带非感性负载
家用的后备式的都是方波的,正弦波的老贵了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 10:37:12 | 显示全部楼层
crystalrxd 发表于 2020-2-12 09:42
厉害,这插孔这么斜着排布,是为了方便插头吗

如果你说的是这个UPS本身的电路的话,我个人认为一方面是节约空间,一方面是控制电路和功率电路分离,以及低压和高压分离
如果你说的是我做的那一部分的话,我是个懒人,讲究实用,怎么方便怎么来,反正在壳子里面也看不见
回复 支持 反对

使用道具 举报

发表于 2020-2-12 10:40:46 | 显示全部楼层
就是加了个wifi透传呗~

点评

看的仔细啊  详情 回复 发表于 2020-2-14 07:38
回复 支持 1 反对 0

使用道具 举报

发表于 2020-2-12 10:54:10 | 显示全部楼层
高手的形成在于行动
回复 支持 反对

使用道具 举报

发表于 2020-2-12 11:40:43 | 显示全部楼层
高手,支持这类自己动手还分享的
回复 支持 反对

使用道具 举报

发表于 2020-2-12 12:01:46 | 显示全部楼层
你这个断电了路由器WiFi还有吗?

打赏

参与人数 1M币 +6 收起 理由
zhkrid + 6 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 12:07:20 | 显示全部楼层
xlmttkl 发表于 2020-2-12 12:01
你这个断电了路由器WiFi还有吗?

路由器接在UPS上面的
回复 支持 反对

使用道具 举报

发表于 2020-2-12 12:37:52 | 显示全部楼层
高手呀!这UPS好像有网口吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 12:44:21 | 显示全部楼层
whgf 发表于 2020-2-12 12:37
高手呀!这UPS好像有网口吧?

这个网口只有防雷功能,没有管理功能
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 12:45:55 | 显示全部楼层
qrut 发表于 2020-2-12 10:40
就是加了个wifi透传呗~

老司机一眼看破
我是真的很不喜欢RS232。。。太古老了,又大
也不喜欢拉线,不拉线是最好的了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 12:47:07 | 显示全部楼层
silverliu 发表于 2020-2-12 10:20
你们这些人就是坏,

成本RMB 10

挨踢民工表示知识的确是无价的,加班才是有价的
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|关于我们|联系我们|网站条款|数码之家 ( 闽ICP备05031405号 )

GMT+8, 2020-2-23 19:04 , Processed in 0.140400 second(s), 15 queries , MemCache On.

Powered by Discuz!

© 2001-2019 Comsenz Inc.

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