Читая http://playground.arduino.cc/Linux/Udev, кажется, есть способ записать в USB-последовательную EEPROM FTDI, чтобы установить заданный SerialNumber, позволяя вам идентифицировать данный нано / другой arduino для его конкретной обработки. в УДЕВ.
У меня есть устройство в стиле нано с USB-последовательным адаптером QinHeng Electronics HL-340, который явно не является чипом FTDI, и поэтому программист FTDI не работает. Кто-нибудь знает об альтернативной утилите / где я могу найти информацию, чтобы сделать то же самое с этим чипом?
В настоящее время устройство идентифицирует себя с:
[ 6850.608080] usb 2-1.2: new full-speed USB device number 7 using ehci-pci
[ 6850.701496] usb 2-1.2: New USB device found, idVendor=1a86, idProduct=7523
[ 6850.701505] usb 2-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 6850.701510] usb 2-1.2: Product: USB2.0-Serial
[ 6850.702201] ch341 2-1.2:1.0: ch341-uart converter detected
[ 6850.704210] usb 2-1.2: ch341-uart converter now attached to ttyUSB0
Что, по сути, бесполезно, так как я не могу идентифицировать данную прикрепленную доску (когда я прикрепляю две, их детали одинаковы).
arduino-nano
ch340
jvc26
источник
источник
0
, udev не может различить несколько плат, подключенных к одному компьютеруОтветы:
На CH340 и семействе UART нет места для хранения уникального идентификатора. Это также проблема для типа PL2303. Я пытался найти решение этой проблемы. Первым и самым простым является расположение устройства на шине USB. Это будет уникальным для каждого устройства. Если вы используете Linux, вы можете найти каждое устройство в / dev / serial / by-path. Существует также / dev / serial / by-id, но там будет только одна запись для этого устройства, поскольку оно показывает последнюю подключенную. Каждый из чипов FTDI будет иметь уникальные записи. Дешевые чипы не будут, но у каждого есть запись в / dev / serial / by-path. Эта позиция и имена устройств должны сохраняться при перезагрузке. Если у вас есть много изменений в ваших USB-устройствах, подключите все устройства CH340 к одному и тому же концентратору, а затем подключите его. Устройства будут перечислять в том порядке, в котором они подключены к концентратору. Этот трюк с одним хабом должен работать и для MacOS, и для окон, они должны появляться в том же порядке.
Сложнее методика правил. Для устройств с уникальным идентификатором, таких как FTDI, вы можете установить правило udev, которое видит его серийный номер, а затем создает символическую ссылку на это устройство, это просто.
Для устройств с одинаковым серийным номером или без него это намного сложнее. Я создал правило udev, которое выглядит так:
SUBSYSTEM == "tty", ATTRS {product} == "USB2.0-Serial", RUN + = "/ usr / local / bin / cheapduino.py% k", ATTRS {idVendor} == "1a86", ATTRS { idProduct} == "7523", ENV {ID_MM_DEVICE_IGNORE} = "1"
когда устройство соответствует продукту и поставщику дешевого arduino, оно запускает скрипт «cheapduino.py», например, с устройством в качестве аргумента
cheapduino.py ttyUSB0
Затем скрипт cheapduino подключается к устройству через последовательный порт и отправляет строку «ID», а программное обеспечение на устройстве отвечает DEVID = THX1138 или что-то еще. Затем скрипт создает символическую ссылку / dev / THX1138, которая указывает на / dev / ttyUSB0
У этого метода есть много недостатков. Срок действия сценария должен истечь, если программное обеспечение на cheapduino не отвечает. Также это не использует функцию SYMLINK в udev, поэтому она не удаляет мертвые ссылки при отключении, а перезаписывает их при повторном подключении. Все ваши cheapduinos должны иметь эту функцию в своем программном обеспечении с разными идентификаторами устройств. Все они должны использовать ту же скорость передачи данных, что и сценарий, если вы не хотите писать очень сложный сценарий, который занимает много времени. Наконец, этот метод работает намного лучше при низкой скорости передачи данных, чем при высокой скорости передачи данных, которая по причинам синхронизации может не всегда успешна. (cheapduinos дешевы!) 9600 работает намного лучше, чем 115200, который работает после нескольких попыток. Но так как все ваши arduinos CH340 должны иметь одинаковую скорость с этим методом, вы можете работать только так медленно, как ваше самое быстрое устройство.
Этот метод работает, хотя, и это то, что я использую, потому что я купил слишком много этих дешевых вещей.
В конце концов, купите подлинные Arduinos или хотя бы те с чипами FTDI или что-то еще, что отправляет уникальный идентификатор устройства.
= Rich
источник
Если вам нужно разделить 2 устройства, которые в основном идентичны, у вас есть 2 способа:
источник
CH340B (не G) имеет EEPROM, где вы можете сохранить серийный номер.
https://www.mpja.com/download/35227cpdata.pdf
Также есть инструмент для чтения и записи:
http://www.downxia.com/downinfo/196126.html
Попробую установить и посмотреть, как ведет себя версия G ...
источник
Поместите Maxim DS18S20 на вашу плату, каждый имеет уникальный серийный номер и очень недорогой. В Интернете есть много примеров программного обеспечения, использующего это устройство. Вы могли бы это сделать нано. для работы требуется резистор 4.7K, подключенный к +5, и заземление. Вы можете подключить как 5 В, так и заземление устройства к земле. Было бы несложно исправить ошибку в nano, затем с помощью простой связи через один контакт вы можете получить серийный номер. Есть несколько доступных пакетов. С осторожностью вы можете использовать входной контакт, прочитать серийный номер и сохранить его для дальнейшего использования. Когда это начнется, он сделает это снова. Просто убедитесь, что во время процесса инициализации на входе нет низкого уровня.
Удачи,
Гил
источник
Мне неприятно это говорить, но ответ - нет, нет способа однозначно идентифицировать несколько последовательных USB-конвертеров на основе 340.
У меня та же проблема, когда у меня есть несколько (4+) USB-последовательных преобразователей, любой из них может быть подключен к любому порту, и они были приобретены одновременно и, следовательно, идентичны во всех отношениях (включая iSerial of 0).
По сути, если я перемещаю вещи, мне нужно соединиться вручную, чтобы посмотреть, что подключено, просмотреть dmesg и т. Д. Это большая боль.
Том
источник