linux - 如何在树莓派 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 工作吗?
解决方案
一次插入一个设备并查看 的输出ls -l /dev/serial/by-id/
,您应该会看到一个指向实际设备节点的符号链接,但它是为您的特定设备唯一命名的。
然后,您可以ARDUINO_PORT=/dev/serial/by-id/unique_name
在相应的 makefile 中进行设置。
推荐阅读
- java - Apache Camel Multipart Netty Rest DSL 不适用于骆驼杰克逊依赖项
- javascript - 您的一些测试进行了整页重新加载 - 单元测试
- php - 动态数据透视表 mysqli 和 PHP
- ruby-on-rails - Aws::S3::Errors::AccessDenied 尝试使用 Rails 应用程序编写时
- azure - 通过公共 IP 将 Logstash 连接到 Azure 中的 Kafka
- java - Unable to locate a dynamically loaded pop up using explicit (Fluent) wait in selenium
- firebase - Firebase中的批处理以删除存储一个月的数据
- python - How to create Python event that should invoke on before windows sleep mode
- azure - 使用 Azure 保护 API - 外部人员如何获取客户端 ID?
- vba - 将 Excel 嵌入 JSON 脚本