Seri numarasını CH340 USB Seri cihazda ayarlama


9

Okuma http://playground.arduino.cc/Linux/Udev siz onu özellikle işlemek için belirli bir nano / diğer arduino tanımlamak için izin verilen bir SERIALNUMBER ayarlamak için bir FTDI USB-Seri EEPROM yazmak için bir yol olduğu görülmektedir UDEV.

QinHeng Electronics HL-340 USB Seri adaptörlü, açıkça bir FTDI yongası olmayan bir nano tarzı boad'ım var ve bu nedenle FTDI programcısı çalışmıyor. Herkes başka bir yardımcı programı biliyor / bu çip ile aynı şeyi yapmak için nerede bilgi bulabilirim?

Şu anda cihaz kendini şu şekilde tanımlıyor:

[ 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

Ekli olarak verilen kartı tanımlayamadığım için esasen işe yaramaz (iki tane eklediğimde, detayları aynıdır).



1
Ne yazık ki, bu gerçekten de bir cevap değil: soru (FTDI yongaları için yapabileceği gibi yeni bir seri numarası atamanın bir yolu olup olmadığı yanıtı olmadığı için) veya sorunu (udev seri olarak) çünkü Leonardo gibi tüm bu kartlar 0aynı bilgisayara bağlı birden fazla kart arasında ayrım
yapamaz

Bağlantım, her cihaz için udev kuralları oluşturmayla ilgili cevabım.
PhillyNJ

1
Çince okuyabilirseniz (yapamam) bu sayfa yardımcı olabilir: wch.cn/products.php?page=procontent&id=40
Craig

3
Ne yazık ki @Phil Vallone sorun udev üzerinden cihazı tanımlamak için benzersiz bir seri olmamasıdır. Benzersiz bir cihazı tespit etmek ve tanımlamak için, onları ayırt etmek için benzersiz bir şeye ihtiyacınız vardır. Bu cihazlar aynı iSerial'a sahiptir, bu yüzden onları ayırt edemezsiniz ve aynı Ürün ve Satıcı Kimliklerini paylaşırlar - bu yüzden farklılaştırıcı yoktur ... Yardımınız için teşekkürler, maalesef bu sorunu çözmez !
jvc26

Yanıtlar:


3

CH340 ve UART ailesi üzerinde benzersiz bir kimlik koyabileceğiniz bir depolama alanı yok. Bu PL2303 tipi için de bir problemdir. Bu soruna çözüm bulmaya çalışıyorum. İlk ve en kolayı, cihazın USB veriyolundaki konumudur. Her cihaz için benzersiz olacaktır. Linux kullanıyorsanız her cihazı / dev / serial / by-path altında bulabilirsiniz. Ayrıca bir / dev / serial / by-id de var ancak bu aygıt için yalnızca bir giriş olacak çünkü en son bağlananı gösteriyor. FTDI yongalarının her birinin burada benzersiz girişleri olacaktır. Ucuz cips olmaz, ancak her birinin / dev / serial / by-path altında bir girişi vardır. Bu konum ve cihaz adları, yeniden başlatmalar boyunca devam etmelidir. USB aygıtlarınızda çok fazla değişiklik varsa, tüm CH340 aygıtlarını aynı hub'a takın, ardından takın. Cihazlar hub'a takıldıkları sırayla numaralandırılacaktır. Bu tek hub'lı hile MacOS ve pencereler için de çalışmalı, aynı sırada gelmelidir.

Daha zor yöntem- udev kuralları. FTDI gibi benzersiz bir kimliğe sahip cihazlar için, seri numarasını gören ve daha sonra bu cihaza bir sembolik bağlantı oluşturan bir udev kuralı ayarlayabilirsiniz.

Aynı Seri numarasına sahip olan veya olmayan cihazlar için çok daha karmaşıktır. Şuna benzeyen bir udev kuralı oluşturdum:

SUBSYSTEM == "tty", ATTRS {ürün} == "USB2.0-Seri", RUN + = "/ usr / local / bin / cheapduino.py% k", ATTRS {idVendor} == "1a86", ATTRS { idProduct} == "7523", ENV {ID_MM_DEVICE_IGNORE} = "1"

cihaz ucuz arduino'nun ürün ve satıcısıyla eşleştiğinde, cihazla 'cheapduino.py' komut dosyasını argüman olarak cihazla çalıştırır.

cheapduino.py ttyUSB0

Daha sonra cheapduino betiği seriye göre cihaza bağlanır ve 'ID' dizesini gönderir ve cihazdaki yazılım DEVID = THX1138 veya her neyse yanıt verir. Komut dosyası daha sonra / dev / ttyUSB0'ı gösteren bir symlink / dev / THX1138 oluşturur

Bu yöntemin birçok dezavantajı vardır. Cheapduino üzerindeki yazılım cevap vermezse, komut dosyasının zaman aşımına uğraması gerekir. Ayrıca bu, udev'in SYMLINK işlevini kullanmaz, bu nedenle bağlantıyı kesildiğinde ölü bağlantıları temizlemez, ancak yeniden bağlandığında bunların üzerine yazılır. Tüm ucuz duolarınız, farklı cihaz kimlikleri ayarlanmış olarak yazılımlarında bu işlevselliğe sahip olmalıdır. Uzun zaman alan çok karmaşık bir komut dosyası yazmak istemiyorsanız, komut dosyasıyla aynı baud hızını kullanmalıdır. Son olarak, bu yöntem düşük baud hızında, yüksek baud hızından çok daha iyi çalışır, bu da zamanlama nedenleriyle her zaman başarılı olamayabilir. 9600, birkaç denemeden sonra çalışan 115200'den çok daha iyi çalışır. Ancak tüm CH340 arduinolarınızın bu yöntemle aynı hızda olması gerektiğinden, yalnızca en hızlı cihazınız kadar yavaş gidebilirsiniz.

Bu yöntem yine de işe yarıyor ve kullandığım şey bu çünkü bu ucuz şeylerden çok fazla aldım.

Sonunda, orijinal Arduinos veya en azından FTDI yongaları veya benzersiz bir cihaz kimliği gönderen başka bir şey satın alın.

= Zengin


2

İstediğiniz şey, temelde aynı olan 2 cihazı ayırmaksa, 2 yolunuz vardır:

  • bunları her zaman aynı bağlantı noktalarına takın ve farklılaştırmak için USB ağacını kullanın
  • her bir Arduino'nun daha önce ilgili EEPROM'larında sakladığınız bir kodu kullandığı bir el sıkışma protokolü oluşturun. UDEV için bir yardımcı işlevi yazmak bile mümkün olabilir, böylece yardımcı işlevi el sıkışmasını yapar ve UDEV'ye her EEPROM'da depolanan seriyi söyler. Bu, cihazlarınız için bir UDEV kuralı yazmanıza izin verir.

2

CH340B (G değil), seri numarasını saklayabileceğiniz bir EEPROM'a sahiptir.

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

Okumak / yazmak için bir Windows aracı da var:

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

Yüklemeye ve G sürümünün nasıl davrandığını görmeye çalışacağız ...


Bu aracı indirmek için o Çince şeyleri nereden tıklayacağınızı söyleyebilir misiniz? Bir RAR dosyasına bazı bağlantılar buldum ama zaman aşımına uğradı.
Elmue

1

Anakartınıza bir Maxim DS18S20 koyun, her birinin benzersiz bir seri numarası vardır ve çok ucuzdur. İnternette bu cihazı kullanan birçok yazılım örneği var. Bunu nano'ya öldürebilirsin. Çalıştırmak için +5'e bağlı bir 4.7K direnç ve bir toprak bağlantısı gerekir. Cihazın hem 5V hem de Toprak bağlantılarını toprağa bağlayabilirsiniz. Ölü böcek bu nano için kolay olurdu sonra bir iğne ile basit iletişim yoluyla seri numarasını alabilirsiniz. Kullanılabilir birkaç paket var. Dikkatle bir giriş pini kullanabilir, seriyi okuyabilir ve ileride kullanmak üzere saklayabilirsiniz. Inits olduğunda bunu tekrar yapacak. Başlatma işlemi sırasında girişin düşük sürülmediğinden emin olun.

İyi şanslar,

Gil


USB serisinde problemi çözmediğinizde, daha ziyade işlemcinin karttaki işbirliğini keşfetmek için gereken bir şeyle, önyükleyiciyi hem orada hem de bir uygulamada okunabilir bir seri numarası içerecek şekilde değiştirebilirsiniz. programı (yani "eskiz")
Chris Stratton

Saçmalık. DS18S20 bir dijital termometredir!
Elmue

Evet, bir termometre; Evet, her karttaki kodu veya eepromu değiştirmeyi gerektirmeyen benzersiz bir seri numarasına sahiptir. Ucuz ve basit. Mikro dezavantajı yanıt vermelidir. Değişen IDE veya herhangi bir ürün yazılımı vb.Ile çalışacaktır, ancak gerekirse bir mux ile çalışabilecek bir pim gerektirir.
Gil

1

Söylemekten nefret ediyorum, ancak cevap hayır, birden fazla 340 tabanlı usb seri dönüştürücüyü benzersiz bir şekilde tanımlamanın yolu yok.

Birden fazla (4+) usb-seri dönüştürücüye sahip olduğum aynı problemim var, herhangi bir bağlantı noktasına takılabilir ve aynı anda satın alındılar ve bu nedenle her şekilde aynılar (0 iSerial dahil).

Temel olarak, bir şeyleri hareket ettirirsem, neyin bağlı olduğunu görmek için elle bağlanmak zorundayım, dmesg çıktısını inceleyin, vb. Büyük bir acı.

tom

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.