【问题标题】:How to get a unique ID for each Arduino如何为每个 Arduino 获取唯一 ID
【发布时间】:2016-12-15 12:20:46
【问题描述】:

我使用了两个 Arduino Nano,并想更改它们的名称,如 /dev 中列出的那样,因为目前它们始终是 ttyUSB<NUMBER>

如何获取唯一序列号来创建 udev 规则?

我尝试通过 udevadm 获取它,但它为两个 Arduino 返回相同的序列号。

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

【问题讨论】:

    标签: arduino tty udev


    【解决方案1】:

    Arduino Nano 基于 ATmega328,没有内置 USB 控制器。板上的 USB 连接器连接到外部 USB 转 TTL 转换器 IC。所以你在PC端看到的所有USB设备参数都不是Arduino本身的,而是USB芯片的。

    其中许多芯片都可以使用唯一的序列号单独编程。或者,您可以只使用插入 Arduino 板的 PC 端口号作为唯一标识符。

    您尝试的udevadm 命令显示了您的 Arduino 板插入的 PC 中 USB 控制器的“串行”,而不是 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}"
    

    【讨论】:

    • 我最终做到了这一点,我使用我的 PC 端口号来识别 Arduinos。这种方法的缺点是,您必须注意将 Arduinos 连接到 PC 的顺序。
    • @Jonas,我建议创建一个 udev 规则,它将连接到您 PC 特定端口的设备映射(创建别名)到特定设备名称。在这种情况下,连接顺序无关紧要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2020-06-09
    相关资源
    最近更新 更多