首页 > 解决方案 > 如何在树莓派 3B+ 上选择一个特定的 USB 端口来使用 arduino-mk 对两个 arduino 板进行编程?

问题描述

我的 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)")

只有在 USB 端口上连接了 mega,一切正常,并且 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 工作吗?

标签: linuxarduinoserial-portusbraspberry-pi3

解决方案


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

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


推荐阅读