विषयसूची:

रास्पबेरी पाई के साथ AVR/Arduino चमकती: 3 चरण (चित्रों के साथ)
रास्पबेरी पाई के साथ AVR/Arduino चमकती: 3 चरण (चित्रों के साथ)

वीडियो: रास्पबेरी पाई के साथ AVR/Arduino चमकती: 3 चरण (चित्रों के साथ)

वीडियो: रास्पबेरी पाई के साथ AVR/Arduino चमकती: 3 चरण (चित्रों के साथ)
वीडियो: अरुडिनो मास्टरक्लास | 90 मिनट में पूर्ण प्रोग्रामिंग कार्यशाला! 2024, जुलाई
Anonim
रास्पबेरी पाई के साथ AVR/Arduino चमकती
रास्पबेरी पाई के साथ AVR/Arduino चमकती

एक इन-सिस्टम प्रोग्रामर (ISP) एक ऐसा उपकरण है जिसका उपयोग आप कई माइक्रोकंट्रोलर को प्रोग्राम करने के लिए कर सकते हैं, उदाहरण के लिए ATMega328p जो कि Arduino Uno का दिमाग है। आप USBtinyISP जैसा कुछ खरीद सकते हैं, या आप Arduino का उपयोग भी कर सकते हैं। यह निर्देश आपको दिखाएगा कि रास्पबेरी पाई को आईएसपी के रूप में कैसे उपयोग किया जाए।

एवार्ड प्रोग्राम, जो कि Arduino IDE हुड के तहत चिप्स को फ्लैश करने के लिए उपयोग करता है, का उपयोग कई प्रोग्रामर के साथ किया जा सकता है। इसका एक विकल्प पीआई के विस्तार बंदरगाह पर एसपीआई पिन का उपयोग करना है। मैं समझाता हूँ कि उपयुक्त कनेक्शन कैसे बनाए जाते हैं, एक साधारण सर्किट को परफ़ॉर्म पर एक साथ रखा जाता है ताकि आपको हर बार चिप को फ्लैश करने के लिए वायरिंग को फिर से न करना पड़े, और एवरड्यूड को कैसे स्थापित और उपयोग करना है। मैं आपको यह भी दिखाऊंगा कि इस पद्धति का उपयोग करके एक AVR चिप जैसे ATmega या ATtiny पर Arduino IDE का उपयोग करके संकलित प्रोग्राम कैसे प्राप्त करें।

आवश्यक चीजें:

  • रास्पबेरी पाई नवीनतम रास्पियन के साथ स्थापित
  • 40-पिन पुरुष हेडर सॉकेट (या 26-पिन यदि आपके पास पुराना पाई है)
  • आपके Pi. से कनेक्ट करने के लिए IDE केबल
  • 16 मेगाहर्ट्ज क्रिस्टल गुंजयमान यंत्र
  • 22 पीएफ कैपेसिटर (2)
  • एलईडी (1) प्रोग्रामर की स्थिति को इंगित करने के लिए
  • 8, 14, और/या 28 पिन आईसी सॉकेट, इस पर निर्भर करता है कि आप किस आकार के चिप्स को फ्लैश करना चाहते हैं
  • कुछ परफ़ॉर्मर, तार, सोल्डर

चरण 1: मोची अटैचमेंट का निर्माण

बिल्डिंग मोची अटैचमेंट
बिल्डिंग मोची अटैचमेंट
बिल्डिंग मोची अटैचमेंट
बिल्डिंग मोची अटैचमेंट
बिल्डिंग मोची अटैचमेंट
बिल्डिंग मोची अटैचमेंट

सीरियल पेरिफेरल इंटरफेस (एसपीआई), जिसे फोर-वायर सीरियल भी कहा जाता है, एक मास्टर डिवाइस और एक या अधिक स्लेव डिवाइस के बीच संचार करने का एक तरीका है। हम इसका उपयोग चिप्स को फ्लैश करने के लिए करेंगे, जिसमें पाई मास्टर के रूप में और चिप दास के रूप में होगी। आप पाई और अपनी चिप के बीच निम्नलिखित कनेक्शन बनाएंगे (विभिन्न AVRs और Pi विस्तार पोर्ट के लिए ऊपर दिए गए पिनआउट देखें, यह जानने के लिए कि कौन से पिन कौन से हैं):

  • MOSI (मास्टर-आउट-स्लेव-इन) पिन को एक साथ कनेक्ट करें
  • SCLK (साझा घड़ी) पिन को एक साथ कनेक्ट करें
  • एमआईएसओ (मास्टर-इन-स्लेव-आउट) पिन को 220 ओम रेसिस्टर के साथ कनेक्ट करें, ताकि पाई को चिप से किसी भी अप्रत्याशित रूप से उच्च वोल्टेज से बचाया जा सके।
  • GPIO 25 को Pi पर सीधे चिप पर RESET पिन से कनेक्ट करें। प्रोग्रामिंग करते समय पाई इस पिन को कम खींचती है, इसलिए हम प्रोग्रामिंग न होने पर इसे उच्च रखने के लिए 10K रेसिस्टर का उपयोग करते हैं, और 1K प्रोटेक्शन रेसिस्टर के साथ एक एलईडी सकारात्मक वोल्टेज पर चलने के लिए हमें प्रोग्रामिंग करते समय कुछ अच्छी दृश्य प्रतिक्रिया देता है।

हम पाई और चिप्स के बीच ग्राउंड और पावर (3.3V) पिन कनेक्ट करते हैं जिसे हम प्रोग्राम करना चाहते हैं। यदि आप पहले से नहीं जानते हैं, तो रास्पबेरी पाई के पिन 5V सहनशील नहीं हैं - यदि उन पर 3.3V से अधिक दिखाई देता है तो वे क्षतिग्रस्त हो जाएंगे। अगर प्रोग्राम किए जा रहे चिप्स को किसी कारण से 5V पावर की आवश्यकता होती है, तो हम पाई के पिन की सुरक्षा के लिए एक लेवल शिफ्टर चिप का उपयोग कर सकते हैं, लेकिन मुझे 3.3V का उपयोग करने में कोई समस्या नहीं हुई है - इसलिए मैं इसे सुरक्षित खेलने और घटकों पर बचत करने की सलाह देता हूं।

अंत में, हम चिप पर XTAL पिन में एक 16MHz क्रिस्टल ऑसिलेटर कनेक्ट करते हैं, जिसे हम 22pF कैपेसिटर के एक जोड़े के माध्यम से जमीन से भी जोड़ते हैं। AVR चिप्स को विभिन्न आवृत्तियों पर चलाने के लिए सेट किया जा सकता है, और उस आवृत्ति को निर्धारित करने के लिए आंतरिक या बाहरी स्रोत का उपयोग करने के लिए भी सेट किया जा सकता है। यदि आपकी चिप आवृत्ति स्रोत के रूप में बाहरी क्रिस्टल का उपयोग करने के लिए सेट है, तो आप इसके बिना पुन: प्रोग्राम नहीं कर पाएंगे। अन्यथा कोई फर्क नहीं पड़ता कि यह वहां है।

आप अंतिम छवि में सर्किट योजनाबद्ध का उपयोग एक गाइड के रूप में अपने मोची के लगाव को परफ़ॉर्मर पर असेंबल करने के लिए कर सकते हैं। आपके पास जितने चाहें उतने या कुछ अलग आकार के IC सॉकेट हो सकते हैं, बस उपयुक्त पिन को पाई और क्रिस्टल के समानांतर कनेक्ट करें। एन.बी. यदि आप एक गाइड के रूप में मेरे प्रोटोटाइप की छवि का उपयोग करते हैं, तो ध्यान दें कि मैंने कुछ अतिरिक्त हेडर पिन और सॉकेट जोड़े हैं ताकि मैं असंबंधित कारणों से पाई पर पिन एक्सेस कर सकूं।

चरण 2: Avrdude को स्थापित करना और उसका उपयोग करना

Avrdude को स्थापित करना और उसका उपयोग करना
Avrdude को स्थापित करना और उसका उपयोग करना
Avrdude को स्थापित करना और उसका उपयोग करना
Avrdude को स्थापित करना और उसका उपयोग करना
Avrdude को स्थापित करना और उसका उपयोग करना
Avrdude को स्थापित करना और उसका उपयोग करना
Avrdude को स्थापित करना और उसका उपयोग करना
Avrdude को स्थापित करना और उसका उपयोग करना

अपने पाई पर avrdude स्थापित करने के लिए, बस टाइप करें

sudo apt-avrdude स्थापित करें

फिर आपको SPI इंटरफ़ेस को सक्षम करने की आवश्यकता होगी, यदि यह पहले से चालू नहीं है। ऐसा करने के लिए एक कमांड-लाइन तरीका है, लेकिन रास्पबेरी पाई कॉन्फ़िगरेशन टूल का उपयोग करना बहुत आसान है। प्रकार

सुडो रास्पि-कॉन्फ़िगरेशन

और SPI चालू करने के लिए इंटरफ़ेस विकल्प पर जाएँ।

अपनी चिप को फ्लैश करने के लिए, अपने पाई से रिबन केबल को परफ़ॉर्म सर्किट पर कनेक्टर में प्लग करें और चिप को उपयुक्त IC सॉकेट में डालें (सुनिश्चित करें कि यह सही तरीके से सामना कर रहा है)।

किसी प्रोग्राम को फ्लैश करते समय, आपको चिप में फ़्यूज़ को सही ढंग से सेट करना भी सुनिश्चित करना चाहिए। ये वास्तव में चिप में केवल बिट्स हैं जिन्हें आप यह बताने के लिए सेट करते हैं कि किस घड़ी की गति पर चलना है, क्या चिप लिखते समय EEPROM को मिटाना है, आदि। आप प्रत्येक बिट को कैसे सेट करें, यह जानने के लिए पूर्ण AVR स्पेक पढ़ सकते हैं, लेकिन engbedded.com/fusecalc पर दिए गए फ़्यूज़ कैलकुलेटर का उपयोग करना बहुत आसान है। आपके द्वारा उपयोग किए जा रहे AVR भाग के नाम का चयन करें और "फ़ीचर चयन" क्षेत्र में अपने इच्छित विकल्प चुनें। मैं आमतौर पर यह सुनिश्चित करता हूं कि घड़ी की सेटिंग्स सही हैं और अन्य चीजों को डिफ़ॉल्ट रूप से छोड़ दें। आप लगभग हमेशा "सीरियल प्रोग्रामिंग सक्षम" चेक और "रीसेट अक्षम" अनचेक छोड़ना चाहेंगे - अन्यथा आप चिप को रीप्रोग्राम नहीं कर पाएंगे। जब आपके पास सही सेटिंग्स हों, तो आप "वर्तमान सेटिंग्स" क्षेत्र को नीचे स्क्रॉल कर सकते हैं और छवि में दिखाए गए अनुसार AVRDUDE तर्कों को कॉपी कर सकते हैं।

फ़्यूज़ सेट करने के लिए, कमांड दर्ज करें

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

जहां partname उस चिप से मेल खाता है जिसका आप उपयोग कर रहे हैं। आप sudo ardude -c linuxspi -p ?type दर्ज करके भाग के नामों की सूची पा सकते हैं। अपने प्रोग्राम को फ्लैश करने के लिए, सुनिश्चित करें कि यह आपकी वर्तमान निर्देशिका में है और दर्ज करें

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash:w::i

दोनों आदेशों के बाद, चिप को संशोधित करते समय एलईडी प्रकाश करेगा।

चरण 3: AVRs पर Arduino प्रोग्राम प्राप्त करना

AVRs पर Arduino प्रोग्राम प्राप्त करना
AVRs पर Arduino प्रोग्राम प्राप्त करना
AVRs पर Arduino प्रोग्राम प्राप्त करना
AVRs पर Arduino प्रोग्राम प्राप्त करना
AVRs पर Arduino प्रोग्राम प्राप्त करना
AVRs पर Arduino प्रोग्राम प्राप्त करना

इस निर्देश का मुख्य फोकस पहले से संकलित कार्यक्रमों को चिप्स पर चमकाना है, न कि उन्हें कैसे लिखना या संकलित करना है। हालाँकि, मैं यह बताना चाहता था कि आप Arduino IDE का उपयोग करके बायनेरिज़ को कैसे संकलित कर सकते हैं और उन्हें इस पद्धति का उपयोग करके नंगे AVR चिप्स पर प्राप्त कर सकते हैं, क्योंकि Arduino सीखना अपेक्षाकृत आसान है और बहुत सारे ट्यूटोरियल और उदाहरण हैं।

सबसे पहले, आपको एवीआर चिप्स के बारे में जानकारी जोड़ने की आवश्यकता होगी जो आप चमकेंगे ताकि आईडीई जानता है कि उनके लिए कैसे संकलित किया जाए। जेम्स स्लीमैन ने कुछ सेटअप फाइलों को एक साथ रखने में बहुत मदद की है, जो कि जीथब पर उपलब्ध हैं। उनका उपयोग करने के लिए, Arduino IDE में "प्राथमिकताएं" मेनू खोलें और "अतिरिक्त बोर्ड प्रबंधक URL" फ़ील्ड के बगल में स्थित बॉक्स पर क्लिक करें। दिखाई देने वाले डायलॉग बॉक्स में निम्न URL को कॉपी और पेस्ट करें:

फिर, "टूल्स" मेनू पर जाएं और "बोर्ड" सबमेनू में "बोर्ड मैनेजर…" विकल्प खोजें। बोर्ड प्रबंधक संवाद बॉक्स में सूची के नीचे स्क्रॉल करें और DIY ATmega और DIY ATtiny बोर्ड स्थापित करें।

अपने कार्यक्रमों को संकलित करने के लिए, पहले सुनिश्चित करें कि आपने "प्रोसेसर" मेनू में सही चिप का चयन किया है, साथ ही सही प्रोसेसर गति भी। "बूटलोडर का उपयोग करें: नहीं" विकल्प का चयन करें, क्योंकि हम सीधे पीआई के साथ अपलोड करेंगे और इस प्रकार अतिरिक्त स्थान का उपयोग कर सकते हैं जो सामान्य रूप से Arduino बूटलोडर द्वारा लिया जाएगा। अब, "सत्यापित करें" बटन (चेक मार्क) पर क्लिक करें। यह आपके प्रोग्राम को अपलोड करने की कोशिश किए बिना संकलित करेगा (चूंकि आप उस चरण को स्वयं कर रहे हैं)।

यह मानते हुए कि सब कुछ ठीक हो गया है, अब आपको संकलित कार्यक्रम को अपने पाई में लाने की आवश्यकता है। आईडीई उन्हें अस्थायी स्थान पर छुपाता है, क्योंकि इसे प्रोग्राम अपलोड करने के लिए डिज़ाइन किया गया है। विंडोज़ पर, यह आपकी उपयोगकर्ता निर्देशिका में 'arduino_build' से शुरू होने वाले फ़ोल्डर में AppData/Local/Temp में है।.hex फ़ाइल की तलाश करें - यह आपका प्रोग्राम है! इसे एफ़टीपी या यूएसबी स्टिक के माध्यम से अपने पीआई पर भेजें, और आप व्यवसाय में हैं।

ऐसा करने के लिए जरूरी है कि आपके पास अपने प्रोग्राम्स को कंपाइल करने के लिए एक विंडोज पीसी या मैक हो, जिसे आप पीआई को भेजते हैं। यह वास्तव में पाई पर ही ऐसा करने में सक्षम होगा, लेकिन दुर्भाग्य से रास्पियन रिपॉजिटरी में उपलब्ध Arduino IDE का आधिकारिक संस्करण पुराना है और इसमें बोर्ड मैनेजर नहीं है। इसके बिना, नंगे AVRs के संकलन के लिए उपयुक्त सेटिंग्स को जोड़ना थोड़ा मुश्किल है। आपके पीआई पर Arduino के एक और हालिया संस्करण को संकलित करने के लिए वहां ट्यूटोरियल हैं - यदि आप यही करना चाहते हैं, तो उन्हें ढूंढें! मुझे यह भी लगता है कि आईडीई के भीतर से एक चिप फ्लैश करने के लिए लिनक्सस्पि प्रोग्रामर का उपयोग करने के लिए आईडीई प्राप्त करना संभव होना चाहिए (यानी "डाउनलोड" बटन का उपयोग करके), लेकिन यह मेरे धैर्य और कौशल स्तर से परे है - यदि आप जानते हैं एक तरह से, इसे टिप्पणियों में पोस्ट करें! अंत में, आप सीधे एवीआर-सी में प्रोग्राम लिख सकते हैं और उन्हें avr-gcc के साथ पीआई पर संकलित कर सकते हैं, जिससे आपको रास्पबेरी पीआई में एक पूर्ण एवीआर विकास मंच मिल जाएगा। मैंने उसमें से एक छोटा सा काम किया है, और अगर आप उस रास्ते पर जाना चाहते हैं, तो मैं आपको सलाम करता हूं। चमकती हो जाओ!

सिफारिश की: