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