CH340 USB- सीरियल डिवाइस पर सीरियल नंबर सेट करना


9

Http://playground.arduino.cc/Linux/Udev को पढ़ना किसी दिए गए SerialNumber को सेट करने के लिए FTDI USB- सीरियल EEPROM को लिखने का एक तरीका प्रतीत होता है, जिससे आप किसी दिए गए नैनो / अन्य लड्डू की पहचान कर सकते हैं। UDEV में।

मेरे पास QinHeng Electronics HL-340 USB-Serial अडैप्टर के साथ एक नैनो-स्टाइल बड है, जो स्पष्ट रूप से एक 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
दुर्भाग्य से, यह वास्तव में या तो एक जवाब नहीं है: सवाल (क्योंकि यह जवाब नहीं देता है कि क्या कोई नया सीरियल नंबर असाइन करने का एक तरीका है जैसा कि कोई व्यक्ति एफडीडीआई चिप्स के लिए कर सकता है), या समस्या को हल करें (udev धारावाहिक के रूप में) लियोनार्डो की तरह इन सभी बोर्डों के लिए 0, इसलिए udev एक ही कंप्यूटर से जुड़े कई बोर्डों के बीच अंतर नहीं कर सकता है।
jvc26

मेरा लिंक मेरे उत्तर के लिए है जो प्रत्येक डिवाइस के लिए udev नियम बनाने की बात करता है।
फिल्लीएनजे

1
यदि आप चीनी पढ़ सकते हैं (मैं नहीं कर सकता) तो यह पृष्ठ मदद कर सकता है: wch.cn/products.php?page=procontent&id=40
क्रेग

3
दुर्भाग्य से @Phil Vallone मुद्दा यह है कि udev के माध्यम से डिवाइस की पहचान करने के लिए कोई अनूठा धारावाहिक नहीं है। एक अद्वितीय डिवाइस का पता लगाने और पहचानने के लिए, आपको उन्हें अलग करने के लिए कुछ अनोखा चाहिए। इन उपकरणों में समान iSerial है, इसलिए आप उन्हें उस पर अलग नहीं कर सकते हैं, और वे एक ही उत्पाद और विक्रेता आईडी साझा करते हैं - इसलिए कोई विभाजक नहीं है ... आपकी मदद के लिए धन्यवाद, दुर्भाग्य से यह इस समस्या को ठीक नहीं करता है !
jvc26

जवाबों:


3

U3 के CH340 और परिवार पर कोई भंडारण नहीं है जहाँ आप एक विशिष्ट आईडी डाल सकते हैं। यह PL2303 प्रकार के लिए भी एक समस्या है। मैं इस समस्या का समाधान खोजने की कोशिश कर रहा हूं। सबसे पहले और सबसे आसान उपकरण यूएसबी बस में डिवाइस की स्थिति है। यह प्रत्येक डिवाइस के लिए अद्वितीय होगा। यदि आप linux का उपयोग कर रहे हैं तो आप प्रत्येक डिवाइस को / dev / serial / by-path के अंतर्गत पा सकते हैं। एक / देव / धारावाहिक / बाय-आईडी भी है, लेकिन इस उपकरण के लिए केवल एक ही प्रविष्टि होगी क्योंकि यह पिछले एक से जुड़ा हुआ दिखाता है। एफटीडीआई चिप्स में प्रत्येक की अद्वितीय प्रविष्टियां होंगी। सस्ते चिप्स नहीं होगा, लेकिन वे प्रत्येक के तहत एक प्रविष्टि / देव / धारावाहिक / बाय-पाथ है। यह स्थिति, और डिवाइस के नाम, रिबूट के पार रहना चाहिए। यदि आपके USB उपकरणों में बहुत अधिक परिवर्तन हैं, तो सभी CH340 उपकरणों को एक ही हब में प्लग करें, फिर उन्हें प्लग इन करें। डिवाइस इस क्रम में गणना करेंगे कि वे हब में प्लग किए गए हैं। यह एक-हब चाल को MacOS और खिड़कियों के लिए भी काम करना चाहिए, उन्हें उसी क्रम में आना चाहिए।

कठिन विधि- udv नियम। FTDI जैसे एक अद्वितीय आईडी वाले उपकरणों के लिए, आप एक udev नियम सेट कर सकते हैं जो देखता है कि यह सीरियल नंबर है और फिर उस डिवाइस के लिए एक सिमलिंक बनाता है, यह सीधा है।

समान या बिना सीरियल नंबर वाले उपकरणों के लिए, यह बहुत अधिक जटिल है। मैंने एक udv नियम बनाया जो इस तरह दिखता है:

SUBSYSTEM == "tty", ATTRS {product} == "USB2.0-Serial", RUN + = "/ usr / स्थानीय / बिन / cheapduino.py% k", ATTRS {idVendor} == "1a86", ATTRS { idProduct} == "7523", ENV {ID_MM_DEVICE_IGNORE} = "" 1

जब डिवाइस सस्ते arduino के उत्पाद और विक्रेता से मेल खाता है, तो यह उदाहरण के लिए, उपकरण के साथ स्क्रिप्ट 'cheapduino.py' चलाता है।

cheapduino.py ttyUSB0

फिर सस्तेडू लिपि सीरियल द्वारा डिवाइस से कनेक्ट होती है और स्ट्रिंग 'आईडी' को भेजती है और डिवाइस पर मौजूद सॉफ्टवेयर DEVID = THX1138 या जो भी प्रतिक्रिया करता है। स्क्रिप्ट तब एक सिम्लिंक / dev / THX1138 बनाता है जो / dev / ttyUSB0 को इंगित करता है

इस पद्धति में बहुत सारी कमियां हैं। अगर स्क्रिप्ट सस्ते पर सॉफ्टवेयर जवाब नहीं देता है तो स्क्रिप्ट को समय देना चाहिए। इसके अलावा, यह udv के SYMLINK फ़ंक्शन का उपयोग नहीं कर रहा है, इसलिए यह डिस्कनेक्ट पर मृत लिंक को साफ नहीं करेगा, लेकिन यह उन्हें फिर से कनेक्ट करने पर अधिलेखित कर देगा। आपके सभी सस्ते स्टूडियो में अलग-अलग डिवाइस आईडी सेट के साथ, उनके सॉफ़्टवेयर में यह कार्यक्षमता होनी चाहिए। जब तक आप एक बहुत जटिल स्क्रिप्ट नहीं लिखना चाहते हैं, तब तक उन सभी को स्क्रिप्ट के रूप में एक ही बॉड दर का उपयोग करना होगा। अंत में, यह विधि उच्च बॉड दर की तुलना में कम बॉड दर पर बहुत बेहतर काम करती है, जो समय के कारण हर बार सफल नहीं हो सकती है। (cheapduinos सस्ते हैं!) 9600 115200 की तुलना में बहुत बेहतर काम करता है जो कई कोशिशों के बाद काम करता है। लेकिन चूंकि आपके सभी CH340 arduinos इस विधि के साथ समान गति होनी चाहिए, आप केवल अपने सबसे तेज़ डिवाइस के रूप में धीमी गति से जा सकते हैं।

यह विधि हालांकि काम करती है, और इसका उपयोग मैं इसलिए कर रहा हूं क्योंकि मैंने इनमें से बहुत सी सस्ती चीजों को खरीदा है।

अंत में, वास्तविक Arduinos खरीदें या कम से कम FTDI चिप्स या कुछ और के साथ खरीदें जो एक अद्वितीय डिवाइस आईडी भेजता है।

= रिच


2

यदि आप जो चाहते हैं वह अलग-अलग समान दिखने वाले 2 उपकरणों को बताना है, तो आपके पास 2 तरीके हैं:

  • हमेशा उन्हें समान पोर्ट में प्लग करें और उन्हें अलग करने के लिए USB ट्री का उपयोग करें
  • एक हैंडशेक प्रोटोकॉल बनाएं, जहां प्रत्येक Arduino एक कोड का उपयोग करता है जिसे आपने पहले अपने संबंधित EEPROM में संग्रहीत किया है। UDEV के लिए एक सहायक फ़ंक्शन लिखना भी संभव हो सकता है, ताकि सहायक फ़ंक्शन हैंडशेक करता है और UDEV को प्रत्येक EEPROM में संग्रहीत सीरियल बताता है। यह आपके उपकरणों के लिए एक UDEV नियम लिखने की अनुमति देगा।

2

CH340B (जी नहीं) में एक EEPROM है जहां आप सीरनंबर स्टोर कर सकते हैं।

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

इसे पढ़ने / लिखने के लिए एक विंडोज़ टूल भी है:

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

जी संस्करण कैसे व्यवहार करता है ...


क्या आप मुझे बता सकते हैं कि उस टूल को डाउनलोड करने के लिए उस चीनी सामान पर कहां क्लिक करें? मुझे एक RAR फ़ाइल के कुछ लिंक मिले लेकिन उन्होंने समय निकाल लिया।
एल्म्यू

1

अपने बोर्ड पर एक मैक्सिम DS18S20 रखो, प्रत्येक में एक अद्वितीय सीरियल नंबर है और बहुत सस्ती हैं। इस डिवाइस का उपयोग करके इंटरनेट पर बहुत सारे सॉफ्टवेयर उदाहरण हैं। आप इसे नैनो में डेड-बग कर सकते हैं। इसे संचालित करने के लिए +5 और जमीन के कनेक्शन से जुड़ी 4.7K रिसिस्टर की जरूरत है। आप डिवाइस के 5 वी और ग्राउंड कनेक्शन को जमीन से जोड़ सकते हैं। नैनो के लिए यह मृत बग आसान होगा फिर एक पिन के माध्यम से सरल संचार द्वारा आप सीरियल नंबर प्राप्त कर सकते हैं। कई पैकेज उपलब्ध हैं। देखभाल के साथ आप एक इनपुट पिन का उपयोग कर सकते हैं, सीरियल पढ़ सकते हैं और इसे भविष्य के उपयोग के लिए बचा सकते हैं। जब यह हो जाएगा तब यह फिर से करेगा। बस सुनिश्चित करें कि इनिट प्रक्रिया के दौरान इनपुट कम संचालित नहीं है।

शुभ लाभ,

गिल


एक बार जब आप USB सीरियल में समस्या को हल नहीं कर रहे होते हैं, लेकिन किसी ऐसी चीज़ के साथ जिसे खोजने के लिए बोर्ड पर प्रोसेसर के सहयोग की आवश्यकता होती है, तो आप बूटलोडर को संशोधित कर सकते हैं और इसमें सीरियल नंबर दोनों को आसानी से पढ़ सकते हैं। कार्यक्रम (यानी "स्केच")
क्रिस स्ट्रैटन

क्या बकवास है। DS18S20 एक डिजिटल थर्मामीटर है!
एल्म्यू

हाँ यह एक थर्मामीटर है; हां इसमें एक अद्वितीय सीरियल नंबर है जिसे प्रत्येक बोर्ड पर कोड या इप्रोम को बदलने की आवश्यकता नहीं है। सस्ती और सरल। माइक्रोबैक का जवाब देना है। यह बदलते आईडीई या किसी भी फर्मवेयर आदि के साथ काम करेगा, लेकिन इसके लिए एक पिन की आवश्यकता होती है जिसे जरूरत पड़ने पर एक मक्स के साथ काम किया जा सकता है।
गिल

1

मुझे यह कहने से नफरत है, लेकिन जवाब नहीं है, कई 340 आधारित USB- सीरियल कन्वर्टर्स को विशिष्ट रूप से पहचानने का कोई तरीका नहीं है।

मेरे पास एक ही समस्या है, जहां मेरे पास कई (4+) यूएसबी-सीरियल कन्वर्टर्स हैं, किसी को भी किसी भी पोर्ट में प्लग किया जा सकता है, और वे एक ही समय में खरीदे गए थे और इसलिए हर तरह से समान हैं (0 के iSerial सहित)।

मूल रूप से, अगर मैं चीजों को इधर-उधर कर देता हूं, तो मुझे हाथ से जुड़कर देखना होगा कि क्या जुड़ा हुआ है, डर्म्सग आउटपुट, आदि यह एक बड़ा दर्द है।

टॉम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.