如何使用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




