Python 控制220V ??? 老闆,你沒看錯!

這是武散人著《自拍教程》(自動化測試Python教程)系列第60篇文章。python

重要提醒:
本案例涉及220v危險電壓上電下電測試,存在安全風險,請切勿隨意嘗試!!!
編程

案例故事 不少移動終端都不帶電池,都是直接電源插頭供電,
好比Android電視機(220v),小米小愛同窗智能音箱(220v轉5v的電源轉換器),智能後視鏡(12v)等智能終端設備,Android家庭信息機平板(5v),
還有電飯煲,微波爐,空調,臺式電腦主機等220v的家用電器也是如此。
這些電子電器設備,確定須要涉及異常斷電測試,
若是手工模擬上電下電測試,人工拔插電源插頭費時費力,
其實Python + 可編程繼電器,可實現「電源開關」的上電下電功能。windows


可編程繼電器開關介紹

實際上是一臺支持串口通信的繼電器開關設備,
其可編程,主要是支持串口命令輸入。
可考慮用這款聚英 DAM1600C繼電器控制,淘寶連接

建議選「USB口+USB線+外殼」 248元,「電源」15元,
由於以上USB接口是RS485的繼電器,其也是串口的一種,不容易燒掉,穩定性高不少,
RS232的串口,很容易燒掉,在給繼電器異常斷電過程當中,就很容易燒掉。
其支持16路(即16個開關,便可同時控制16臺電子電氣設備一塊兒進行上電下電操做),
另外繼電器自己是須要供電的,產品上寫的須要供7-30v的電便可,
通常建議用12v 2A的充電頭(即電源)給繼電器供電便可,
根據產品介紹,是最高支持250V 10A上電下電操做的,
好比Android智能電視機,普通家用電器等,用的都是是220v的電壓。
可是...這畢竟是上電下電220v的電壓,非必要請切勿嘗試220v的上下電,
如實在是測試任務須要,請各位測試的同窗務必注意自身安全!
安全

我更建議在低於24V的如下研發設備上作上電下電測試:微信

測試設備名稱 電壓
車載設備,車載電信號
(好比acc on,CAN-High信號等)
大部分車是12V
少數車輛是24V
筆記本電腦(已用電源轉換器) 20V
手機設備,智能音響筆記本電腦
(已用電源轉換器)
5V

準備階段
  1. 可編程繼電器是串口設備,須要pip install pyserial安裝該模塊
  2. 可編程繼電器須要供電,及USB數據控制,及在PIN1開關口進行接線操做。
  3. 可編程繼電器串口設備,須要先安裝windows驅動,能夠去本素材下載。
    驅動成功後,能夠在個人電腦設備管理器裏邊看到以下COM口:
  4. 可編程繼電器DAM1600C的配套的調試,能夠查看操做系的具體的串口信號輸入輸出,能夠去本素材下載。


Python批處理腳本形式

記住批處理腳本的精髓:批量順序執行語句,
因爲是16進制,在Python這邊0x表示16進制數,是數字,因此未加雙引號。函數

# coding=utf-8

import os
import time
import serial

# 第一步:定義本模塊(本.py文件)須要用到的變量
com_id = "COM24"
pin1_on = [0xFE, 0x05, 0x00, 0x00, 0xFF, 0x00, 0x98, 0x35]
pin1_off = [0xFE, 0x05, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xC5]

# 第二步:New一個串口開關設備對象,綁定指定COM口
switch_obj = serial.Serial(com_id, baudrate=9600)

# 第三步:反覆進行串口開關設備打開和關閉100次
for i in range(100):
    print("正在進行第%s次設備異常上電/斷電測試" % i)
    switch_obj.write(pin1_on)
    switch_obj.read()
    time.sleep(1)
    switch_obj.write(pin1_off)
    switch_obj.read()
    time.sleep(1)

# 第四步:關閉窗口開關設備對象
switch_obj.close()

os.system("pause")

Python面向過程函數形式

面向過程函數的編程思惟應該是這樣的:
你須要多少個功能(函數),才能作成這個事。
最好把功能(函數)都儘可能封裝好,只暴露一些的參數接口便可。測試

# coding=utf-8

import os
import time
import serial


def switch_pin1_on(switch):
    switch.write([0xFE, 0x05, 0x00, 0x00, 0xFF, 0x00, 0x98, 0x35])
    switch.read()


def switch_pin1_off(switch):
    switch.write([0xFE, 0x05, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xC5])
    switch.read()


# 第一步:定義本模塊(本.py文件)須要用到的變量
com_id = "COM24"

# 第二步:New一個串口開關設備對象,綁定指定COM口
switch_obj = serial.Serial(com_id, baudrate=9600)

# 第三步:反覆進行串口開關設備打開和關閉100次
for i in range(100):
    print("正在進行第%s次設備異常上電/斷電測試" % i)
    switch_pin1_on(switch_obj)
    time.sleep(1)
    switch_pin1_off(switch_obj)
    time.sleep(1)

# 第四步:關閉窗口開關設備對象
switch_obj.close()

os.system("pause")

Python面向對象類形式

面向對象類的編程思惟應該是這樣的:
若是給你一個空白的世界,在這個世界裏你須要哪些種類的事物,
這些種類的事物都具有哪些共有的屬性與方法,
這些種類(類)的事物(對象),和其餘種類(其餘類)的事物(其餘對象)有什麼關係。
儘可能把這些類封裝好,只暴露對外的屬性(變量)和方法(函數)便可。網站

# coding=utf-8

import serial
import time

# 定義本模塊(本.py文件)須要用到的變量
com_id = "COM24"


class SerialSwitch(object):
    def __init__(self, com_id):
        self.s_obj = serial.Serial(com_id, baudrate=9600)

    def switch_pin1_on(self):
        self.s_obj.write([0xFE, 0x05, 0x00, 0x00, 0xFF, 0x00, 0x98, 0x35])
        self.s_obj.read()

    def switch_pin1_off(self):
        self.s_obj.write([0xFE, 0x05, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xC5])
        self.s_obj.read()

    def switch_pin2_on(self):
        pass

    def switch_pin2_off(self):
        pass

    def close(self):
        self.s_obj.close()


if __name__ == '__main__':
    switch_obj = SerialSwitch(com_id)
    for i in range(100):
        print("正在進行第%s次設備異常上電/斷電測試" % i)
        switch_obj.switch_pin1_on()
        time.sleep(1)
        switch_obj.switch_pin1_off()
        time.sleep(1)
    os.system("pause")

本案例素材下載

包括:1600C可編程繼電器調試控制軟件.exe, 可編程繼電器串口驅動包,
跳轉到官網下載本素材
武散人出品,請放心下載!

3d

運行方式與效果

以上代碼的3種實現形式均可以直接運行,好比保存爲switch_onoff_100.py並放在桌面,
建議switch_onoff_100.py運行,固然也能夠雙擊運行。
用220v的燈泡作的示例,每1秒開關一次燈泡,視頻效果以下:
【視頻上傳失敗,點我進入官網查看視頻】調試

用5v的小米小愛智能音箱示例,每5秒重啓一次設備,視頻效果以下:
更建議用此類安全電壓的測試設備作測試。

【視頻上傳失敗,點我進入官網查看視頻】


重要提醒

因爲存在安全風險,再次提醒請切勿隨意嘗試220v的上下電測試;
如需測試,儘可能選擇帶電源轉換器的低於24v如下安全電壓的設備進行測試,
並請詳細閱讀繼電器編程開關的使用說明書,
因爲未遵照安全提醒而致使的人身或財產安全,本網站不承擔任何責任。


更多更好的原創文章,請訪問官方網站:www.zipython.com
自拍教程(自動化測試Python教程,武散人編著)
原文連接:https://www.zipython.com/#/detail?id=a97bdfe6dd5f453fa455b8409a468f47
也可關注「武散人」微信訂閱號,隨時接受文章推送。

相關文章
相關標籤/搜索