Как выбрать определенный порт USB на Raspberry Pi 3B + для программирования двух плат Arduino с Arduino-MK? - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть программа python на моем Raspberry pi 3B +, которая обновляет Arduino mega2560 и Arduino Uno, используя Arduino-mk через команды bash.Каждый 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 все работает и мега запрограммирован (то же самое только с 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 upк ttyUSB3 (я надеялся, что он будет работать как COM-порты на Windows).

Я также заметил, что если я продолжу тестирование с ttyUSB0 и попробую с каждым физическим USB-портом и сработает, так что ttyUSB0 относится к четырем физическим портам, верно?

Пожалуйста, как я могу получить одно конкретное имя порта?Или есть другой способ заставить работать Arduino-mk?

1 Ответ

0 голосов
/ 22 апреля 2019

Подключайте по одному устройству за раз и посмотрите на вывод ls -l /dev/serial/by-id/, вы должны увидеть символическую ссылку на фактический узел устройства, но с уникальным именем для вашего конкретного устройства.

Затем вы можете установить ARDUINO_PORT=/dev/serial/by-id/unique_name в соответствующих файлах make.

...