树莓派通过usb接口与各种模块通信(传感器,通信转换模块,控制器)

在树莓派上,ttyUSB* 这类串口设备的编号在每次重启或者设备插拔后可能会发生变化,这是因为系统会根据设备的插入顺序动态分配编号。为了固定串口号,可以通过以下几种方法实现。一共有两种方法,一种是使用设备唯一标识符,一种是根据物理位置,两种方法各有优劣。如果说你的usb外设较多,或者使用了拓展坞扩展usb接口,且不用批量生产,建议使用方法一,他是识别插入模块的标识符实现串口编号的固定;如果你的产品要批量生产,由于每个外设的唯一标识符不一样,即使相同的两个传感器他们的标识符也不一样,为了便于批量生产安装,我们一般选择通树莓派上usb的位置(树莓派4B有4个usb接口)来固定他们的串口编号,后续只需要把外设插入到固定的usb口即可。

方法一:使用设备的唯一标识符(推荐)

每个 USB 设备都有一个唯一的标识符,你可以通过设备的 idVendor 和 idProduct 以及其他信息来创建一个指向特定串口设备的符号链接。

步骤:
  1. 查找设备的唯一标识符
    使用 lsusb 命令查看所有连接的 USB 设备及其 idVendor 和 idProduct

bash

lsusb

这会列出所有 USB 设备,找到你的串口设备对应的行,例如:

plaintext

Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC

这里 0403 是 idVendor6001 是 idProduct

  1. 查找设备的路径
    使用 udevadm 命令查找设备的具体路径:

bash

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)

将 /dev/ttyUSB0 替换为你的串口设备名称。在输出中查找 ATTRS{idVendor} 和 ATTRS{idProduct} 以确认是你要找的设备,同时注意 ATTRS{serial} 字段,它可能包含设备的序列号,这也是一个唯一标识。

  1. 创建 udev 规则
    创建一个新的 udev 规则文件,例如 /etc/udev/rules.d/99-usb-serial.rules

bash

sudo nano /etc/udev/rules.d/99-usb-serial.rules

在文件中添加以下内容:

plaintext

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyUSB_MYDEVICE"

将 idVendor 和 idProduct 替换为你实际设备的值,ttyUSB_MYDEVICE 是你想要创建的符号链接名称。

  1. 重新加载 udev 规则

bash

sudo udevadm control --reload-rules
sudo udevadm trigger

现在,无论设备的 ttyUSB* 编号如何变化,你都可以通过 /dev/ttyUSB_MYDEVICE 来访问该串口设备。

方法二:根据设备的物理位置

如果设备的物理连接位置相对固定,你可以根据设备在 USB 总线中的位置来创建规则。

步骤:
  1. 查找设备的物理位置
    使用 udevadm 命令:

bash

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0) | grep "looking at device"

将 /dev/ttyUSB0 替换为你的串口设备名称。输出中会显示设备的物理位置信息,例如 1-1.3

  1. 创建 udev 规则
    编辑 /etc/udev/rules.d/99-usb-serial.rules 文件,添加以下内容:

plaintext

SUBSYSTEM=="tty", ATTRS{busnum}=="1", ATTRS{devpath}=="1.3", SYMLINK+="ttyUSB_MYDEVICE"

将 busnum 和 devpath 替换为你实际设备的值,ttyUSB_MYDEVICE 是你想要创建的符号链接名称。

  1. 重新加载 udev 规则

bash

sudo udevadm control --reload-rules
sudo udevadm trigger

这样,你就可以通过 /dev/ttyUSB_MYDEVICE 来稳定地访问该串口设备了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值