【linux设置传感器串口固定名称】

问题描述

当在Linux系统中基于ROS2进行传感器驱动开发或者使用传感器进行串口数据读取的时候,总会遇到一个问题:当只有一个传感器连接的时候,很容易找出来对应的串口号比如"/dev/ttyACM0",但是当再接入另一个传感器的时候就会出现混乱了,之前的ACM0变成了ACM1 or ACM2。那么这时每次连接传感器的时候都要在代码中修改串口的名称,这是很麻烦的事情。因此,在进行一番查找后,找到了解决问题的方法。通过linux中的udev子系统给设备设置固定名字。

实现流程

  • 1. 接入传感器(这里以作者实际开发为例,AWR2944毫米波雷达与IMU两个传感器);
  • 2. 查找设备的VID、PID以及serial;
  • 3. 创建udev规则
  • 4. 重新接入传感器

具体步骤

1.使用传感器配备的USB数据线接入

2.查找

这里打开终端使用命令:

lsusb

可以看到终端会打印出我们连接的设备信息:
设备信息图其中有一个Texas Instruments的就是TI公司的AWR2944对应的信息,这里 VID=0451, PID=bef3。那么我们还差一个serial信息,下面终端使用命令:

lsusb -v -d 0451:bef3 | grep -i serial

结果如下图所示,

在这里插入图片描述
serial = RA290126。

3.创建udev规则

创建udev规则就可以通过终端命令:

sudo nano /etc/udev/rules.d/xxx.rules

这里xxx你可以根据传感器的名字来设置,小编这里就是用AWR2944_radar来代替。

然后就要填写内容了,大家可以根据查找的VID、PID和serial来写,这里小编给出模板:

 KERNEL=="ttyACM*", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="bef3", ATTRS{serial}=="RA290126", MODE:="0666", GROUP:="dialout", SYMLINK+="AWR2944_radar"

写入上面内容后,终端执行以下:

sudo udevadm control --reload-rules
sudo udevadm trigger

最后,断开传感器,然后再接入。结果如下图,这样每次接入AWR2944后就会把串口名设置为"/dev/AWR2944_radar"了,也便于后续多传感器使用。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mars@King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值