在利用樹莓派搭建移動機器人的時候,需要利用USB轉串口實現樹莓派和stm32單片機的通訊、樹莓派與激光雷達的通訊,此外樹莓派還需要通過USB連接RGB-D深度相機。然而linux是按照設備的插入順序進行編號命名的,那么就會出現一個USB端口對應錯亂的問題,導致程序與設備無法進行對應。幸運的是,我們可以通過使用設備的唯一識別碼固定端口號。
一、查詢設備ID
將設備插入樹莓派usb的端口,運行:
lsusb
結果如下:
對設備分別進行插拔以對應設備的設備號。
二、修改文件
sudo vim /etc/udev/rules.d/99-com.rules
打開文件后在最后一行添加:
KERNEL=="ttyUSB*",ATTRS{idVendor}=="1a86",ATTRS{idProduct}=="7523", MODE:=“0777”, SYMLINK+="ttyUSB1" KERNEL=="ttyUSB*",ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea60", MODE:=“0777”, SYMLINK+="ttyUSB0" KERNEL=="video*",ATTRS{idVendor}=="05e3",ATTRS{idProduct}=="0610", MODE:=“0777”, SYMLINK+="video0"
如果綁定的是串口設備,則KERNEL項寫“ttyUSB*”,如果是攝像頭設備則寫“video*”,將32位ID按順序寫入后兩項中,將預綁定的設備名稱寫入SYMLINK項中
三、重啟設備
sudo /etc/init.d/udev restart
重啟后,再次查看當前連接的攝像頭設備和串口設備,可以看到新名稱,無論之后如何插拔,只要識別到相同的設備ID,linux都會將其命名為剛剛設置的名稱。
然后就可以通過/dev/ttyUSB0等來直接訪問對應的設備