ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

可编程串口控制集电极板:四个继电器

可编程串口控制集电极板:四个继电器 WiFi控制的继电器板WiFi串口功率Hub模块AD\Test\2026\October\RelayCNTMEGA8.SchDocD:\zhuoqing\window\Atmel\test\2026\October\RelayCntMEGA8\main.c01【串口控制继电器】一、电路设计物料调试一个功率电路 下面制作一个自动控制继电器板 黑芯片使用手边比较多的麦克8单片机 4个继电器都是单刀双制类型 他们也可以通过板上的按键进行切换状态 当然最重要的是通过串口来完成编程自动控制 铺设单面PCB适合一分钟制板一分钟之后得到。 这个自动控制继电器板。 焊接电路板起重继电器由于比较密集 需要使用尖头烙铁对它下面的管脚进行焊接。 插进去之后编写相应的控制程序来完成继电器的状态设置。二、控制协议通过串口控制协议来控制继电器板上继电器的状态 串口的波特率为115200 一个命令由三个字节组成 第1个字节和第3个字节 分别为0x55和0xaa 代表着控制命令数据帧的帧头和帧尾。 中间的一个字节用于控制继电器的状态 这个字节的高4位代表着操作功能 分别有4种操作功能 第1个操作功能是根据后4位分别设置4个继电器状态 对应位0至3位分别对应的基年级一到四。 如果该位为一对应的继电器闭合 为零的位对应继电器断开。 第2个功能是设置继电器闭合 对应闭电器对应位如果为一的话 进行闭合如果为0的话保持原来的状态。 与此对应的就是继电器断开 后4位中为1的位对应的继电器断开 如果为0对应的继电器状态保持不变 第4个功能就是切换连接状态 为一位对应的继电器状态切换 为0的位对应继电器状态保持不变。 经过测试这些串口命令工作正常。波特率115200格式0x55 RELAY 0xaaRELAY一个字节 高四位 操作码 第四位 对应四个继电器。操作码功能说明0x00设置状态设置四个继电器的状态1闭合0断开0x10闭合继电器继电器闭合0x20断开继电器继电器断开0x30切换继电器继电器的状态切换0x400x500x600x700x800x900xa0继电器点动继电器闭合50毫秒至5000毫秒。0x40:50ms, 0x50:100ms, 0x60:200ms0x70:500ms, 0x80:0x1000ms0x90:2000, 0xa0:0x5000ms#!/usr/local/bin/python# -*- coding: gbk -*-## TEST1.PY -- by Dr. ZhuoQing 2026-10-01## Note:#fromheadmimport*importserialfrom_astimportOrfromserial.serialutilimportSerialException#------------------------------------------------------------Relayserial.Serial()Relay.baudrate115200Relay.timeout0.05try:Relay.portCOM9except:printf(Set Relay port COM9 error. )try:Relay.open()exceptserial.serialutil.SerialException:printf(Open Relay port COM9 error.)else:printf(Open Relay port COM9 Ok.)#------------------------------------------------------------Relay.write(b\x55\x3f\xaa)#------------------------------------------------------------printf(\a)#------------------------------------------------------------# END OF FILE : TEST1.PY#三、WiFi串口用一个WIFI转串口模块来控制继电器 这个模块之前很久就是设计的 它在局域网内的地址是192.168.0.183 对应的端口为8899这是一个UDP端口 通过像这个端口发送UDP数据包 可以将它对应的数据转换成串口发送 串口发送的字节波特率为115200 经过测试可以看到WIFI转串口模块工作正常 能够通过网络对继电器模块进行控制。 至此这块用于控制的建立记忆板工作正常了 下面给他喷涂三防漆放在一个盒子里 这样便可以用于将来的实验了。#!/usr/local/bin/python# -*- coding: gbk -*-## TEST2.PY -- by Dr. ZhuoQing 2026-10-01## Note:#fromheadmimport*importsocketimportsocketimportsocket#------------------------------------------------------------UDP_HOST192.168.0.183UDP_PORT8899UDP_BUFSIZE0x1000Relaysocket.socket(socket.AF_INET,socket.SOCK_DGRAM)Relay.setsockopt(socket.SOL_SOCKET,socket.SO_SNDBUF,UDP_BUFSIZE)Relay.settimeout(0.2)defRelaysend(data):ADDR(UDP_HOST,UDP_PORT)iftype(data)!str:datastr(data)databytes(data,gbk)Relay.sendto(data,ADDR)defRelaysendBytes(data):ADDR(UDP_HOST,UDP_PORT)Relay.sendto(data,ADDR)defRelayrecv():try:data,ADDRRelay.recvfrom(UDP_BUFSIZE)exceptsocket.timeout:dataiflen(data)0:returndata.decode(utf-8)else:returndefRelayval():Relaysend(MEMOS)splitstrRelayrecv().split( )data[]forvalinsplitstr:iflen(val)0:data.append(eval(val))returndata#------------------------------------------------------------RelaysendBytes(b\x55\x3f\xaa)printf(\a)#------------------------------------------------------------# END OF FILE : TEST2.PY#※总结 ※本文设计制作了这个串口控制的接地板 用于将来的实验电路 在对应的CSDn波文中给出了通过WIFI转串口控的命令。#!/usr/local/bin/python# -*- coding: gbk -*-## TEST1.PY -- by Dr. ZhuoQing 2026-10-01## Note:#fromheadmimport*importsocketimportsocket#------------------------------------------------------------UDP_HOST192.168.0.183UDP_PORT8899UDP_BUFSIZE0x1000relaysocket.socket(socket.AF_INET,socket.SOCK_DGRAM)relay.setsockopt(socket.SOL_SOCKET,socket.SO_SNDBUF,UDP_BUFSIZE)relay.settimeout(0.2)defrelaysend(data):ADDR(UDP_HOST,UDP_PORT)# if type(data) ! str:# data str(data)# data bytes(data, gbk)relay.sendto(data,ADDR)defrelayrecv():try:data,ADDRrelay.recvfrom(UDP_BUFSIZE)exceptsocket.timeout:dataiflen(data)0:returndata.decode(utf-8)else:returndefrelayval():relaysend(MEMOS)splitstrrelayrecv().split( )data[]forvalinsplitstr:iflen(val)0:data.append(eval(val))returndata#------------------------------------------------------------defrelayon(r):ifr1:data0x1elifr2:data0x2elifr3:data0x4elifr4:data0x8else:data0x0data0x10data relaysend(bytes([0x55,data,0xaa]))defrelayoff(r):ifr1:data0x1elifr2:data0x2elifr3:data0x4elifr4:data0x8else:data0x0data0x20data relaysend(bytes([0x55,data,0xaa]))defrelaytoggle(r):ifr1:data0x1elifr2:data0x2elifr3:data0x4elifr4:data0x8else:data0x0data0x30data relaysend(bytes([0x55,data,0xaa]))defrelayset(r):datar0xfrelaysend(bytes([0x55,data,0xaa]))defrelayclick(r,delay):opcode0ifdelay100:delay50elifdelay100anddelay200:delay100elifdelay200anddelay500:delay200elifdelay500anddelay1000:delay500elifdelay1000anddelay2000:delay1000elifdelay2000anddelay5000:delay2000else:delay5000ifdelay50:opcode0x40elifdelay100:opcode0x50elifdelay200:opcode0x60elifdelay500:opcode0x70elifdelay1000:opcode0x80elifdelay2000:opcode0x90elifdelay5000:opcode0xa0else:opcode0x40opcodeopcoder relaysend(bytes([0x55,opcode,0xaa]))#------------------------------------------------------------for_inrange(100):relayclick(0x1,200)time.sleep(2)#------------------------------------------------------------#------------------------------------------------------------# END OF FILE : TEST1.PY#■ 相关文献链接:WiFi串口功率Hub模块
返回列表