You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python通过串口指令控制LCTech Relay X2继电器模块

如何使用Python通过串口指令控制LCTech Relay X2继电器模块

我最近入手了这款带ESP-01 8266模块的LCTech Relay X2继电器板,折腾了一番终于能用Python通过串口指令直接控制它了,这里把我的操作步骤和经验整理出来,帮大家少踩坑:

第一步:硬件连接与端口确认

  • 用USB转TTL模块把继电器板和电脑连起来,接线要对应好:VCC接5V(别接错电压,不然容易烧模块)、GND接GND、模块的TX接USB转TTL的RX、模块的RX接USB转TTL的TX。
  • 打开电脑的设备管理器(Windows)或者用ls /dev/ttyUSB*命令(Linux/macOS),找到对应的串口端口号,比如COM3或者/dev/ttyUSB0

第二步:安装Python串口库

这款控制需要用到pyserial库,打开终端/命令提示符安装:

pip install pyserial

第三步:模块的控制指令说明

这款继电器板的MCU是通过AT风格的串口指令来控制的,我实测有效的指令如下:

  • 打开继电器1:发送指令 AT+RELAY=ON,1\r\n
  • 关闭继电器1:发送指令 AT+RELAY=OFF,1\r\n
  • 打开继电器2:发送指令 AT+RELAY=ON,2\r\n
  • 关闭继电器2:发送指令 AT+RELAY=OFF,2\r\n
  • 查询两个继电器的当前状态:发送指令 AT+RELAY=STATUS\r\n,模块会返回类似RELAY1:OFF,RELAY2:ON这样的响应

第四步:编写Python控制代码

下面是我写的一个简单示例,大家可以根据自己的需求修改:

import serial
import time

# 初始化串口连接,波特率默认是9600,端口号换成你自己的
ser = serial.Serial(
    port='COM3',  # Windows用户替换成自己的串口,Linux/macOS换成'/dev/ttyUSB0'
    baudrate=9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1  # 设置超时时间,避免一直等待响应
)

def control_relay(relay_num, state):
    """控制指定继电器的开关状态"""
    if relay_num not in [1, 2]:
        print("⚠️ 继电器编号只能是1或2哦")
        return
    if state.lower() not in ['on', 'off']:
        print("⚠️ 状态只能填ON或者OFF")
        return
    
    # 构造指令并发送
    command = f"AT+RELAY={state.upper()},{relay_num}\r\n"
    ser.write(command.encode())
    # 读取模块的响应并打印
    response = ser.readline().decode().strip()
    print(f"模块响应: {response}")

def get_relay_status():
    """查询当前两个继电器的状态"""
    ser.write("AT+RELAY=STATUS\r\n".encode())
    response = ser.readline().decode().strip()
    print(f"当前继电器状态: {response}")

# 测试示例:打开继电器1,等待2秒后关闭,再查询状态
control_relay(1, 'on')
time.sleep(2)
control_relay(1, 'off')
get_relay_status()

# 用完记得关闭串口连接
ser.close()

一些需要注意的坑

  • 接线一定要核对清楚,正负极接反很容易烧坏模块,别图快!
  • 如果发送指令后没响应,先检查波特率是不是和模块默认的一致,这款模块默认一般是9600,不行的话可以试试115200。
  • 指令末尾必须加上\r\n换行符,模块才会识别并处理你的指令。
  • 要是串口连不上,先检查USB转TTL的驱动有没有装对,或者换个USB口试试。

备注:内容来源于stack exchange,提问作者Jeff M

火山引擎 最新活动