Arduino / प्रसंस्करण बनाम .NET माइक्रो फ्रेमवर्क? सर्वश्रेष्ठ भाषा? सबसे अच्छा हार्डवेयर?


10

मैं कुछ समय के लिए अर्डुइनो के साथ खिलवाड़ कर रहा हूं, और मैं शुरुआत से मध्यवर्ती तक बढ़ने की प्रक्रिया में हूं। मैं .NET माइक्रो फ्रेमवर्क , प्रदर्शन और हार्डवेयर उपलब्धता के संदर्भ में कुछ राय चाहूंगा ।

मैं एक .NET प्रोग्रामर हूं, लेकिन मैंने Arduino के लिए प्रसंस्करण को बहुत अधिक शून्य घर्षण पाया है ... यह C # के इतना करीब है कि मैं जो भी करना चाहता हूं उसे प्रलेखन की यात्रा की आवश्यकता नहीं है।

किसी भी तरह, जो बेहतर है?


यह प्रश्न भी देखें (C ++ से संबंधित): chiphacker.com/questions/3027/…
केविन

जवाबों:


17

यदि आप शुरुआत से इंटरमीडिएट तक जाना चाहते हैं, तो आपको जिस भाषा को सीखने की जरूरत है, वह है सी। भले ही आपने पूरी विंडोज लॉक-इन बहस को एक तरफ रख दिया हो, इससे पहले कि आप क्वालिटी पर काम कर सकें, आपको C पर प्रोग्रामिंग में बहुत अच्छा होना चाहिए। एक उच्च स्तरीय भाषा में माइक्रोकंट्रोलर जैसे .NET माइक्रो या C ++।

एंबेडेड सिस्टम ज्ञान के एक पिरामिड से बना है, और आपको वास्तव में एक अच्छा डिजाइनर बनने के लिए कम से कम प्रत्येक चरण को जानने की आवश्यकता है:
^ उपयोगकर्ता कोड
^ ^ ऑपरेटिंग सिस्टम
^ ^ ^ C
भाषा
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ माइक्रोकंट्रोलर आर्किटेक्चर ^ ^ ^ ^ ^ ^ ^ ^
डिजिटल डिजाइन ^ ^ ^ ^ ^ ^ ^
सेमीकंडक्टर्स ^ ^ ^ ^ ^ ^ ^ ^
बेसिक इलेक्ट्रॉनिक्स (ओम का नियम)

Arduino फ्रेमवर्क सी भाषा और एक ऑपरेटिंग सिस्टम के बीच कहीं पिरामिड में शौकीनों के लिए एक सुविधाजनक हुक प्रदान करता है।

आपके .NET माइक्रो फ्रेमवर्क प्रश्न के बारे में विशिष्ट, के बारे में कहते हैं:

सामान्य .NET माइक्रो फ्रेमवर्क डिवाइस में 32 बिट प्रोसेसर है, जिसमें कोई बाहरी मेमोरी मैनेजमेंट यूनिट (MMU) नहीं है और इसमें रैंडम-एक्सेस मेमोरी (RAM) 64K हो सकती है।

इसके अलावा, ब्रोशर इसे विंडोज मोबाइल , विंडोज एंबेडेड , CE 6.0 और .NET कॉम्पैक्ट फ्रेमवर्क से अलग करता है, और इसकी तुलना लिनक्स, रियल-टाइम, जावा और कस्टम ऑपरेटिंग सिस्टम से करता है। यह Arduino / प्रसंस्करण ढांचे से एक बड़ी छलांग है।

आपके Arduino में 1k RAM के साथ 8-बिट प्रोसेसर है। 8-बिट बनाम 32-बिट बिजली हानि के अलावा, यह भी सूचीबद्ध प्रोसेसर के रूप में तेजी से आधे से भी कम चलता है। हालांकि मैं आपको 32-बिट प्रोसेसर में जाने से हतोत्साहित नहीं करूंगा, लेकिन मैं इसे एक मध्यवर्ती-से-उन्नत कदम के रूप में सुझाऊंगा।

C # या C ++ में कुछ लाइनों के साथ बहुत अधिक समय और मेमोरी का उपयोग करना वास्तव में आसान है, जो एक गीगाबाइट रैम के साथ एक युगल गीगाहर्ट्ज़ पर चलने वाले दोहरे कोर प्रोसेसर पर महत्वहीन हैं, लेकिन जो एक एम्बेडेड डिवाइस पर बहुत बड़ा अंतर कर सकते हैं । जब तक आप असेंबली भाषा और / या C, या C # या C ++ में गुरु नहीं हैं, तब तक मैं एम्बेडेड प्रोग्रामिंग के लिए इसका उपयोग करने की सलाह नहीं दूंगा।

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

हम आपकी मदद करने के लिए यहां आएंगे!


6
मैं असहमत हूं कि असेंबलर और सी का ज्ञान आवश्यक है। यह समझना महत्वपूर्ण है कि माइक्रोकंट्रोलर कैसे काम करते हैं । लर्निंग असेंबलर (सी, कम ऐसा) निश्चित रूप से इस समझ का एक मार्ग है, लेकिन इसका एकमात्र नहीं है।
कॉनर भेड़िया

4
@ फ़ेक नाम: यकीन है, इसलिए मैंने कहा है "कम से कम प्रत्येक में से कुछ।" सी से असेंबली से हेक्स तक एक सरल कार्यक्रम और प्रत्येक चरण को समझने के बाद, आप एक बेहतर प्रोग्रामर बनेंगे। यदि आप चाहते हैं तो आप बाद में जादू को अपना काम करने दे सकते हैं, लेकिन आपको जिस मशीन के साथ काम करना है, उसकी क्षमताओं को समझना होगा।
केविन वर्मियर

वूप्स, सॉरी। "कुछ" याद किया।
कॉनर वुल्फ

7

मुझे ".NET माइक्रो फ्रेमवर्क" के साथ कोई अनुभव नहीं है, लेकिन मुझे किसी भी चीज के बारे में अत्यधिक संदेह है जिसमें कम संचालित एम्बेडेड प्लेटफार्मों पर एक वर्चुअल मशीन चलाना शामिल है। यह सिर्फ मेरे लिए बर्बादी जैसा लगता है। अधिक समर्पित मंच चलाने के समान प्रभाव को प्राप्त करने के लिए आपको अधिक पावर प्रोसेसर, अधिक मेमोरी, अधिक बिजली की खपत की आवश्यकता होती है, जो देशी मशीन कोड के लिए संकलित होती है। संभवतः ऐसा क्यों है कि मेरा 528 मेगाहर्ट्ज एंड्रॉइड फोन जो एक वर्चुअल मशीन (जेवीएम के समान) चल रहा है, अक्सर मेरे पिछले कई साल पुराने 312 मेगाहर्ट्ज पाम ट्रेओ की तुलना में धीमा लगता है जो देशी मशीन कोड के लिए संकलित अनुप्रयोगों को चलाता है।

एक त्वरित नज़र से, .NET MF को ARM प्रोसेसर की आवश्यकता होती है, जो Arduino में उपयोग किए जाने वाले 8-बिट ATMega चिप्स से शक्ति और जटिलता में एक कदम ऊपर है।

मेरा सुझाव यह है कि अगर अर्डुइनो जो करना चाहता है, वह उसी के साथ रहना चाहिए। यदि नहीं, तो आप अधिक शक्तिशाली ATMega या ATXmega चिप्स को देख सकते हैं, और इसके ऊपर ARM के साथ सीधे C / C ++ में काम कर सकते हैं, इसके ऊपर अतिरिक्त .NET ट्रांसलेशन लेयर के बिना।


2
मैं दिल से सहमत हूँ, लेकिन मुझे नहीं लगता कि यह क्या हो रहा है। मुझे लगता है कि जब यह तैनात किया जाता है तो IL मशीन विशिष्ट कोड में अनुवादित हो जाता है। यहाँ एक लिंक है जो अनुमान लगाता है: microsoft.com/downloads/… मैं Arduino के साथ अब तक बहुत खुश हूँ ... मुझे लगता है कि केवल एक चीज संभवतः मुझे राजी कर रही है कि मुझे tinyclr.com पर एक बहुत प्रभावशाली ढाल चयन मिला है। मैंने Arduino के लिए उस व्यापक चयन को नहीं देखा है।
क्रिस बी

1
पावर-टू-प्रोग्रामर प्रयास ट्रेडऑफ़ भी यही है कि हमारे डेस्कटॉप पीसी बूट करने और प्रोग्राम लॉन्च करने में उतना ही समय लेते हैं जितने कंप्यूटर हम 5 या 10 साल पहले इस्तेमाल करते थे।
केविन वर्मर

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

हाँ, लेकिन मुझे लगता है कि अमूर्त परतें केवल (या कम से कम ज्यादातर केवल) विकास मशीन पर मौजूद हैं। लेकिन निश्चित रूप से, मुझे इस तरह की जानकारी की आवश्यकता है।
क्रिस बी

2
@ क्रिस - अमूर्त मशीन कोड के लिए नीचे सभी तरह से प्रचारित कर रहे हैं। अंत में, मशीन पतों पर परिचालन करती है: लोड, स्टोर, ऐड, सशर्त शाखा, आदि असेंबली मशीन कोड का एक-से-एक अनुवाद है, और सी मैप तुलनात्मक रूप से इसके करीब हैं। हालाँकि, उच्च-स्तरीय भाषाओं में बहुत काम करना होता है, क्योंकि किसी भी प्रोसेसर के इंस्ट्रक्शन सेट में निर्देश नहीं, कहना, कोशिश करना / पकड़ना है। अपवाद हैंडलर को लागू करने के लिए आवश्यक मशीन कोड तुच्छ नहीं है।
केविन वर्मियर

4

यदि आप इंटरमीडिएट में जाना चाहते हैं, तो आपको Arduino पर्यावरण से बाहर एक मंच की कोशिश करनी चाहिए। चुनने के लिए उनमें से बहुत सारे हैं, आप 8 बिट्स पर रह सकते हैं, यहां तक ​​कि एक Atmel MCU के साथ या किसी अन्य विक्रेता से एक में स्थानांतरित हो सकते हैं। एक IDE का उपयोग करें, कोड C भाषा लिखें, यह समझें कि MCU कैसे काम करता है, अपना स्वयं का बूटलोडर कोड लिखें या इन-सर्किट प्रोग्रामर का उपयोग करें और चलते रहें।

लेकिन अगर आप वास्तव में microcontrollers के लिए C # में लिखना चाहते हैं, तो यह कोशिश करें: http://www.trygtech.com/products/sh7619_evb.php

यह एक बहुत बड़े MCU का उपयोग करता है, विशिष्ट .NET पदचिह्न फ्लैश मेमोरी और 256k RAM के बारे में 512K है।


2
वह सिस्टम .NET माइक्रो फ्रेमवर्क का उपयोग करता है। यह ठीक उसी तरह की प्रणाली है जिस पर क्रिस राय की तलाश कर रहा था।
केविन वर्मर

4

मैंने अभी नेटडूइनो देखा है जो आपके लिए एक दिलचस्प समझौता हो सकता है। मुझे सिस्टम स्पेक्स या विवरण का कोई पता नहीं है, लेकिन यह .NET माइक्रो का उपयोग करता प्रतीत होता है, इसलिए यह कम से कम कोशिश करने के लिए एक अच्छा तरीका है।


3

प्रसंस्करण / Arduino के साथ मेरे लिए सबसे बड़ा एकल मुद्दा एक अच्छे डिबगर की कमी है। मेरे पास एक एवीआर ड्रैगन है, लेकिन यह बहुत मदद नहीं करता है क्योंकि या तो (ए) एवीआर स्टूडियो का डिबगर धीमा है और छोटी गाड़ी है, या (बी) एक्लिप्स में डिबगिंग सिर्फ सादा धीमी है और, जबकि कम, अभी भी छोटी गाड़ी है। मुझे WinAVR में इसे आज़माने का मौका नहीं मिला है, लेकिन यह सूची में आगे है।

Arduino IDE में कोई डिबगर नहीं है।

एक बार जब आप सरल अनुप्रयोगों के बाहर कदम रखते हैं और उन एप्स का निर्माण शुरू करते हैं, जिन्हें वायर्ड और वायरलेस नेटवर्क स्तर पर शामिल करना होता है, तो यह काफी निराशाजनक होता है। यह मुख्य रूप से इसलिए है कि मैं .NET MF में एक गंभीर रूप ले रहा हूं - एसडीके के साथ खेल रहा हूं, और जल्द ही कुछ हार्डवेयर बदल रहा हूं।


उफ़… एकाग्रता में चूक! मैं ग्रहण के साथ WinAVR टोकेन का उपयोग कर रहा हूं ;-)

1
मैं कबूल करूंगा ... यह मेरे लिए कभी नहीं हुआ कि किसी भी प्रणाली में एक डिबगर हो, एक तरफ पिन १३ से। यह निश्चित रूप से नेटड्यूइनो पर एक दूसरी नज़र की आवश्यकता है ...
क्रिस बी।

हां; आप छोटे ATMegas पर डीबगवायर का उपयोग कर सकते हैं, और JTAG को बड़े चिप्स पर (1280 और उससे ऊपर) मुझे लगता है कि ऊपर उल्लिखित दो वातावरणों के माध्यम से Arduino एप्लिकेशन के ऑन-चिप डिबगिंग करने के लिए। हालांकि, ऐसा करने के लिए आपके पास हार्डवेयर होना चाहिए, और मेरे लिए $ 50USD पर ड्रैगन एक अच्छी खरीद थी

लेकिन, जैसा कि मैंने उल्लेख किया है कि दोनों विकल्प सर्वोत्तम अनुभवों पर औसत लग रहे थे। मैं netduino मैं आ रहा है के साथ डिबगिंग तुलना करने के लिए आगे देख रहा हूँ।

1
इस पर एक अद्यतन - कुछ दिनों पहले एक नेटड्यूनो प्लस प्राप्त किया और इसके साथ खेल रहा है। मुझे कहना है कि Arduino में खेल की वर्तमान स्थिति की तुलना में आउट ऑफ द बॉक्स अनुभव अद्भुत है। कुछ भी नहीं फैंसी की जरूरत है - बस दृश्य स्टूडियो (आप मुफ्त 'एक्सप्रेस' संस्करण का उपयोग कर सकते हैं) और एक यूएसबी केबल और आप उठ रहे हैं और एक पल में बोर्ड पर डिबगिंग के साथ चल रहे हैं। सभी intellisense सामान IDE में काम करता है, और मुझे कहना होगा - भले ही मैंने अन्य प्लेटफार्मों पर सी / सी ++ काम का एक गुच्छा किया है, .NET का उपयोग करके बिल्ड कोड को एम्बेडेड कोड को आसान बना देता है ;-)

2

आप नेटडूइनो को देख सकते हैं । यह arduino लेआउट और पिन के साथ संगत होने के लिए बनाया गया है, और .NET माइक्रो फ्रेमवर्क चलाता है। तो आप C # में कोड कर सकते हैं और विजुअल स्टूडियो के अंदर भी डिबग कर सकते हैं!

अब तक मैंने इसे बहुत अच्छा और काम करने में आसान पाया है। जबकि मुझे बहुत सारे ट्यूटोरियल नहीं मिले हैं, मुझे लगता है कि आप बहुत सारे Arduino सामान को पोर्ट कर सकते हैं। मुझे एक newb होने के नाते, मैं आसानी से एक Arduino ट्यूटोरियल से एक फोटोरिसेस्टर / फोटोकेल सेटअप और कोड पोर्ट करने में सक्षम था।


1

आप कई ओपन सोर्स प्रोजेक्ट्स के जरिए STM32 (ARM M3) पर Arduino-style C डेवलपमेंट करने पर विचार कर सकते हैं। लीफलैब्स और xduino दोनों में काम करने वाले हार्डवेयर और Arduino आधारित टूलचिन हैं । जब मैं 32 वाँ माइक्रोकंट्रोलर की आवश्यकता होती है, तब मैं लेफ्टफैब्स मैपल बोर्ड का उपयोग करता हूं


1

आप http://www.hpinfotech.ro/html/cvavr.htm को देख सकते हैं जो Atmel के लिए IDE का उपयोग करने के लिए एक अच्छा आसान है और कुछ सीआई ने इसे पेशेवर रूप से उपयोग किया है और यह बहुत अच्छा है, सुविधा के स्तर की तरह आईडीई के विजुअल स्टूडियो से प्राप्त करें। मुझे लगता है कि एंड्रॉइड डेवलपमेंट के लिए ग्रहण थोड़ा क्लिंक है जितना कि खरीदा हुआ नहीं है।

मेरे पास Netduino है, जिसे मैंने मज़े के लिए एक Tricopter नियंत्रण प्रणाली लागू किया है, जो बहुत वास्तविक समय में है और यह मज़बूती से काम करता है, जिसे Visual Studio 2010 के साथ C # में लिखा गया है। डिवाइस पर डिबगिंग आम तौर पर उत्कृष्ट है, मेरे पास इसके माध्यम से ऑटो सिंक डेटा है wifi और मेरे पास विमान में एक छोटा HTTP सर्वर है।


0

हम उत्पादन अनुप्रयोगों (सटीक माप उपकरणों) में .NET माइक्रो फ्रेमवर्क का उपयोग करते हैं। यह बढ़िया काम करता है।

आज के माइक्रोप्रोसेसर उस स्थिति में पहुंच गए हैं जब आप 'क्रिएट-सी-प्रोफ़ाइल-चेंज-सी-व्यू ...' प्रतिमान का उपयोग कर सकते हैं। मेमोरी मात्रा अभी काफी बड़ी और सस्ती है, इसलिए संभवत: आप आउट-ऑफ-मेमोरी स्थितियों के साथ ढेर नहीं होंगे।

और एक सी # डेवलपर के रूप में, आप जानते हैं कि एक वांछित स्थिति तक पहुंचने के लिए पर्याप्त रूपरेखा यह अनुमान लगाने की तुलना में जीने का एक बेहतर तरीका है कि आपको अपना कोड बनाने के लिए अपना कोड बनाते समय (और शायद नहीं) थोड़ा और तेज़ होना चाहिए।

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