Встановлення серійного номера на CH340 USB-серійному пристрої


9

Читаючи http://playground.arduino.cc/Linux/Udev , мабуть, існує спосіб виписати на FTDI USB-серійний EEPROM для встановлення заданого SerialNumber, що дозволяє ідентифікувати заданий нано / інший ардуїно, щоб спеціально обробити його. в УДЕВ.

У мене є нано-стиль із 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

Що по суті марно, оскільки я не можу ідентифікувати додану дошку (коли я приєдную дві, їх деталі однакові).



1
На жаль, це насправді не відповідь на будь-яке: питання (оскільки воно не відповідає, чи є спосіб призначити новий серійний номер, як це можна зробити для фішок FTDI), або вирішити проблему (як серій udev для всіх цих дощок, як і Леонардо, є 0, тому удев не може розрізняти кілька плат, приєднаних до одного комп’ютера.
jvc26,

Моє посилання - моя відповідь, в якій йдеться про створення правил udev для кожного пристрою.
PhillyNJ

1
Якщо ви можете прочитати китайську (я не можу), ця сторінка може допомогти: wch.cn/products.php?page=procontent&id=40
Крейг

3
На жаль @Phil Vallone проблема полягає в тому, що не існує унікальної серійної ідентифікації пристрою через udev. Для того, щоб виявити та ідентифікувати унікальний пристрій, вам потрібно щось унікальне, щоб їх диференціювати. Ці пристрої мають однаковий iSerial, тому ви не можете їх відрізняти за цим, і вони мають однакові ідентифікатори продукту та постачальника - тому немає диференціатора ... Дякуємо за вашу допомогу, на жаль, це не вирішує цю проблему. !
jvc26

Відповіді:


3

На CH340 та сімействі UART немає місця, де ви можете поставити унікальний ідентифікатор. Це також проблема для типу PL2303. Я намагався знайти рішення для цієї проблеми. Перше і найпростіше - це розташування пристрою на шині USB. Він буде унікальним для кожного пристрою. Якщо ви використовуєте Linux, ви можете знайти кожен пристрій під / dev / serial / by-path. Також є / dev / serial / by-id, але для цього пристрою буде лише один запис, оскільки він показує останній підключений. У чіпах FTDI тут будуть унікальні записи. Дешеві фішки не будуть, але кожен з них має запис під / dev / serial / by-path. Ця позиція та назви пристроїв повинні зберігатися через перезавантаження. Якщо у вас багато змін на ваших USB-пристроях, підключіть усі пристрої CH340 до того ж концентратора, а потім підключіть його. Пристрої будуть перераховані в порядку, коли вони підключені до концентратора. Цей фокус з одним концентратором повинен працювати і для MacOS, і для Windows, вони повинні виходити в тому ж порядку.

Більш жорсткий метод - правила удеву. Для пристроїв з унікальним ідентифікатором, таким як FTDI, ви можете встановити правило udev, яке бачить його серійний номер, а потім створює символьне посилання на цей пристрій, це просто.

Для пристроїв з однаковим або відсутнім серійним номером це набагато складніше. Я створив правило udev, яке виглядає приблизно так:

SUBSYSTEM == "tty", ATTRS {продукт} == "USB2.0-серійний", 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 або будь-що інше. Потім сценарій створює symlink / dev / THX1138, який вказує на / dev / ttyUSB0

У цього методу існує маса недоліків. Сценарій повинен вичерпати час, якщо програмне забезпечення в дешевому програмі не відповідає. Крім того, це не використовує SYMLINK функцію udev, тому вона не очистить мертві посилання при відключенні, але перезапише їх при повторному підключенні. Усі ваші дешеві виробники повинні мати цю функціональність у своєму програмному забезпеченні з різними ідентифікаторами пристроїв. Всі вони повинні використовувати ту саму швидкість передачі, як і сценарій, якщо ви не хочете написати дуже складний сценарій, який займає тривалий час. Нарешті, цей метод працює набагато краще при низькій швидкості передачі, ніж при високій швидкості передачі, що з часових причин може не мати успіху щоразу. (cheapduinos є дешевим!) 9600 працює набагато краще, ніж 115200, яке працює після декількох спроб. Але оскільки всі ваші ардуїни CH340 повинні мати однакову швидкість за допомогою цього методу, ви можете рухатись так само повільно, як і ваш найшвидший пристрій.

Цей метод НЕ працює, і це те, що я використовую, тому що я придбав занадто багато цих дешевих речей.

Врешті-решт, придбайте справжні Arduinos або принаймні ті, з чіпами FTDI або щось інше, що надсилає унікальний ідентифікатор пристрою.

= Багатий


2

Якщо ви хочете розказати два пристрої, які в основному однакові, у вас є два способи:

  • завжди підключайте їх до одних і тих же портів та використовуйте дерево USB для їх розмежування
  • створити протокол рукостискання, де кожен Arduino використовує код, який ви раніше зберігали у своїх відповідних EEPROM. Можливо, навіть можна записати допоміжну функцію для UDEV, щоб функція помічника робила рукостискання і повідомляла UDEV про послідовний доступ, який зберігається у кожному EEPROM. Це дозволить написати правило UDEV для своїх пристроїв.

2

CH340B (не G) має EEPROM, де можна зберігати порядковий номер.

https://www.mpja.com/download/35227cpdata.pdf

Також є інструмент Windows для читання / запису:

http://www.downxia.com/downinfo/196126.html

Спробуємо встановити і подивитися, як поводиться версія G ...


Чи можете ви сказати мені, де натиснути цей китайський матеріал, щоб завантажити цей інструмент? Я знайшов посилання на файл RAR, але вони вичерпалися.
Elmue

1

Покладіть на борт Maxim DS18S20, кожен має унікальний серійний номер і коштує дуже недорого. В Інтернеті є багато прикладів програмного забезпечення, що використовують цей пристрій. Ви могли б мертвим помилку нано. для роботи йому потрібен 4,7 К резистор, підключений до +5 та заземлений з'єднання. Ви можете підключити як заземлення 5V, так і заземлення пристрою. Було б легко загинути помилку нано, тоді простим зв’язком через один контакт можна отримати серійний номер. Є кілька пакетів. З обережністю ви можете використовувати вхідний контакт, прочитати серійний файл і зберегти його для подальшого використання. Коли він буде Inits, він зробить це знову. Просто переконайтесь, що вхід не зменшується під час процесу init.

Щасти,

Гіл


Після того, як ви не вирішите проблему в USB-серіалі, а скоріше з тим, що вимагає співпраці процесора на платі для виявлення, ви можете просто змінити завантажувач, щоб він містив серійний номер, читабельний і там, і в додатку. програма (тобто "ескіз")
Кріс Страттон

Яка дурниця. DS18S20 - це цифровий термометр!
Elmue

Так, це термометр; Так, він має унікальний серійний номер, який не потребує зміни коду або eeprom на кожній платі. Недорогий і простий. Повернення мікро має відповідати. Він буде працювати з зміною IDE або будь-якої прошивки тощо, однак для цього потрібен штифт, який можна обробити за допомогою mux при необхідності.
Гіль

1

Я ненавиджу це говорити, але відповідь - ні, немає способу однозначно визначити декілька 340-базних послідовних перетворювачів на основі.

У мене така ж проблема, коли у мене є декілька (4+) послідовних перетворювачів USB, будь-який можна було підключити до будь-якого порту, і вони були придбані одночасно, і тому всі вони однакові (включаючи iSerial 0).

В основному, якщо я пересуваю речі, мені доведеться підключитися вручну, щоб побачити, що додано, вивчити вихід dmesg тощо. Це великий біль.

Том

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.