Membaca http://playground.arduino.cc/Linux/Udev tampaknya ada cara untuk menulis ke EEPROM USB-Serial FTDI untuk mengatur SerialNumber yang diberikan, memungkinkan Anda mengidentifikasi nano / arduino lain untuk menanganinya secara khusus di UDEV.
Saya memiliki muatan gaya nano dengan adaptor USB-Serial QinHeng Electronics HL-340, yang jelas bukan chip FTDI, dan oleh karena itu programmer FTDI tidak berfungsi. Adakah yang tahu tentang utilitas alternatif / di mana saya dapat menemukan informasi untuk melakukan hal yang sama dengan chip ini?
Saat ini perangkat mengidentifikasi dirinya dengan:
[ 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
Yang pada dasarnya tidak berguna, karena saya tidak dapat mengidentifikasi papan yang diberikan terlampir (ketika saya melampirkan dua, detailnya sama).
arduino-nano
ch340
jvc26
sumber
sumber
0
, oleh karena itu udev tidak dapat membedakan antara banyak papan yang terpasang pada komputer yang sama.Jawaban:
Tidak ada penyimpanan di CH340 dan keluarga UART tempat Anda bisa memasukkan ID unik. Ini juga masalah untuk tipe PL2303. Saya telah berusaha mencari solusi untuk masalah ini. Pertama dan termudah adalah posisi perangkat di bus USB. Ini akan menjadi unik untuk setiap perangkat. Jika Anda menggunakan linux, Anda dapat menemukan setiap perangkat di bawah / dev / serial / by-path. Ada juga / dev / serial / by-id tetapi hanya akan ada satu entri di sana untuk perangkat ini karena itu menunjukkan yang terakhir terhubung. Setiap chip FTDI akan memiliki entri unik di sini. Chip murah tidak akan, tetapi masing-masing memiliki entri di bawah / dev / serial / by-path. Posisi ini, dan nama perangkat, harus bertahan di seluruh reboot. Jika Anda memiliki banyak perubahan pada perangkat USB Anda, colokkan semua perangkat CH340 ke hub yang sama, kemudian hubungkan. Perangkat akan menghitung sesuai urutan mereka terhubung ke hub. Trik satu-hub ini harus bekerja untuk MacOS dan windows juga, mereka harus muncul dalam urutan yang sama.
Aturan metode-udev yang lebih sulit. Untuk perangkat dengan ID unik seperti FTDI, Anda dapat menetapkan aturan udev yang melihatnya sebagai nomor seri dan kemudian membuat symlink ke perangkat itu, langsung saja.
Untuk perangkat dengan nomor seri yang sama atau tidak, itu jauh lebih kompleks. Saya membuat aturan udev yang terlihat seperti ini:
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"
ketika perangkat cocok dengan produk dan vendor arduino murah, ia menjalankan script 'cheapduino.py' dengan perangkat sebagai argumen, misalnya
cheapduino.py ttyUSB0
Kemudian skrip murduino terhubung secara serial ke perangkat dan mengirimkan string 'ID' dan perangkat lunak pada perangkat merespons DEVID = THX1138 atau apa pun. Script kemudian membuat symlink / dev / THX1138 yang menunjuk ke / dev / ttyUSB0
Ada banyak kelemahan dalam metode ini. Script harus habis jika perangkat lunak pada cheapduino tidak menjawab. Juga ini tidak menggunakan fungsi SYMLINK dari udev sehingga tidak akan membersihkan tautan mati saat terputus, tetapi ini akan menimpa mereka saat terhubung kembali. Semua murduino Anda harus memiliki fungsi ini dalam perangkat lunak mereka, dengan ID perangkat yang berbeda ditetapkan. Mereka semua harus menggunakan baud rate yang sama dengan skrip kecuali Anda ingin menulis skrip yang sangat rumit yang membutuhkan waktu lama. Akhirnya, metode ini bekerja lebih baik pada baud rate yang rendah daripada pada baud rate yang tinggi, yang karena alasan waktu mungkin tidak berhasil setiap saat. (cheapduino murah!) 9600 bekerja lebih baik daripada 115200 yang bekerja setelah beberapa kali mencoba. Tetapi karena semua arduinos CH340 Anda harus memiliki kecepatan yang sama dengan metode ini, Anda hanya bisa berjalan sepelan perangkat tercepat Anda.
Metode ini TIDAK berfungsi, dan itu yang saya gunakan karena saya membeli terlalu banyak barang murah ini.
Pada akhirnya, beli Arduino asli atau setidaknya yang dengan chip FTDI atau yang lainnya yang mengirimkan ID perangkat unik.
= Kaya
sumber
Jika yang Anda inginkan adalah membedakan 2 perangkat yang pada dasarnya identik, Anda memiliki 2 cara:
sumber
CH340B (bukan G) memiliki EEPROM tempat Anda dapat menyimpan nomor seri.
https://www.mpja.com/download/35227cpdata.pdf
Ada alat windows juga untuk membaca / menulisnya:
http://www.downxia.com/downinfo/196126.html
Akan mencoba menginstal dan melihat bagaimana versi G berperilaku ...
sumber
Letakkan Maxim DS18S20 di papan Anda, masing-masing memiliki nomor seri yang unik dan sangat murah. Ada banyak contoh perangkat lunak di internet menggunakan perangkat ini. Anda bisa mematikan bug di nano. untuk mengoperasikannya diperlukan resister 4.7K yang terhubung ke +5 dan koneksi ground. Anda dapat menghubungkan koneksi 5V dan Ground dari perangkat ke ground. Akan mudah untuk mematikan bug ini ke nano kemudian dengan komunikasi sederhana melalui satu pin Anda bisa mendapatkan nomor seri. Ada beberapa paket yang tersedia. Dengan hati-hati Anda dapat menggunakan pin input, membaca serial dan menyimpannya untuk digunakan di masa depan. Ketika Inits itu akan melakukan ini lagi. Pastikan input tidak didorong rendah selama proses init.
Semoga berhasil,
Gil
sumber
Saya benci mengatakannya, tetapi jawabannya tidak, tidak ada cara untuk mengidentifikasi secara unik beberapa 340 konverter serial usb berbasis.
Saya memiliki masalah yang sama, di mana saya memiliki beberapa (4+) konverter serial usb, ada yang bisa dicolokkan ke porta apa pun, dan mereka dibeli pada waktu yang sama dan karenanya identik dalam segala hal (termasuk iSerial 0).
Pada dasarnya, jika saya memindahkan barang-barang, saya harus terhubung dengan tangan untuk melihat apa yang terpasang, membaca dengan teliti keluaran dmesg, dll. Ini sangat menyebalkan.
tom
sumber