विषयसूची:

स्टैंडअलोन Arduino 3.3V W/बाहरी 8 MHz घड़ी को Arduino Uno से ICSP/ISP के माध्यम से प्रोग्राम किया जा रहा है (सीरियल मॉनिटरिंग के साथ!): 4 चरण
स्टैंडअलोन Arduino 3.3V W/बाहरी 8 MHz घड़ी को Arduino Uno से ICSP/ISP के माध्यम से प्रोग्राम किया जा रहा है (सीरियल मॉनिटरिंग के साथ!): 4 चरण

वीडियो: स्टैंडअलोन Arduino 3.3V W/बाहरी 8 MHz घड़ी को Arduino Uno से ICSP/ISP के माध्यम से प्रोग्राम किया जा रहा है (सीरियल मॉनिटरिंग के साथ!): 4 चरण

वीडियो: स्टैंडअलोन Arduino 3.3V W/बाहरी 8 MHz घड़ी को Arduino Uno से ICSP/ISP के माध्यम से प्रोग्राम किया जा रहा है (सीरियल मॉनिटरिंग के साथ!): 4 चरण
वीडियो: HOW TO CONVERT ARDUINO OPERATING VOLTAGE LEVEL FROM 5V TO 3.3V (Warning: 3.3V overclocked at 16Mhz) 2024, जुलाई
Anonim
स्टैंडअलोन Arduino 3.3V W/बाहरी 8 MHz घड़ी Arduino Uno से ICSP/ISP (सीरियल मॉनिटरिंग के साथ!)
स्टैंडअलोन Arduino 3.3V W/बाहरी 8 MHz घड़ी Arduino Uno से ICSP/ISP (सीरियल मॉनिटरिंग के साथ!)
स्टैंडअलोन Arduino 3.3V W/बाहरी 8 MHz घड़ी Arduino Uno से ICSP/ISP (सीरियल मॉनिटरिंग के साथ!)
स्टैंडअलोन Arduino 3.3V W/बाहरी 8 MHz घड़ी Arduino Uno से ICSP/ISP (सीरियल मॉनिटरिंग के साथ!)

उद्देश्य:

  • एक स्टैंडअलोन Arduino बनाने के लिए जो 8 मेगाहर्ट्ज बाहरी घड़ी से 3.3V पर चलता है।
  • इसे Arduino Uno (5V पर चलने वाले) से ISP (जिसे ICSP, इन-सर्किट सीरियल प्रोग्रामिंग के रूप में भी जाना जाता है) के माध्यम से प्रोग्राम करने के लिए

    बूटलोडर फ़ाइल को संपादित करने और बूटलोडर को जलाने के लिए (आईएसपी के माध्यम से)

  • FTDI केबल के माध्यम से स्टैंडअलोन Arduino से धारावाहिक जानकारी पढ़ने में सक्षम होने के लिए

    FTDI केबल के बिना स्टैंडलाऑन Arduino से धारावाहिक जानकारी पढ़ने में सक्षम होने के लिए

प्रस्तावना:

मैं अपना स्टैंडअलोन प्रोजेक्ट बनाने की कोशिश कर रहा था, लेकिन स्टैंडअलोन Arduino को चलाने, प्रोग्रामिंग और मॉनिटर करने पर कोई व्यापक गाइड नहीं देखा - विशेष रूप से एक 8Mhz बाहरी घड़ी और 3.3V से चलने वाला और एक Arduino UNO द्वारा प्रोग्राम किया गया। मैंने कई अलग-अलग गाइडों को एक साथ रखा है और मैंने यह संदर्भित करने का प्रयास किया है कि मुझे क्रेडिट देने के लिए जानकारी कहां से मिली है जहां क्रेडिट देय है। यह मार्गदर्शिका कई दिनों तक समाधान खोजने और इसके कुछ हिस्सों को खोजने का परिणाम है जब मैं अपनी परियोजना का निर्माण कर रहा था। साथ ही, मैंने कई उपयोगी उत्पादों को जोड़ा है जो हाथ में नहीं आएंगे क्योंकि मैं किसी से संबद्ध हूं कंपनियों, लेकिन क्योंकि यह उन विशिष्ट वस्तुओं को शामिल करने के लिए प्रासंगिक है जिनका मैं उल्लेख कर रहा हूं।

शुरू करने से पहले सामान्य प्रश्न:

आपको इसे ISP के साथ प्रोग्राम करने और FTDI के माध्यम से मॉनिटर करने की आवश्यकता क्यों है? आप इसे FTDI के माध्यम से प्रोग्राम क्यों नहीं कर सकते?

हमें एक नया बूटलोडर जलाकर फ़्यूज़ सेटिंग्स को बदलना होगा और आप सीरियल संचार के माध्यम से ऐसा नहीं कर सकते। आपको ISP के माध्यम से बूटलोडर को बर्न करना होगा। यह उन लोगों के लिए भी उपयोगी है जिनके पास पूर्व-बूटलोडेड ATMEGA328 चिप नहीं है।

मैं इस तरह से सीरियल मॉनिटरिंग के साथ सिर्फ एक ISP केबल का उपयोग क्यों नहीं करता?

शायद, मेरी तरह, आपके पास बस एक नहीं है और एक के शिप किए जाने की प्रतीक्षा करने के बजाय आप 'जो आपके पास है उसका उपयोग करना पसंद करते हैं! मेरे पास एक FTDI केबल है (हालाँकि आप पाएंगे कि अंततः आपको इसकी आवश्यकता भी नहीं है: यह आपके जीवन को आसान बनाता है)।

क्या मुझे Uno से स्टैंडअलोन Arduino के लिए लॉजिक लेवल शिफ्टर की आवश्यकता नहीं है?

हां, आप करते हैं, लेकिन मैं आपको दिखाऊंगा कि इसे स्वयं कैसे बनाया जाए। आईएसपी केबल की तरह, मेरे पास एक नहीं है।

मैं इसे बाहरी शक्ति से दूर करना चाहता हूं। मैं उसको कैसे करू?

बहुत सारे गाइड हैं जो दिखाते हैं कि बैटरी पावर से एक स्टैंडअलोन Arduino को कैसे चलाया जाए। मैं लिखूंगा कि मैंने इसे कैसे किया और इसे यहां लिंक करें [बाद में सम्मिलित करेंगे]।

मार्गदर्शक

चरण 1: स्टैंडअलोन Arduino का निर्माण

स्टैंडअलोन Arduino का निर्माण
स्टैंडअलोन Arduino का निर्माण
स्टैंडअलोन Arduino का निर्माण
स्टैंडअलोन Arduino का निर्माण

1) इस लिंक से स्टैंडअलोन Arduino का निर्माण करें। आपको जिस गाइड की आवश्यकता है उसका एकमात्र हिस्सा "ATMEGA8/168/328 बेसिक्स" है।

  • आप Arduino Uno में से 3.3V से स्टैंडअलोन Arduino को पावर दे सकते हैं। (आप "बिजली की आपूर्ति के लिए सर्किट जोड़ना" शीर्षक वाले ट्यूटोरियल के पहले खंड को छोड़ सकते हैं।
  • 16 मेगाहर्ट्ज घड़ी को 8 मेगाहर्ट्ज घड़ी से बदलें।
  • बीच में 0.1 uF कैप जोड़ें: VCC और Gnd (दोनों तरफ) VRef और Gnd।

    • मेरे पास ये चित्र में शामिल नहीं हैं, लेकिन मेरे पास ये मेरी परियोजनाओं में हैं!
    • मुझे पता है कि यह फोटो में 16 मेगाहर्ट्ज थरथरानवाला है। मैंने गाइड में जो कुछ भी किया था, उसका पता लगाने से पहले मैंने फोटो लिया!

ATMEGA328p पिनआउट छवि स्रोत यहाँ।

सामान्य समस्या निवारण युक्तियाँ

  • सुनिश्चित करें कि आपने ATMEGA के 1 पिन करने के लिए VCC से 10k रोकनेवाला के माध्यम से उच्च रीसेट सेट किया है। अगर पिन ग्राउंडेड या फ्लोटिंग है तो यह काम नहीं करेगा।
  • दोबारा जांचें कि आपने तार और ऑसिलेटर सही तरीके से डाले हैं।
  • सुनिश्चित करें कि आप 8 मेगाहर्ट्ज ऑसिलेटर के लिए 22pF कैपेसिटर का उपयोग करते हैं। यह अन्यथा काम नहीं करेगा।
  • सुनिश्चित करें कि डिवाइस संचालित है।

चरण 2: आईएसपी वायरिंग

आईएसपी वायरिंग
आईएसपी वायरिंग
आईएसपी वायरिंग
आईएसपी वायरिंग

2) आईएसपी भाग बनाएं।

आप इस गाइड का पालन यहां एक छोटे लेकिन बहुत महत्वपूर्ण कदम के साथ करेंगे।

आप केवल गाइड का पालन नहीं कर सकते इसका कारण यह है कि आप एक महत्वपूर्ण भाग को याद कर रहे हैं: आप सीधे 5V कनेक्शन से 3.3V डिवाइस को प्रोग्राम नहीं कर सकते। (कम से कम, मैं नहीं कर सका: यह तब तक काम नहीं करेगा जब तक मैंने ऐसा नहीं किया)। आपको एक लॉजिक लेवल शिफ्टर डालने की जरूरत है जो UNO से 5V सिग्नल को 3.3Vstandalone Arduino में शिफ्ट करता है।

यदि आपके पास तर्क स्तर का शिफ्टर बोर्ड नहीं है, तो आप प्रतिरोधों का उपयोग करके एक बना सकते हैं। सभी तर्क स्तर का मज़दूर वास्तव में है (जब तक आप नीचे जा रहे हैं) एक वोल्टेज विभक्त है। आपको समान प्रतिरोधों में से 6 की आवश्यकता होगी, बहुत अधिक या बहुत कम कुछ भी नहीं। मैंने 220 ओम रेसिस्टर्स का इस्तेमाल किया, लेकिन मुझे यकीन है कि 10k रेसिस्टर्स भी काम करेंगे।

SCK (डिजिटल पिन 13) और MOSI (डिजिटल पिन 11) के लिए, वोल्टेज को एक तिहाई कम करने के लिए वोल्टेज डिवाइडर का उपयोग करें। संक्षेप में आपके पास एक Uno SCK और MOSI, फिर एक रेसिस्टर (220 ओम), फिर SCK और MOSI स्टैंडअलोन Arduino और 2 रेसिस्टर्स (कुल 440 ओम) से जमीन से जुड़े होंगे।

तो, इस खंड की शुरुआत में जुड़े गाइड को पढ़ें, लेकिन SCK और MOSI के बीच में वोल्टेज डिवाइडर शामिल करें। याद रखें, SCK, MISO, MOSI, और RESET, Uno पर पिन 13, 12, 11 और 10 हैं, लेकिन पिन 19 हैं।, 18, 17, और 1 स्टैंडअलोन Arduino पर!

सामान्य समस्या निवारण युक्तियाँ

  • तारों की जाँच करें

    • यदि प्रोग्राम लिखने का प्रयास करते समय आपको सभी 0 का डिवाइस हस्ताक्षर मिल रहा है, तो आपकी वायरिंग लगभग निश्चित रूप से बंद है, या स्टैंडअलोन Arduino को शक्ति नहीं मिल रही है।
    • साथ ही, सुनिश्चित करें कि आपको स्टैंडअलोन Arduino पर रीसेट वायर 10 से Uno पर 1 तक मिल गया है
  • वोल्टेज डिवाइडर की जाँच करें

    सुनिश्चित करें कि आपके पास SCK और MOSI दोनों के प्रतिरोधों के लिए 1:2 (उच्च पक्ष: निम्न पक्ष) के अनुपात के साथ वोल्टेज डिवाइडर हैं। उदा. +5v साइड पर 220 रेसिस्टर और फिर 2 220 ओम रेसिस्टर्स (कुल 440 ओम) ग्राउंड की ओर, बीच में स्टैंडअलोन Arduino की ओर सिग्नल के साथ।

चरण 3: बूटलोडर फ़ाइल को संपादित करें, बूटलोडर को जलाएं, और अपना स्केच अपलोड करें

बूटलोडर फ़ाइल को संपादित करें, बूटलोडर को बर्न करें, और अपना स्केच अपलोड करें
बूटलोडर फ़ाइल को संपादित करें, बूटलोडर को बर्न करें, और अपना स्केच अपलोड करें
बूटलोडर फ़ाइल को संपादित करें, बूटलोडर को बर्न करें, और अपना स्केच अपलोड करें
बूटलोडर फ़ाइल को संपादित करें, बूटलोडर को बर्न करें, और अपना स्केच अपलोड करें

3) बूटलोडर (boards.txt) फ़ाइल को संपादित करें और बूटलोडर को स्टैंडअलोन Arduino पर बर्न करें। अपना स्केच अपलोड करें।

बूटलोडर फ़ाइल का संपादन

स्टैंडअलोन Arduino को चलाने के लिए, आपको बूटलोडर की ब्राउनआउट फ़्यूज़ सेटिंग्स को संपादित करना होगा। अन्यथा, आप उस पर एक बूटलोडर को बर्न करने में सक्षम होंगे, लेकिन कोई भी स्केच नहीं चला पाएंगे।

आप ब्राउनआउट डिटेक्शन को पूरी तरह से हटा सकते हैं, लेकिन मैं इसकी अनुशंसा नहीं करूंगा। इसके बजाय, हम इसे 2.7V से कम करने जा रहे हैं (जो मेरी चिप पर डिफ़ॉल्ट रूप से आया था) और इसे 1.8V से बदल दें। अंततः, हालाँकि, आप यहाँ फ़्यूज़ कैलकुलेटर का उपयोग करके चुन सकते हैं कि आप कौन सी ब्राउनआउट सेटिंग्स चाहते हैं।

मेरी बोर्ड फ़ाइल निम्न स्थान पर थी:

C:\Program Files (x86)\Arduino\hardware\arduino\avr

हालाँकि, आपके हार्डवेयर फ़ोल्डर में /arudino/ के अलावा एक से अधिक बोर्ड.txt फ़ाइल हो सकती है। आप बोर्डों.txt फ़ाइल को /arduino/ स्थान में संपादित करने जा रहे हैं क्योंकि आप ATMEGA328p (3.3V, 8 MHz) अनुभाग को संशोधित करने जा रहे हैं।

यदि आप Arduino IDE (इस पोस्ट के अनुसार) को पुनर्स्थापित या अपडेट करते हैं तो आप संपादित बोर्ड.txt फ़ाइल खो सकते हैं। इसका मतलब है कि यदि आप Arduino IDE को अपडेट करते हैं, तो आपको इन सेटिंग्स को फिर से बदलना होगा यदि आप उसी स्टैंडअलोन Arduino का एक और बनाना चाहते हैं।

Boards.txt फ़ाइल में, नीचे स्क्रॉल करें या "Pro Mini" खोजें। अनुभाग का शीर्षक "pro.name=Arduino Pro या Pro Mini" है। उपधारा "pro.menu.cpu.8MHzatmega328=ATmega328P (3.3V, 8 MHz)" तक नीचे स्क्रॉल करें।

उस लाइन की तलाश करें जो कहती है "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=_"

सेटिंग्स को xFE में बदलें। (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0xFE)।

सुरषित और बहार।

बूटलोडर को जलाना

एक बार ऐसा करने के बाद, आप चरण 1 से 5 तक ISP गाइड पर "निर्देश" अनुभाग का पालन कर सकते हैं।

स्पष्ट करने के लिए कुछ बातें:

  • जब आप "Arduino as ISP" स्केच अपलोड कर रहे हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि आपके पास सही COM पोर्ट और प्रोसेसर चयनित है।

    इस मामले में, इसका मतलब है कि आपने अपने Arduino के COM पोर्ट को Tools-> Port: COM X (Arduino Uno) में चुना है और बोर्ड Arduio Uno है।

  • सही प्रोग्रामर का चयन करें: टूल्स के तहत-> प्रोग्रामर-> Arduino ISP के रूप में।

    ArduinoISP या ArduinoISP.org नहीं

  • बूटलोडर को जलाने से पहले, बोर्ड "प्रो या प्रो मिनी" और प्रोसेसर को "ATMEGA328p (3.3V, 8 MHz)" में बदलें।

    जब तक आप सही बोर्ड प्रकार का चयन नहीं करते, तब तक आपको प्रोसेसर अनुभाग दिखाई नहीं देगा।

इससे पहले कि आप उस पर रेखाचित्र लिखने का प्रयास करें, बूटलोडर को स्टैंडअलोन Arduino पर जला दें।

स्केच अपलोड करना

यह बहुत महत्वपूर्ण है। अब आप Arduino: Uno और स्टैंडअलोन में से किसी एक को प्रोग्राम करने में सक्षम हैं। यदि आप सही डिवाइस पर अपलोड नहीं करते हैं, तो आपको ऊपर दिए गए अनुभाग को दोहराना होगा और Arduino को Uno पर ISP प्रोग्राम के रूप में फिर से लिखना होगा।

जब आप अपना स्केच अपलोड करते हैं, तो सुनिश्चित करें कि आप टूल्स -> प्रोग्रामर का उपयोग करके अपलोड करें या Ctrl+Shift+U पर क्लिक करें। आप शिफ्ट को भी होल्ड कर सकते हैं और एरो आइकन पर क्लिक कर सकते हैं, लेकिन शिफ्ट को होल्ड किए बिना एरो आइकन पर क्लिक न करें।

सामान्य समस्या निवारण युक्तियाँ

  • समस्या निवारण के लिए वर्बोज़ आउटपुट चालू करें।
  • "डिवाइस हस्ताक्षरकर्ता सभी 0 है!" [यह एक होने की बहुत संभावना है।]

    • आईएसपी वायरिंग अनुभाग देखें। या तो आपने स्टैंडअलोन Arduino को गलत तरीके से वायर्ड किया है या इसे चालू नहीं किया जा रहा है।
    • सुनिश्चित करें कि आपने सही COM पोर्ट और बोर्ड/प्रोसेसर का चयन किया है। जब आप बूटलोडर को जला रहे हों, तो आपको यह सुनिश्चित करना होगा कि आप प्रो मिनी 3.3V 8 मेगाहर्ट्ज बूटलोडर को जला रहे हैं या फ़्यूज़ सही तरीके से सेट नहीं होंगे।
  • "मैंने Boards.txt फ़ाइल को संपादित किया है, लेकिन संपादन नहीं देख रहा हूँ"

    सुनिश्चित करें कि आपने सही board.txt फ़ाइल संपादित की है। यदि संपादन काम नहीं कर रहे हैं, तो Arduino IDE को अपडेट करने का प्रयास करें, या अस्थायी रूप से अपने /हार्डवेयर/फ़ोल्डर में अन्य फ़ोल्डरों को हटा दें।

  • "मुझे Boards.txt का प्रो मिनी सेक्शन नहीं मिल रहा है!"

    आप सही board.txt फ़ाइल में नहीं देख रहे हैं। Arduino//हार्डवेयर/arduino/ फ़ोल्डर की जाँच करें।

चरण 4: सीरियल संचार

4) धारावाहिक संचार के माध्यम से स्टैंडअलोन डिवाइस की निगरानी करें

आप वास्तव में इसे 2 विधियों के माध्यम से कर सकते हैं, इसलिए यदि आपके पास FTDI केबल / ब्रेकआउट बोर्ड भी नहीं है तो यह दुनिया का अंत नहीं है। और याद रखें, आपके द्वारा स्टैंडअलोन Arduino पर अपलोड किए गए स्केच में आपके पढ़ने के लिए Serial.print स्टेटमेंट होना चाहिए: यदि आपने इसे प्रोग्राम में नहीं लिखा है, तो आपको कुछ भी दिखाई नहीं देगा!

अगर आपके पास FTDI केबल नहीं है

आपके द्वारा बूटलोडर को जलाने और अपने इच्छित प्रोग्राम को लिखने के बाद, आप Arduino Uno से ATMEGA328 DIP चिप को हटा सकते हैं (बहुत सावधानी से और याद रखें कि यह किस ओरिएंटेशन में वापस जाता है)। मैं इसके लिए एक फ्लैटहेड का उपयोग करने की सलाह देता हूं।

आप स्टैंडअलोन Arduino के RX को Uno के RX और TX को TX से जोड़ सकते हैं। हां, यह आम तौर पर विपरीत होता है, लेकिन आप यूनो को आईडीई के सीरियल मॉनीटर को जानकारी "अग्रेषित" करने के बारे में सोच सकते हैं। इसलिए आप इस मामले में RX को TX और TX ro RX से नहीं जोड़ते हैं। जब आप अपना प्रोग्राम चला रहे हों, तो सुनिश्चित करें कि आपके पास Arduino Uno का COM पोर्ट चुना गया है और सीरियल मोंटोर खोलें। आप स्टैंडऑन अरुडिनो के सीरियल आउटपुट को देख पाएंगे।

(इस समाधान का श्रेय यहां रॉबिन 2 को दिया जाता है।)

यदि आपके पास FTDI केबल/बोर्ड है

(मैं स्पार्कफुन के एफटीडीआई बोर्ड का उपयोग कर रहा हूं जिसे मैंने पीठ पर सोल्डर पैड का उपयोग करके 3.3V में बदल दिया है)

बस ब्रेकआउट बोर्ड के GND को स्टैंडअलोन Arduino के ग्राउंड से कनेक्ट करें और ब्रेकआउटबोर्ड के RX को Arduino के TX और TX को RX से कनेक्ट करें। (यदि आप जस्ट सीरियल मॉनिटरिंग कर रहे हैं और कुछ भी वापस नहीं लिख रहे हैं, तो आप ब्रेडआउटबोर्ड के RX को Arduino TX से कनेक्ट कर सकते हैं)।

इस बिंदु पर ध्यान रखें कि आपके पास Uno या FTDI केबल के माध्यम से स्टैंडअलोन Arduino को पावर देने का विकल्प है। एक ही समय में दोनों बिजली स्रोतों को कनेक्ट न करें! ध्यान दें कि आपको COM पोर्ट बदलना होगा क्योंकि यह Arduino Uno COM पोर्ट से अलग होगा।

सामान्य समस्या निवारण युक्तियाँ

  • "मैं कुछ नहीं देख रहा हूँ!"

    • जांचें कि क्या आपके पास सही COM पोर्ट सक्षम है।
    • जांचें कि क्या आपके पास नवीनतम FTDI ड्राइवर हैं।
    • सुनिश्चित करें कि ग्राउंड जुड़ा हुआ है।
  • "मैं केवल सीरियल मॉनीटर में कचरा आउटपुट देख रहा हूं!"

    • आपको कुछ मिल रहा है जो एक अच्छा संकेत है।
    • हालांकि, FTDI बोर्ड के वोल्टेज की जांच करें।
    • स्टैंडअलोन Arduino अपने TX पर 3.3V आउटपुट कर रहा है और FTDI बोर्ड इसे नहीं उठा सकता है यदि यह 5v की अपेक्षा कर रहा है।
    • बॉड दर की जाँच करें।
    • सुनिश्चित करें कि आपके पास जमीन से जुड़ा है और केवल एक शक्ति स्रोत जुड़ा हुआ है! (यानी Uno और अपने FTDI बोर्ड से स्टैंडअलोन Arduino को पावर न दें।

सिफारिश की: