如何 select raspberry pi 3B+ 上的特定 USB 端口以使用 arduino-mk 对两个 arduino 板进行编程?

How to select a particular USB port on raspberry pi 3B+ to program two arduino boards with arduino-mk?

我的 Raspberry pi 3B+ 上有一个 python 程序,通过 bash 命令使用 Arduino-mk 更新 Arduino mega2560 和 Arduino Uno。每个 Arduino 都有自己的代码文件夹及其代码 (.ino) 和一个 Makefile,如下所示:

ARDUINO_DIR = /usr/share/arduino
ARDUINO_PORT = /dev/ttyUSB0 (here is the problem)

USER_LIB_PATH = /home/pi/sketchbook/libraries
BOARD_TAG = mega2560 (Uno for the uno one)

include /usr/share/arduino/Arduino.mk

当我调用以下命令时:

os.system("(cd ~/sketchbook/mega; make upload clean)")

只有 mega 连接到 USB 端口,一切正常,mega 得到编程(仅与 Uno 相同)。但是当我尝试同时完成这两项时:

os.system("(cd ~/sketchbook/mega; make upload clean)")
os.system("(cd ~/sketchbook/uno; make upload clean)")

arduino-mk 无法对 Uno 进行编程(多次超时)。

起初 Makefile 中的第二行是:

ARDUINO_PORT = /dev/ttyAMC0

但它不起作用,所以我在网上查了一下,发现一些 Arduino 副本在以下情况下效果更好:

ARDUINO_PORT = /dev/ttyUSB0

然后它工作了,但是我无法从 ttyUSB1 到 ttyUSB3 得到任何结果(我希望它能像 windows 上的 COM 端口一样工作)。

我还注意到,如果我继续使用 ttyUSB0 进行测试并尝试使用每个物理 USB 端口并正常工作,那么 ttyUSB0 指的是四个物理端口吗?

请问我怎样才能得到一个特定的端口名称? 或者有其他方法可以让 Arduino-mk 工作吗?

一次插入一个设备并查看 ls -l /dev/serial/by-id/ 的输出,您应该会看到指向实际设备节点的符号链接,但为您的特定设备唯一命名。

然后您可以在相应的 makefile 中设置 ARDUINO_PORT=/dev/serial/by-id/unique_name