शुरुआती के लिए एंबेडेड प्रोग्रामिंग: अरडिनो या रास्पबेरी पाई? [बन्द है]


32

मैं एक कंप्यूटर विज्ञान का छात्र हूं और मैं एम्बेडेड प्रोग्रामिंग और इलेक्ट्रिकल इंजीनियरिंग पर अपने ज्ञान का विस्तार करने के लिए उत्सुक हूं।

मैंने यहाँ पढ़ा है कि Arduino microcontroller जैसे उपकरणों का उपयोग करना शुरू करने का एक अच्छा तरीका है।

मैं मुख्य रूप से एक जावा और पायथन प्रोग्रामर हूं लेकिन C ++ में कुछ अनुभव है। इसके अलावा मैंने ArchLinux के साथ खिलवाड़ किया है।

एक छोटी सी परियोजना जिसे मैं करना चाहता हूं, वह मेरे Arduino / Pi पर वाई-फाई के माध्यम से कुछ लाइटबुल को नियंत्रित कर रही है ।

मैंने जो पढ़ा है उससे पाई और अरुडिनो दोनों छात्रों के लिए अभिप्रेत हैं, लेकिन मैं यह पता नहीं लगा सकता कि मेरे जैसे किसी व्यक्ति के लिए कौन अधिक उपयुक्त है जो यह समझना चाहता है कि कंप्यूटर निम्न स्तर पर कैसे काम करते हैं।

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

तो कौन सा एक स्व-शिक्षण शुरुआत के लिए अधिक उपयुक्त है: अर्डुइनो या रास्पबेरी पाई?

अग्रिम में धन्यवाद।

संपादित करें:

आपके कई बेहतरीन जवाबों और इन योग्य लेखों से भी मैं निम्नलिखित में आया

निष्कर्ष

  1. मैं Arduino को एम्बेडेड प्रोग्रामिंग के एक प्रवेश बिंदु के रूप में चुनता हूं क्योंकि यह पाई की तुलना में एक सरल प्रणाली है और मुझे धातु के अधिक आसानी से काम करने देती है।

  2. गहराई तक जाने में मूल्य है: कंप्यूटिंग के निम्न स्तर के विवरण के बारे में अधिक जानने के लिए मैं बाद के समय में AVR या mbed माइक्रोकंट्रोलर का अध्ययन कर सकता हूं ।

  3. दोनों डिवाइस मुझे एक ऑपरेटिंग सिस्टम के बिना प्रोग्राम करने की अनुमति देते हैं, जो कि मैं चाहता हूं (पहले)।

  4. मुझे एक Arduino को नियंत्रित करने के लिए एक पाई का उपयोग करने वाली परियोजनाएं भी मिलीं । मुझे यह पेचीदा लगता है क्योंकि दोनों डिवाइस काफी सस्ती हैं और मुझे लिनक्स की शक्ति का उपयोग करना पसंद है जो पाई पर चल सकता है।

  5. इसके अतिरिक्त मुझे यह पुस्तक मिली है जो मुझे Arduino के साथ प्रयोग करते समय इलेक्ट्रिकल इंजीनियरिंग के बारे में अधिक जानने में मदद करनी चाहिए।

  6. Arduino के साथ मेरा लाइटबल्ब प्रोजेक्ट करना मुश्किल लगता है। किन्तु वह ठीक है। मुझे यकीन है कि मैं अन्य प्रेरक परियोजनाओं के बारे में सोच सकता हूं या यहां या यहां प्रेरणा प्राप्त कर सकता हूं ।

आपके जवाबों के लिए आप सभी का धन्यवाद।


2
Arduino सरल है। मेरा सुझाव है कि "स्व-शिक्षण शुरुआती" के लिए एक बेहतर शुरुआती बिंदु है। Arduino में वर्तमान में ऐड-ऑन निर्माताओं का एक बड़ा समुदाय है, जैसे "ढाल" (प्लग-इन बेटीबोर्ड)। पाई पैसे के लिए बेहतर मूल्य है, लेकिन मुझे लगता है कि कई Arduino वेरिएंट की तुलना में कम स्तर के पूर्णांक (GPIO गिनती, I2C आदि) हैं। मेरे पास प्रत्येक में से एक है, यदि आप निम्न-स्तरीय सामान में कम रुचि रखते हैं तो मैं पाई का उपयोग करूंगा।
RedGrittyBrick

जवाबों:


35

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

इसके बजाय, मैं एक सीपीयू परिवार को चुनने की सिफारिश करूंगा जिसमें अपेक्षाकृत "साफ" निर्देश सेट आर्किटेक्चर है, और यह सीखना है कि इसे विधानसभा भाषा में कैसे प्रोग्राम किया जाए। उदाहरण के लिए, मैंने पीडीपी -11 मिनीकंप्यूटर पर अपनी शुरुआती कोडिंग बहुत की थी, जो कि एक अच्छी तरह से 16-बिट आर्किटेक्चर है। मुझे बताया गया है कि TI MSP430 परिवार बहुत समान है। आधुनिक 8-बिट परिवारों पर, यह तर्क दिया जा सकता है कि AVR PIC की तुलना में थोड़ा क्लीनर है। या आप पुराने स्कूल जा सकते हैं और M68K या Z80 को देख सकते हैं।

तो, यह वास्तव में इस बात पर निर्भर करता है कि आपके लक्ष्य वास्तव में क्या हैं: क्या आप एम्बेडेड अनुप्रयोगों को बनाना चाहते हैं, या क्या आप स्वयं प्रोसेसर का अध्ययन करना चाहते हैं?

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

मैं यह सिफारिश आंशिक रूप से आपके द्वारा सुझाए गए एप्लिकेशन की सरल प्रकृति और आंशिक रूप से माइग्रेशन पथ के कारण करता हूं। पाई पर निम्न-स्तरीय प्रोग्रामिंग पर माइग्रेट करना बहुत अधिक कठिन है। यह एक जटिल एसओसी पर आधारित है, जिसके लिए बहुत सा साफ्टवेयर "इन्फ्रास्ट्रक्चर" की आवश्यकता होती है। AVR के साथ, आप आसानी से "नंगे धातु" पर सीधे प्रोग्राम कर सकते हैं यदि आप बहुत इच्छुक हैं।


धन्यवाद, मैं एम्बेडेड अनुप्रयोगों को बनाने के साथ शुरू करना चाहूंगा और शायद बाद में प्रोसेसर का अध्ययन करूंगा।
मथायस ब्रौन

1
आप किसी भी समस्या के बिना पाई नंगे धातु का कार्यक्रम कर सकते हैं, किसी भी बुनियादी ढांचे को जानने की आवश्यकता नहीं है। बस वीडियो, ऑडियो और नेटवर्किंग को अनदेखा करें, और आपके पास बहुत तेज़ रैम वाली एआरएम चिप है, जो आपके लिए एसडी कार्ड से भरी हुई है। वैकल्पिक रूप से, एसडी कार्ड पर एक बूटलोडर रखें और एक सीरियल पोर्ट का उपयोग करके रैम पर अपना एप्लिकेशन डाउनलोड करें।
राउटर वैन Ooijen

2
जले हुए धातु के विकास के लिए, Arduino बूट लोडर के साथ जाने के लिए तैयार है और बहुत ही सरल स्टार्टअप आवश्यकताओं के साथ जाना आसान है (यानी, ATMEGA देव बोर्ड के रूप में इलाज)
क्रिस स्ट्रोमन

13

एक Arduino का उपयोग Arduino SDE के साथ किया जा सकता है, जो 'छिपे हुए' तरीके से कुछ कार्यक्षमता प्रदान करता है, लेकिन इसे सादे कोडांतरक, C, या C ++ (और संभवतः बहुत सी अन्य भाषाओं के साथ भी इस्तेमाल किया जा सकता है) कम प्रचलित)। ऐड-वन बोर्डों की एक विस्तृत विविधता उपलब्ध है जिसे शील्ड्स कहा जाता है, यह ज्यादातर मामलों में सपोर्ट सॉफ्टवेयर के साथ होता है जो Arduino SDE के साथ एकीकृत होता है। कई ढालों को मिलाना मुश्किल हो सकता है। ईथरनेट संभव है, लेकिन यह क्षमताओं को बढ़ा रहा है। USB होस्ट स्टैक अपनी क्षमताओं से परे AFAIK है।

मूल Arduino में AVR चिप होती है, लेकिन PIC और LPC (ARM) चिप्स पर आधारित विकल्प होते हैं।

रास्पबेरी पाई को एक एकल-बोर्ड कंप्यूटर के रूप में बनाया गया है जो एक स्केल-डाउन लिनक्स चला रहा है। जैसे कि इसे विविध भाषाओं में (कोडांतरक से लेकर पायथन तक, और सब कुछ इनबिल्टीन, इनक्लकुलिंग सी और सी ++) तक प्रोग्राम किया जा सकता है। यह एक USB होस्ट हो सकता है, इसलिए USB WiFi डोंगल को जोड़ने में कोई समस्या नहीं होनी चाहिए। Pi PCB में एक IO कनेक्टर है जिस पर कुछ पिन उपलब्ध हैं, और आप अपने लिनक्स ऐप से उन पिनों को एक्सेस कर सकते हैं, लेकिन यह थोड़ा अनाड़ी लगता है।

हालांकि इसे इस तरह से उपयोग करने के लिए डिज़ाइन नहीं किया गया था, यह रास्पबेरी पाई नंगे धातु (= बिना किसी ओएस) को प्रोग्राम करने के लिए कोई समस्या नहीं है। अब आपके पास आईओ पिंस तक सीधी और तेज पहुंच है, लेकिन आप लियुनक्स ड्राइवरों को चलाने की क्षमता ढीली करते हैं, इसलिए वाईफाई को जोड़ना मुश्किल होगा। AFAIK अभी तक वहाँ के रूप में कई हार्डवेयर एक्सटेंशन (सॉफ्टवेयर पुस्तकालयों के साथ) RaPi के लिए नहीं कर रहे हैं के रूप में वहाँ Arduino के लिए कर रहे हैं, लेकिन मेरी आंत महसूस कर रही है कि यह बदल सकता है।

सब मैं कहूँगा कि आप या तो गलत नहीं हो सकते, लेकिन अगर आप वास्तव में चाहते हैं कि मैं लिनक्स के साथ RaPi की सिफारिश करूँ।


1
रास्पबेरी पाई का एक बुरा बिंदु आधिकारिक दस्तावेज की कमी है। यह ज्यादातर टॉप-सीक्रेट मालिकाना ब्रॉडकॉम सामान है, जो केवल मृत्यु दर को छू नहीं सकते। यदि एआरएम गति की आवश्यकता होती है, तो अन्य प्लेटफ़ॉर्म होते हैं जिनमें नंगे धातु के काम के लिए बहुत बेहतर प्रलेखन होते हैं जो रास्पबेरी पाई की तुलना में सस्ते और आसानी से प्राप्त होते हैं। दूसरी ओर, रास्पबेरी पाई टेक्सास इंस्ट्रूमेंट्स, STmicro या Freescale से विभिन्न सस्ते एआरएम किटों की तुलना में "वास्तविक कंप्यूटर" के ज्यादा करीब है।
आंद्रेजाको

3
AFAIK की कमी वीडियो पर है और शायद ऑडियो भागों (लेकिन मैंने पढ़ा है कि उन हिस्सों के लिए ड्राइवर अब खुले हैं - यदि आप उन हिस्सों का उपयोग करना चाहते हैं तो कम से कम प्रलेखन के कुछ प्रकार हैं।) यदि आप सिर्फ दिखावा करते हैं। उन हिस्सों में आप नहीं हैं जो आपके रुपये के लिए बहुत सारे धमाके (रैम और सीपीयू पावर) से बचे हैं। कौन परवाह करता है कि एक अतिरिक्त माइक्रोकंट्रोलर एप्लिकेशन में आप वैसे भी अतिरिक्त सामान का उपयोग नहीं करना चाहते हैं? मैं एक पूर्ण विकसित ग्राफिक्स इंजन की जरूरत नहीं है। और अगर मुझे एक पिक्सेल-स्तरीय इंटरफ़ेस की आवश्यकता है तो यह वहां है।
राउटर वैन ओइजेन

यह केवल ऑडियो और वीडियो नहीं है, सामान्य एम्बेडेड उपकरणों की तुलना में पीआई का GPIO प्रलेखन बहुत विरल है।
क्रिस स्ट्रैटन

1
उपलब्ध दस्तावेज का उपयोग करके मुझे GPIO का उपयोग करने में कोई परेशानी नहीं हुई। क्या आपको कोई समस्या मिली?
राउटर वैन ओइजेन

4

मेरी राय में यह इस पर आता है: क्या आप ओएस में या हार्डवेयर पर ही प्रोग्राम करना चाहते हैं (अपने खुद के ओएस बनाने की तरह)?

रास्पबेरीपी के साथ आप डेबियन लिनक्स का उपयोग करने जा रहे हैं। यह ठीक है और लिनक्स वास्तव में उपयोगी है। यदि आप सीखते हैं कि, आप अन्य पीसी, सर्वर आदि पर विकसित हो सकते हैं, तो आप शायद पायथन में फिर से प्रोग्रामिंग करेंगे यदि आप इससे परिचित हैं क्योंकि यह पाई पर करना अच्छा और आसान है।

यदि दूसरी ओर आप यह देखना चाहते हैं कि वास्तव में छोटे, सस्ते और कम-पावर वाले प्रोग्राम को करना क्या है, तो अर्डिनो का प्रयास करें। आपका सारा कोड उस छोटी सी चिप पर चलता है, आप इसे बोर्ड से हटा भी सकते हैं (यदि यह एक डीआईपी एक है) और इसे एक ब्रेडबोर्ड पर रख दें और अपने लिए देखें कि आपको एक छोटा सा कंप्यूटर काम करने के लिए कितना कम हार्डवेयर चाहिए। कम से कम मेरे लिए यह बहुत अद्भुत था। आप जो कुछ भी लिखते हैं, वह उस चिप पर ही चल रहा होगा, इसलिए उसका पूरा "OS" आपका छोटा रन-लूप होगा। Arduino IDE / भाषा के साथ शुरुआत करना अच्छा है लेकिन बाद में C / C ++ के लिए नीचे उतरना बहुत उपयोगी होगा। यदि आप वास्तव में उस बिंदु पर उतरते हैं, तो आप अपने सी कौशल को एआरएम कॉर्टेक्स एम चिप्स या टीआई के एमएसपी 430 जैसे वास्तव में कम शक्ति पर आसानी से उपयोग कर सकते हैं।

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


3

क्या उपयुक्त है वास्तव में कार्य के विवरण पर निर्भर करता है।

यदि आपको वाईफाई की आवश्यकता है, तो आपको एक रास्पबेरी पाई की अधिक लागत प्रभावी समाधान होने की संभावना होगी, क्योंकि आप एक सस्ते विंग डोंगल का उपयोग कर सकते हैं।

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

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

राय के रूप में, न तो मंच इस कार्य के लिए वास्तव में आदर्श है - पीआई अपनी शक्ति सीमाओं के साथ एक खिलौना का थोड़ा और अधिक हो जाता है, एसडी कार्ड माउंट को ओवरहैंड करना, और एम्बेडेड दस्तावेज़ ब्लॉक की तुलना में दस्तावेज़ीकरण आदर्श होगा। और Arduino के पास इसकी कीमत के लिए बहुत कम ऑनबोर्ड संसाधन हैं। उस ने कहा, बहुत सारे व्यापक रूप से लोकप्रिय विकल्प नहीं हैं जो श्रेष्ठ हैं, हालांकि लिनक्स-आधारित वाईफाई राउटर पर डिजिटल I / O को हैक करने का एक लंबा इतिहास है, और उनमें से कुछ अब प्रतिस्पर्धी सस्ते / कॉम्पैक्ट हैं।


3

मैं mbed प्रोसेसर की सिफारिश करूंगा। C ++ में उच्च स्तर के अमूर्त (आपको आरंभ करने के लिए) का एक अच्छा संतुलन है और फिर आप C को छोड़ सकते हैं और निचले स्तर पर काम करना शुरू कर सकते हैं।

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

PIC के साथ आप बिजली की खपत, कार्यक्रम के आकार, स्मृति, समय की देरी के बारे में चिंता करना शुरू कर सकते हैं।

वहां से आप एक बड़े प्रोसेसर की तरह वापस जा सकते हैं जैसे कि मैबड या अरडूइनो यह जानते हुए कि आपके अंदर क्या चल रहा है, इसका आपको बेहतर अंदाजा है।


2

मैंने Arduino के साथ शुरुआत की और जब मुझे समझ आया कि यह कैसे काम करता है, तो मैं Pic में चला गया और हम कह सकते हैं कि यह सफल रहा। मैंने Arduino के साथ कुछ आकर्षक परियोजनाएं बनाईं, और यह आसान है क्योंकि वेब में आपके पास बहुत सारे कोड उदाहरण हैं। रास्पबेरी पाई अभी भी बढ़ रही है और Arduino के रूप में उतनी मदद नहीं है। इसलिए मेरी राय में, मैं आपको Arduino से शुरू करने की सलाह देता हूं और जब आपको कुछ स्तर मिलता है, तो एक माइक्रोकंट्रोलर पर जाएं।


2
मैंने पोस्ट किए गए समय को नहीं देखा, यह सिर्फ मुझे सुझाए गए विषयों में दिखाई दिया और मैं केवल मदद करना चाहता था।
मैनुअल जोआकिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.