python怎样控制继电器_Python 控制220V ??? 老板,你没看错!

这是武散人著《自拍教程》(自动化测试Python教程)系列第60篇文章。

重要提醒:

本案例涉及220v危险电压上电下电测试,存在安全风险,请切勿随意尝试!!!

案例故事 很多移动终端都不带电池,都是直接电源插头供电,

比如Android电视机(220v),小米小爱同学智能音箱(220v转5v的电源转换器),智能后视镜(12v)等智能终端设备,Android家庭信息机平板(5v),

还有电饭煲,微波炉,空调,台式电脑主机等220v的家用电器也是如此。

这些电子电器设备,肯定需要涉及异常断电测试,

如果手工模拟上电下电测试,人工拔插电源插头费时费力,

其实Python + 可编程继电器,可实现“电源开关”的上电下电功能。

可编程继电器开关介绍

其实是一台支持串口通讯的继电器开关设备,

其可编程,主要是支持串口命令输入。

可考虑用这款聚英 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

准备阶段

可编程继电器是串口设备,需要pip install pyserial安装该模块

可编程继电器需要供电,及USB数据控制,及在PIN1开关口进行接线操作。

可编程继电器串口设备,需要先安装windows驱动,可以去本素材下载。

驱动成功后,可以在我的电脑设备管理器里边看到如下COM口:

可编程继电器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, 可编程继电器串口驱动包,

运行方式与效果

以上代码的3种实现形式都可以直接运行,比如保存为switch_onoff_100.py并放在桌面,

建议switch_onoff_100.py运行,当然也可以双击运行。

用220v的灯泡做的示例,每1秒开关一次灯泡,视频效果如下:

【视频上传失败,点我进入官网查看视频】

用5v的小米小爱智能音箱示例,每5秒重启一次设备,视频效果如下:

更建议用此类安全电压的测试设备做测试。

重要提醒:

由于存在安全风险,再次提醒请切勿随意尝试220v的上下电测试;

如需测试,尽量选择带电源转换器的低于24v以下安全电压的设备进行测试,

并请详细阅读继电器编程开关的使用说明书,

由于未遵守安全提醒而导致的人身或财产安全,本网站不承担任何责任。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值