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

如何通过Arduino蓝牙模块向PC的Python脚本实时传输FSR数据?

解决FSR数据通过蓝牙从Arduino传输到Windows Python脚本的问题

我来帮你搞定这个蓝牙传输的问题,先从Arduino代码和Python脚本的修改说起,再给你提几个关键注意事项:

一、Arduino端(FSR+LinkSprite蓝牙屏蔽板)代码修改

LinkSprite蓝牙屏蔽板本质是通过串口与Arduino通信,核心要确保蓝牙模块的串口参数和代码匹配。你的原FSR代码逻辑没问题,只需要做小调整并注意上传细节:

修改后的Arduino代码:

const int fsrAnalogPin = A0;
int fsrReading;

void setup(void) {
  // 蓝牙模块默认波特率多为9600,和这里保持一致即可
  Serial.begin(9600);
  // 多数LinkSprite蓝牙板默认是透传模式,无需额外设置AT指令
}

void loop(void) {
  fsrReading = analogRead(fsrAnalogPin);
  int num = fsrReading / 3;
  // 两种发送方案可选:
  // 方案1(推荐):只发送纯数值,方便Python端解析
  Serial.println(num);
  // 方案2:保持原带描述的字符串格式
  // Serial.print("Analog reading = ");
  // Serial.println(num);
  delay(50);
}

注意:上传代码时容易因为蓝牙模块占用串口导致失败,解决方法:

  • 先把蓝牙屏蔽板从Arduino上拔下来,上传完代码再插回去
  • 若蓝牙板有模式开关,切换到"Program"模式上传,完成后切回"Bluetooth"模式

二、Python端脚本修改

你的原脚本逻辑正确,但有几个坑必须修正:

  1. 蓝牙配对后Windows会分配新的COM口,不是原来的USB串口(比如你写的COM4),要去设备管理器找"Bluetooth Serial Port"对应的COM号
  2. 要处理串口读取的编码和空数据问题,避免乱码或卡死
  3. 加入异常处理,防止断开连接时程序崩溃

修改后的Python脚本:

import serial
import time

# 替换成你蓝牙串口的实际COM号,比如COM6
bluetooth_port = 'COM6'
baud_rate = 9600

try:
    # 初始化串口,添加超时时间避免无数据时卡死
    serial_bt = serial.Serial(bluetooth_port, baud_rate, timeout=1)
    print(f"已成功连接蓝牙串口 {bluetooth_port}")
    
    while True:
        # 读取一行数据,解码为字符串并去掉首尾换行/空格
        value_read = serial_bt.readline().decode('utf-8').strip()
        # 只打印有效非空数据
        if value_read:
            # 如果用方案1的纯数值,可转成整数输出
            # print(f"FSR处理后数值:{int(value_read)}")
            # 如果用方案2的字符串,直接打印
            print(f"收到数据:{value_read}")
        time.sleep(0.05)  # 和Arduino的delay对应,降低CPU占用

except serial.SerialException as e:
    print(f"串口连接失败:{e}")
    print("请检查蓝牙COM号是否正确,或蓝牙是否已配对成功")
except KeyboardInterrupt:
    print("程序已手动停止")
finally:
    if 'serial_bt' in locals() and serial_bt.is_open:
        serial_bt.close()
        print("蓝牙串口已关闭")

三、必做的前置操作

  • 蓝牙配对:在Windows设置里搜索LinkSprite蓝牙模块(通常名称是HC-05或LinkSprite Bluetooth),完成配对后去设备管理器查看分配的COM号
  • 波特率校验:确保Arduino代码的波特率和蓝牙模块的默认波特率一致(默认9600,若之前修改过蓝牙模块波特率,要同步修改代码里的数值)

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

火山引擎 最新活动