2016-12-15 28 views
1

我使用兩個Arduino Nano,並且想要更改它們的名稱,如/dev中所列,因爲目前它們始終是ttyUSB<NUMBER>如何獲得每個Arduino的唯一ID

我怎樣才能得到一個唯一的序列號來創建一個udev規則?

我試圖通過udevadm得到它,但它爲兩個Arduinos返回相同的序列號。

/var/log: udevadm info -a -n /dev/ttyUSB0 | grep '{serial}' 
    ATTRS{serial}=="0000:00:14.0" 

回答

1

Arduino Nano基於ATmega328,它沒有內置的USB控制器。電路板上的USB連接器連接至外部USB至TTL轉換器IC。因此,您在PC端看到的所有USB設備參數都不屬於Arduino本身,而是屬於USB芯片。

這些芯片中的許多芯片可以用獨特的序列號分別編程。或者,您可以使用將您的Arduino板插入的PC端口號作爲唯一標識符。

您試過的udevadm命令顯示您的PC上的USB控制器的「串行」,表示您的Arduino板已插入,而不是Arduino板上的USB芯片串行。

取而代之的是udevadm info -n /dev/ttyUSB0 -q all。序列號的行看起來像E: ID_SERIAL_SHORT=12345678。如果該行不存在或確實包含了所有的板相同數目 - 使用此udev規則基礎上的USB端口號分配唯一的別名:

ACTION=="add", KERNEL=="ttyUSB*", SYMLINK+="arduino/tty-%s{../busnum}-%s{../devpath}" 
+0

我落得這樣做正是這一點,我用我的電腦的端口號以確定Arduinos。這種做法的缺點是,你必須注意將Arduinos連接到PC的順序。 – Jonas

+0

@Jonas,我建議創建一個'udev'規則,它將映射(創建別名)連接到PC特定端口的設備到特定的設備名稱。在這種情況下,連接順序無關緊要。 –