ATtiny45 डायरेक्ट USB 2.0 कनेक्शन का फर्मवेयर और सर्किट


9

मैं एक ATtiny45 का उपयोग करके अपने स्वयं के मॉड्यूलर यूएसबी डिवाइस बनाना चाहता हूं जो बस यूएसबी पर पीसी को डेटा भेजता है। मैं डेटा नहीं पढ़ रहा हूं, इसलिए एक ही रास्ता (एटीटीनी -> पीसी) कनेक्शन पूरी तरह से ठीक होगा।

मैं Arduino Uno का उपयोग ISP के रूप में मानक ArduinoISP स्केच के साथ Arduino Software के भीतर से लोड किए गए ISP के रूप में कर रहा हूं । मैं AVP के रूप में Arduino के साथ ATtiny45 को ISP के रूप में प्रोग्राम करने के लिए AVRDUDE का उपयोग करने के बारे में सोच रहा हूं क्योंकि मैं HEX के लिए संकलित C कोड का उपयोग करने में सक्षम होना चाहता हूं क्योंकि यह Arduino प्रोग्रामिंग लैंग्वेज से अधिक उन्नत है।

सर्किट के मेरे मूल विचार: यहां छवि विवरण दर्ज करें

जैसा कि आप देख सकते हैं, मुझे "प्रत्यक्ष" यूएसबी कनेक्शन चाहिए। अब तक मैं जानता हूं कि मुझे इसके लिए एक सॉफ्टवेयर आधारित समाधान का उपयोग करना होगा।

  1. मैंने अपने ATtiny45 के साथ काम करने के लिए SoftwareSerial प्रबंधित किया है । इसके लिए मैंने निम्नलिखित कोड के साथ ATtiny45 को प्रोग्राम करने के लिए Arduino सॉफ़्टवेयर का उपयोग किया है:

    #include <SoftwareSerial.h>
    #define rxPin 3
    #define txPin 4
    SoftwareSerial serial(rxPin, txPin);
    
    void setup() {
        pinMode(rxPin, INPUT);
        pinMode(txPin, OUTPUT);
        pinMode(led, OUTPUT);     
        serial.begin(4800);
    }
    
    void loop() {
        serial.println("1");
        delay(1000);
    }

    कृपया ध्यान दें कि मैं पिन 3 (अभी तक) का उपयोग नहीं करता हूं, लेकिन मुझे सॉफ़्टवेयरसियर के लिए इसे परिभाषित करने की आवश्यकता है।

    इस तरह, SoftwareSerial का उपयोग करते हुए, मैं अपने Arduino UNO के TX पिन में सीधे ATtiny से डेटा भेजने में सक्षम था जो इस परीक्षण के लिए उस पर लोड किया गया एक खाली स्केच था। मैं COM4 पर डेटा को पढ़ने के लिए (मेरे मामले में) Arduino सॉफ़्टवेयर के सीरियल मॉनिटर का उपयोग कर रहा था क्योंकि मेरे पीसी ने किसी भी डिवाइस (COM पोर्ट) को नहीं पहचाना है क्योंकि मैंने प्रोग्राम किए गए एटीटीनी को सीधे एक यूएसबी केबल पर हुक करने की कोशिश की है।

    दुर्भाग्य से मुझे केवल सीरियल मॉनिटर में अजीब यूनिकोड वर्ण मिले। मुझे लगता है कि यह इसलिए है क्योंकि डेटा हेक्स प्रारूप में है। इसलिए मैंने देखा है कि मुझे USB / Serial Converter को USB और ATtiny45 से कनेक्ट करने की आवश्यकता है ... मैंने ऐसे कन्वर्टर्स की खोज की है, लेकिन मैं किसी भी पूर्व-निर्मित बोर्ड का उपयोग नहीं करना चाहता, क्योंकि मैं चाहता हूं कि सभी एक बोर्ड पर मेरे घटक। मुझे लगता है कि मेरे प्रोजेक्ट के लिए एक एफडीडीआई चिप बहुत "अधिक" होगी, है ना? (यह मिलाप करने के लिए बहुत छोटे पिन है ...)

  2. वी-यूएसबी तब मेरा दूसरा दृष्टिकोण था, क्योंकि इसमें यूएसबी / सीरियल कनवर्टर (जैसा कि मुझे पता है) की आवश्यकता नहीं है। इसलिए वी-यूएसबी का उपयोग करने के लिए मुझे AVRDUDE का उपयोग करना होगा जैसा कि मैंने पहले उल्लेख किया है।

    मुझे यह अच्छा उदाहरण वी-यूएसबी ईज़ीलॉगर मिला है । इसमें एक सर्किट डिजाइन और उदाहरण फर्मवेयर शामिल है। (C / C ++ / HEX)

    केवल एक चीज जो मैं जानना चाहता हूं वह यह है: क्या मुझे वास्तव में उदाहरण में दिखाए गए मेरे सर्किट की तरह दिखने की आवश्यकता है? -> यहां छवि विवरण दर्ज करें

इस तरह के यूएसबी कनेक्शन के बारे में मुझे और क्या जानने की जरूरत है? (मुझे USB / सीरियल कनवर्टर की आवश्यकता क्यों है? क्या मैं सिर्फ +5 & VCC को हुक कर सकता हूं? मुझे किन घटकों की आवश्यकता है? मुझे TX-बिट्स के माध्यम से किस तरह के संकेत की आवश्यकता है? हेक्स? किस वोल्टेज की आवश्यकता है? होने के लिए ? )

आपके सभी उत्तर के लिए धन्यवाद।


अपडेट करें

यहां कुछ विशेष लिंक दिए गए हैं जो वास्तव में कुछ बिंदुओं में मेरी मदद करते हैं। लेकिन मैं अभी भी इसे पूरी तरह से समझ नहीं पाया था ...

पहला एक -> http://www.ernstc.dk/arduino/tinycom.html

और दूसरा -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino ("सीरियल आउटपुट" खंड पर स्क्रॉल करें)


2
हां, आप कम से कम यदि आप विद्युत सीमा के विनिर्देशों का बहुत बुरी तरह से उल्लंघन नहीं करना चाहते हैं । कृपया ध्यान दें कि आपके ऊपरी आरेख में आपका "USB" कनेक्टर सकल रूप से भ्रमित है। D + / D- अलग-अलग संचरित और पंक्तियाँ नहीं हैं, बल्कि एक द्विदिश अंतर जोड़ी है
क्रिस स्ट्रैटन

मुझे अपने बुरे स्केच के लिए खेद है। मैं वास्तव में इलेक्ट्रिक आदमी नहीं हूं, लेकिन एक प्रोग्रामर हूं। "ड्राइंग" मेरे विचार का सिर्फ एक दृश्य था जो मेरे दिमाग में था क्योंकि मैं इस परियोजना की योजना बना रहा था।
ऐस

जवाबों:


5

आप एक FTDI कनवर्टर के बिना, सीधे ATTiny45 को USB पर संचार कर सकते हैं।

सब कुछ काम करने के लिए आपको वी-यूएसबी की आवश्यकता होगी लाइब्रेरी की ।

काम करने वाली हर चीज़ का एक बहुत अच्छा उदाहरण यहाँ है , कि वह EasyLogger से उसी उदाहरण का उपयोग करती है।

एक ही लेखक के पास कुछ अन्य अच्छे सुझाव और परियोजनाएं हैं USB और uC के साथ ।

ATtiny के साथ एक नमूना सर्किट:

ढांच के रूप में

इस सर्किट का अनुकरण करें - सर्किटलैब का उपयोग करके बनाई गई योजनाबद्ध


पूछने वाला पहले ही वी-यूएसबी को देख चुका है।
इग्नासियो वाज़केज़-अब्राम्स

बहुत बहुत धन्यवाद। मैं जितनी जल्दी हो सके यह कोशिश करूंगा। लेकिन पहले मैं आपको वी-यूएसबी लिब के साथ एटीटीएन 45 प्रोग्राम करने के लिए प्रॉपर तरीके से पूछना चाहता हूं .. मुझे यकीन नहीं है कि क्या और कैसे करना है .. मैंने AVRDUDE में देखा है। अब तक मुझे पता है कि मुझे बूटलोडर लोड करना है ??? छोटे के साथ ही फर्मवेयर (हेक्स फ़ाइल ??)। और मुझे लगता है कि मुझे अपने आवेदन के लिए कोड बदलने के बाद सी कोड (उदाहरण के लिए आसान उदाहरण) को संकलित करने की आवश्यकता है। सही ?
ऐस

और क्या आप नंगे न्यूनतम सर्किट को "सरल" कर सकते हैं? मैं जैसे एलईडी के कारण भ्रमित हो गया ... मुझे वास्तव में इस समय एलईडी या सेंसर जैसे किसी भी घटक की आवश्यकता नहीं है।
ऐस

और डी 2 और डी 3 किस प्रकार के डायोड हैं? Schottky डायोड?
ऐस

और भी, फ्यूज बिट्स के बारे में क्या? और आपके द्वारा लिंक किए गए पोस्ट का बहुत अंत, वे फ़्यूज़ के बारे में कुछ कहते हैं ?? मैंने सुना है कि अगर मैं फ़्यूज़ में कुछ गड़बड़ करता हूं, तो मैं छोटे को बर्बाद कर सकता हूं?
ऐस

5

मूल रूप से, USB एक उच्च स्तरीय संचार प्रोटोकॉल है जिसमें सिग्नल लाइन स्तर ड्राइविंग, समय और समाप्ति के लिए विशिष्ट आवश्यकताएं हैं। यह धारावाहिक की तरह सरल नहीं है, इसमें अंतर डेटा लाइनें और NRZI एन्कोडिंग, आवश्यक मतदान, हैंडशेकिंग, आदि हैं यही कारण है कि आपको USB / सीरियल एडाप्टर की आवश्यकता है, या आपको USB हार्डवेयर या सॉफ़्टवेयर कार्यान्वयन की आवश्यकता क्यों है।

जबकि USB 5V पावर का उपयोग करता है, सिग्नल लाइनें वास्तव में 3.3V से 3.6V हैं। यही कारण है कि VUSB सर्किट जो आप दिखाते हैं, उन दो लाइनों पर जेनर डायोड का उपयोग करता है। टिनी बस 3.3V पर नहीं चल सकती है क्योंकि इसे 3.3V पर आवश्यक 16MHz पर नहीं देखा जा सकता है।

बाकी हिस्से, आर 1-आर 3, डी 1, डी 2 और सी 1, सी 2 नंगे न्यूनतम आवश्यक भाग हैं। यह वास्तव में आपको मिलने वाली सुविधाओं के लिए बहुत कुछ नहीं पूछ रहा है। Vusb का उपयोग करने वाली सभी परियोजनाओं की सूची के लिए इस पृष्ठ को देखें।

स्विच, R4 और LED1 सभी विशिष्ट डेटा लॉगिंग फ़र्मवेयर उदाहरण का हिस्सा हैं, और यदि आपको फ़र्मवेयर बदलने की ज़रूरत नहीं है, तो इसे टाला जा सकता है।


उस उत्तर के लिए धन्यवाद। मुझे पता था कि usb की डेटा लाइनें ~ 3.3V का उपयोग करती हैं। लेकिन जो मुझे समझ नहीं आ रहा है वह यह है कि वास्तव में यूएसबी सिग्नल कैसे परिभाषित किया जाता है? उन बिट्स की एक पंक्ति नहीं है? क्या मैं उन बिट्स को लूप में सही टाइमिंग के साथ "इम्यूलेट" नहीं कर सकता (सिग्नल ऑन और ऑफ कर रहा हूं)? मेरे पास पहले से ही 8MHz और 4800 के एक सीरियल बॉड्रेट पर चलने के लिए आंतरिक ऑस का उपयोग कम है, इसलिए समय कुछ ब्लॉगपोस्ट के अनुसार समस्या नहीं होनी चाहिए जो मैंने पाया है ...
Ace

1
@ 4800 bps की 4.8 khz है। USB कम गति 1.5 MHZ है और एन्कोडिंग, समता, USB वर्णनकर्ता और सब कुछ है। VUSB USB डेटा का "अनुकरण" करता है, लेकिन इसका बहुत जटिल है।
राहगीर

1
@ मूल रूप से, आप मॉनिटर पर टैप करके कंप्यूटर पर मोर्स कोड का उपयोग करने की कोशिश कर रहे किसी व्यक्ति के बराबर करने की कोशिश कर रहे हैं।
राहगीर

HAHA XD यही कारण है कि मैं अपने अपडेट में दूसरे लिंक में 4800 की बाउड्रीट का उपयोग कर रहा हूं।
ऐस

1

एक पोस्ट में उत्तर देने के लिए बहुत सारे प्रश्न, लेकिन यहाँ कुछ त्वरित बिंदु हैं:

कुछ माइक्रोकंट्रोलर्स में एक USB "एंडपॉइंट" और संबंधित हार्डवेयर होता है, लेकिन Atmel साइट पता चलता है कि ATTiny45 नहीं करता है।

इसलिए आप बस माइक्रोकंट्रोलर पोर्ट को USB कनेक्टर की तरह कनेक्ट नहीं कर सकते, क्योंकि USB इलेक्ट्रॉनिक और प्रोटोकॉल दोनों स्तरों पर एक जटिल बस है।

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

FTDI चिप्स मिलाप के लिए बहुत कठिन नहीं हैं, लेकिन मिलाप प्रतिरोध के साथ एक उचित पीसीबी यह आसान बना देगा।

पहले मैं इस FT232 केबल की तरह कुछ का उपयोग किया है :

FT232 USB केबल
(स्रोत: ftdichip.com )

इसमें USB कनेक्टर में FTDI चिप लगाई गई है और पावर सप्लाई करते हुए सभी लेवल ट्रांसलेशन को हैंडल करती है। अंत एक सरल 0.1 "पिच कनेक्टर है जिसे आप पिन हेडर से कनेक्ट कर सकते हैं।

वे उचित कीमतों के लिए ईबे पर उपलब्ध हैं।



यह काफी दिलचस्प है। मैं अपने पोस्ट को तदनुसार संपादित करूंगा, शायद कोई और वी-यूएसबी बारीकियों के साथ मदद कर सकता है।
डेविड

@ डेविड - हां, वीयूएसबी मूल रूप से यूएसबी का अनुकरण करता है। आपकी पोस्ट सामान्य रूप से सही है, लेकिन विशेष रूप से ATTiny परिवार को इस पद्धति के माध्यम से USB से जोड़ा जा सकता है।
गुस्तावो लिटोव्स्की

आपके उत्तर के लिए धन्यवाद। मुझे यह सोचना चाहिए कि मैं एक एकल बोर्ड पर एक प्रोजेक्ट बनाने की योजना बना रहा हूं, जिसमें एक USB A हेड (जैसे यह एक computerkabelversand.de/pictures/picturesbig/… ) हो। तो मूल रूप से यह एक आम यूएसबी स्टिक जैसा दिखता है। कोई केबल नहीं, बस दूसरे छोर पर एक 3pin-jack। यही कारण है कि मैंने इसे "मॉड्यूलर" कहा। इस तरह मैं ATtiny को व्यक्तिगत रूप से प्रोग्राम करने में सक्षम हूं (यह हटाने योग्य है) और मेरे अलग-अलग सेंसर / डिवाइस हैं जो 3 या 4 से जुड़े हैं (आरएक्स जिसे मैं अभी तक उपयोग नहीं करता हूं) बाएं पिन।
ऐस

1
आज यह देखा, जो आपके काम आ सकता है: rayshobby.net/?p=7363
डेविड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.