You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python与Arduino串口通信:判断字符串匹配执行任务问题求助

Arduino与Python串口通信稳定实现示例及问题排查

Arduino端代码(稳定接收版)

const int ledPin = 13;
String receivedStr;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  // 等待串口就绪(适配部分自动重启的板型)
  while (!Serial) {
    ;
  }
}

void loop() {
  if (Serial.available() > 0) {
    // 读取到换行符为止,避免截断完整指令
    receivedStr = Serial.readStringUntil('\n');
    // 去除首尾空白(换行、空格等),避免格式干扰匹配
    receivedStr.trim();
    
    // 匹配指定字符串执行动作
    if (receivedStr == "TURN_ON") {
      digitalWrite(ledPin, HIGH);
      Serial.println("LED已点亮"); // 回传确认信息,方便验证
    } else if (receivedStr == "TURN_OFF") {
      digitalWrite(ledPin, LOW);
      Serial.println("LED已熄灭");
    }
    // 清空缓存,避免残留旧数据影响下一次判断
    receivedStr = "";
  }
}

Python端发送代码(基于pyserial)

先确保安装依赖:pip install pyserial

import serial
import time

# 串口参数需和Arduino完全匹配,端口号根据自身设备调整
ser = serial.Serial(
    port='COM3',  # Windows一般是COMx,Linux/Mac是/dev/ttyUSB0或/dev/ttyACM0
    baudrate=9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
)

# 等待Arduino重启(串口连接时Uno会自动重启,需预留2-3秒缓冲时间)
time.sleep(3)

def send_command(cmd):
    # 追加换行符,和Arduino端的读取逻辑对齐
    ser.write((cmd + '\n').encode('utf-8'))
    # 读取Arduino回传,验证指令是否被正确处理
    response = ser.readline().decode('utf-8').strip()
    print(f"Arduino回应: {response}")

# 测试指令
send_command("TURN_ON")
time.sleep(2)
send_command("TURN_OFF")

ser.close()

常见问题排查思路

  • 波特率不匹配:Python和Arduino的baudrate必须完全一致,哪怕差一个数值都会导致乱码或接收失败。
  • 串口端口错误:通过设备管理器(Windows)或ls /dev/tty*(Linux/Mac)确认Arduino对应的端口,不要凭猜测填写。
  • 忽略Arduino重启延迟:Python打开串口后,Uno会自动重启,直接发送数据会丢失第一帧,必须等待2-3秒再发送。
  • 字符串格式不一致:两边要约定统一的结束符(比如换行\n),Python发送时必须追加,Arduino用readStringUntil('\n')读取,同时用trim()清理空白字符,避免因格式差异导致匹配失败。
  • 串口缓存残留:Arduino端每次处理完指令要清空接收字符串;Python端可在发送前调用ser.flushInput()清空输入缓存。
  • 硬件接触不良:更换质量可靠的USB线,避免因接触问题丢包;CH340芯片的板型要确保驱动安装正确。
  • 用串口监视器验证:先通过Arduino自带的串口监视器发送指令,若LED触发仍不稳定,说明是Arduino代码问题;若监视器正常,则问题出在Python端。

内容的提问来源于stack exchange,提问作者Garberchov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:46:18