इस परियोजना के लिए सही माइक्रोकंट्रोलर का चयन (Arduino आधारित)

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

ठीक है, विचार सरल है, सीरियल केबल पर मेरे कंप्यूटर (या यूएसबीटोज़रियल) मैं अपने Arduino Uno बोर्ड में कुछ आदेश भेजूंगा: ये आदेश कई बिट्स (मेरे अपने प्रोटोकॉल में परिभाषित) से बने हैं; वैसे भी, मेरे Arduino को यह आदेश प्राप्त करने के बाद यह कुछ कार्यवाही करेगा, फिलहाल एकमात्र कार्रवाई एक संचार बस से जुड़े अन्य Arduinos को एक शब्द भेजने के लिए है (I2C, धारावाहिक या टीटीएल तय करने की आवश्यकता है)। यह शब्द 1000 बिट्स से बना है, पहले 8 बिट्स केवल हेडर हैं (चिप का पता जिसमें डेटा प्राप्त होगा) और शेष केवल डेटा है (इस शब्द की वास्तविक लंबाई हमेशा 1000 बिट्स तक तय होती है)।

So in summary this is what I will do: enter image description here

उदाहरण के लिए, पीसी से, मैं सीरियल केबल पर कमांड भेजता हूं: 11011011 1010101010011 ...... .01101। यह Arduino बोर्ड में जाता है जो इसे संचार बस में भेजता है जहां सभी अन्य माइक्रो नियंत्रक हमेशा बस सुनते रहते हैं, वे पहले 8 बिट्स पढ़ेंगे और उन्हें अपने पते पर तुलना करेंगे: यदि यह माइक्रो नियंत्रक पते से मेल खाता है (संग्रहीत एक चर में), यह अगली बिट्स को स्मृति पर संग्रहीत करेगा (अगर बिजली बंद हो जाती है तो मुझे सूचनाओं को सहेजने की आवश्यकता नहीं होती है, इसलिए यह अस्थिर स्मृति हो सकती है)।

उसके बाद माइक्रो भविष्य के आदेश की प्रतीक्षा कर रहा है जो अंततः उसे आउटपुट पिन पर डेटा बिट्स आउटपुट करने के लिए कहेंगे। सभी माइक्रो केवल उस समय 1000 शून्य 8 बिट्स के एक शब्द को बचाएंगे, इसलिए स्मृति केवल 99 9 2 बिट्स के लिए तय की गई है।

मुझे यह तय करने में समस्याएं आ रही हैं कि कौन सा छोटा माइक्रोक्रोनरोलर उपयोग करना है, कौन सा संचार प्रोटोकॉल उपयोग करना है और सॉफ्टवेयर के साथ कुछ समस्याएं हैं। लेना इस बात पर विचार करता है कि पहले माइक्रो और आखिरी व्यक्ति के बीच की दूरी 7 मीटर तक हो सकती है, मुझे लगता है कि आई 2 सी जाने का रास्ता नहीं है, सीरियल बहुत अच्छा होगा लेकिन इसका मतलब है कि मुझे प्रत्येक माइक्रो पर टीटीएल कनवर्टर के लिए सीरियल की आवश्यकता होगी (ध्यान दें कि वे 128 माइक्रोसॉफ्ट तक हो सकते हैं) ताकि परियोजना मेरे बजट से बाहर निकल सके, टीटीएल बहुत अच्छा होगा लेकिन मैंने कभी भी 7 मीटर से अधिक टीएलएल के माध्यम से संचार की कोशिश नहीं की, आपको क्या लगता है? मुझे लगता है कि एक अच्छी केबल 7 मीटर में इतनी वोल्टेज नहीं छोड़ देगी, मैं जिस गति का उपयोग करने की सोच रहा हूं वह अधिकतम 19200 बिट/एस है।

सूक्ष्मदर्शी के बारे में, मेरी सबसे बड़ी चिंता सबसे सस्ती विकल्प चुनना है क्योंकि उन्हें केवल एक पिन (सीरियल डेटा) में डेटा अस्थिर स्मृति में सहेजा जाएगा, और उसके बाद उस आउटपुट पिन पर एक निश्चित दर पर डेटा आउटपुट (प्रकाश और उदाहरण के लिए नेतृत्व बंद)। मैंने इंटरनेट पर देखा कि आप एडटीनी बोर्ड के साथ एटटीनी प्रोग्राम कर सकते हैं, क्या यह चिप मुझे जो करने की ज़रूरत है? क्या मुझे डेटा स्टोर करने के लिए बाहरी मेमोरी चाहिए? या मैं इसे एक चर पर सहेज सकता हूं? (आप किस स्मृति का सुझाव देते हैं?)

enter image description here

और मेरा अंतिम सवाल सॉफ़्टवेयर के बारे में है, जब मैं PicAxe का उपयोग कर रहा था, तो माइक्रोकंट्रोलर के लिए एक बहुत ही सरल विकास किट जब मुझे एक सीरियल इनपुट पर एक शब्द स्टोर करने की आवश्यकता होती है तो मैं इसे बना देता हूं:

serin serpin,N2400,(27),seraddr, b4,b5 

जहां सेरिन सीरियल अधिग्रहण शुरू करने का आदेश है, serpin इनपुट पिन की संख्या है जिसे मैं उपयोग करना चाहता हूं और b4 और b5 चार हैं बिट्स वेरिएबल्स ताकि वे दो का उपयोग कर मेरे पास 8 बिट्स शब्द हो। PicAxe प्लेटफॉर्म को 10 4 बिट्स वर्र्स (बी 0, बी 1 ...... .b9) के साथ तय किया गया है, इसलिए बाहरी स्मृति में जानकारी को पास किए बिना 1000 बिट्स शब्द को स्टोर करने के लिए यह असंभव होगा। Attiny के साथ मैं एक प्रोग्राम var पर उस डेटा की मात्रा स्टोर कर सकते हैं? मैं अधिकतम स्टोर क्या कर सकता हूं? बिंदु पर क्या आपको अभी भी लगता है कि एटनी जाने का रास्ता है?

किसी भी प्रतिक्रिया और सुझाव के लिए बहुत बहुत धन्यवाद!

3
"सभी माइक्रो केवल उस समय 1000 शून्य 8 बिट्स के एक शब्द को बचाएंगे, इसलिए स्मृति केवल 99 9 2 बिट्स के लिए तय की गई है।" क्या आपका मतलब 992 बिट्स (1000-8) है?
जोड़ा लेखक kender, स्रोत
प्रति माइक्रोकंट्रोलर के लिए कुछ लाइनें; अधिक डेटा; "लंबी" दूरी -> आईएमएचओ यूएआरटी जाने का रास्ता है
जोड़ा लेखक clabacchio, स्रोत

4 उत्तर

जैसा कि आप पहले से ही एक Arduino का उपयोग करने की योजना बना रहे हैं, क्यों Arduino के लिए छड़ी नहीं है? या अपने आप को एक एवीआर प्रोग्रामर प्राप्त करें और नंगे ATMega328 चिप्स का उपयोग करें।

संचार के लिए: आरएस 485 एक बहुत ही विश्वसनीय बस है, और ट्रांसीवर चिप्स सस्ते हैं। यहां तक ​​कि कम लागत के लिए आप एक टीटीएल-स्तरीय सिग्नल भेज सकते हैं और इसे प्रत्येक नोड पर पुन: उत्पन्न कर सकते हैं

3
जोड़ा
अच्छा जवाब है, लेकिन एक अतिरिक्त प्रोग्रामर की कोई ज़रूरत नहीं है, एआरआर चिप्स प्रोग्राम करने के लिए Arduinos का उपयोग किया जा सकता है: arduino.cc/एन/ट्यूटोरियल/ArduinoISP :)
जोड़ा लेखक Trygve Laugstøl, स्रोत

टीआई एमएसपी 430 श्रृंखला पर एक नज़र डालें। वे वास्तव में कम लागत ($ 1.00 से कम शुरू होते हैं) और सुविधाओं को काफी शक्तिशाली छोटे एसओसी उपकरणों तक बढ़ाते हैं।

1
जोड़ा

सबसे छोटे माइक्रोक्रोनरोलर आपको जो चाहिए उसे करने में सक्षम होंगे। आप Arduino "wrapper" को भी हटा सकते हैं और इसके स्थान पर एक यूएसबी सक्षम माइक्रो का उपयोग कर सकते हैं।

माइक्रोचिप, एटमेल, टीआई, एसटी, आदि में सभी को चुनने के लिए अलग-अलग रैम/फ्लैश/ईईपीरोम आकारों के 8, 16, 32-बिट यूसी हैं। सभी आधुनिक यूसी कम से कम यूएआरटी, एसपीआई, आई 2 सी परिधीय के साथ आते हैं जिनका उपयोग आपके संचार के लिए किया जा सकता है।
वास्तव में उनमें बहुत कुछ नहीं है, मैं सिर्फ एक चुनता हूं और देखता हूं कि आपको यह कैसा लगता है।
मैं (वर्तमान में) एसटी के 32-बिट एआरएम और माइक्रोचिप 8, 16, 32-बिट पीआईसी का उपयोग करता हूं।
मैं शायद मास्टर के लिए दास यूसी और एक पीआईसी 18 एफ या पीआईसी 24 एफ के लिए कुछ पीआईसी 12 एफ या 16 एफ का उपयोग करता हूं।

आप ~ 10kbits स्मृति की आवश्यकता का जिक्र करते हैं (यह स्पष्ट नहीं है कि किस प्रकार या यूसी को आपके विवरण से मुझे इसकी आवश्यकता है)
यह निर्धारित करना आसान है कि क्या उपयुक्त है, बस आप जिस यूसी को देखते हैं उसके रैम/रोम/ईईपीरोम चश्मे की जांच करें।
उदाहरण के लिए पीआईसी 16 एफ 1 9 38 में है:

 Parameter Name          Value
 Program Memory Type     Flash
 Program Memory (KB)     28
 CPU Speed (MIPS)        8
 RAM Bytes               1,024
 Data EEPROM (bytes)     256 

इसलिए प्रोग्राम प्रोग्राम मेमोरी गैर-अस्थिर डेटा स्टोर करने के लिए पर्याप्त है, यदि आपका प्रोग्राम काफी छोटा है (नए पीआईसी पर आप रन टाइम पर प्रोग्राम मेमोरी को भी पढ़/लिख सकते हैं) 10kbits रैम में काफी फिट नहीं होंगे 1024 * 8 = 8192 बिट्स।
हालांकि 16F1527 में 1536 बाइट रैम है, इसलिए यदि आवश्यक हो तो आप इसका उपयोग कर सकते हैं।

For the master (alternatives to Arduino) there is something like the 18F25J50 or similar, which has a USB 2.0 peripheral. Microchip provide a USB stack an plenty of example firmware to get you started with USB.
If you need something more powerful for the master, have a look at the PIC24 series with up to 256K of Flash and 96K of RAM. Or even the PIC32 which is 32-bit and up to 80MIPS. The PICKit3 is a low price programmer that will program all the above mentioned PICs, and MPLAB (or MPLABX) is a free IDE for firmware development.

संचार I2C के साथ किया जा सकता है, जो मास्टर/गुलाम कॉन्फ़िगरेशन से निपटता है और आसानी से संबोधित करता है। आपको डेटा भेजने के बारे में चिंता करने की ज़रूरत है। 7 मीटर एक उचित शांत वातावरण के साथ कोई समस्या नहीं होनी चाहिए और सही सेटअप (कम मूल्य पुलअप - 2.2k, कम कैपेसिटेंस केबल कहें)

1
जोड़ा

अपनी दूरी की चिंताओं के बारे में, इन चिप्स को देखें: I2C बस विस्तारक । वे कुछ अलग निर्माताओं द्वारा बनाए जाते हैं, आप अपनी जरूरतों और बजट के अनुरूप एक पा सकते हैं।

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

जैसा कि @ ओली ग्लैज़र का उल्लेख है, एक मजबूत (छोटे) पुल-अप प्रतिरोधी का उपयोग करने से भी मदद मिलेगी, लेकिन अगर यह आपको अभी तक प्राप्त कर सकती है, तो निश्चित रूप से बस विस्तारकों की जांच करें क्योंकि मैंने उनके साथ सफलता प्राप्त की है।

अपनी आकार की चिंताओं के बारे में, आप जिस माइक्रोक्रोनरोलर को देख रहे हैं उसकी चश्मा देखें। विशेष रूप से आप देखना चाहते हैं कि SRAM में कितना है। आपने उल्लेख किया है कि आप 1000 बिट्स == 125 बाइट्स बफर करना चाहते हैं। एसआरएएम स्पेक आमतौर पर केबी (किलो-बाइट्स) में दिया जाता है, इसलिए उस से बड़ा एक चुनना सुनिश्चित करें। यदि आप अपने कोड में अधिक बफर का उपयोग कर रहे हैं, या आपका प्रोग्राम कुछ जटिल (बड़ी और कई फ़ंक्शन कॉल) है तो आप शायद कम से कम 512 बाइट्स - एसआरएएम के 1 केबी चाहते हैं। यह निर्धारित करना मुश्किल है कि आवेदन के बारे में और जानने के बिना आपको कितना जरूरत है। यदि आपको एक बार में सभी 125 बाइट्स की आवश्यकता नहीं है, तो आप इसे ईईपीरोम के अंदर और बाहर स्ट्रीम कर सकते हैं।

0
जोड़ा
@clabacchio, जब तक कि आप प्रोटोकॉल में चेकसम जोड़ने का सुझाव नहीं दे रहे हैं, मैं कल्पना नहीं कर सकता कि यूएआरटी कम या ज्यादा भरोसेमंद होगा कि आपने केबलिंग या ढालने या किसी तथ्यों या सबूत प्रदान करने के बारे में कोई टिप्पणी नहीं की है। क्या आप कृपया बता सकते हैं कि कैसे? मैंने आईसी 2 के लिए मेरे सुझाव को निर्दिष्ट करने योग्य पता/गुलाम वास्तुकला के आधार पर सुझाव दिया, और क्योंकि I2C पहले से ही उन सभी का ख्याल रखता है।
जोड़ा लेखक kender, स्रोत
@clabacchio, सहमत है, यह अजीब बात है, यही कारण है कि मैंने उस क्षमता को सक्षम करने के लिए बस विस्तारक आईसी का सुझाव दिया। मैं मानता हूं कि आरएस 232 सिग्नलिंग पर यूएआरटी शायद उन लंबाईओं पर बेहतर प्रदर्शन करेगा, लेकिन मैंने इस तथ्य का वजन कम किया कि आपको हार्डवेयर परिधीय उपयोग करने के बजाय अपना मास्टर/गुलाम प्रोटोकॉल लिखना होगा। सभी चीजों को माना जाता है, मुझे नहीं लगता कि या तो खराब विचार हैं, बस समझौता करते हैं। आपके उत्तर के लिए धन्यवाद।
जोड़ा लेखक kender, स्रोत
मुझे नहीं लगता कि यह जाने का तरीका है, खासकर उस डेटा को भेजने के लिए; मेरे लिए यूएआरटी एक और अधिक विश्वसनीय प्रोटोकॉल लगता है, क्योंकि उसे पिन या लाइनों के मामले में सहेजने की आवश्यकता नहीं है।
जोड़ा लेखक clabacchio, स्रोत
Premise: यह मेरा विचार है, मेरे ज्ञान के आधार पर और मैं बिल्कुल सही सत्य होने का नाटक नहीं करता। फिर, AFAIK, I2C इंट्रा-पीसीबी संचार के लिए डिज़ाइन किया गया एक इंटरफ़ेस है, साथ ही नाम से पता चलता है। खुली नाली होने के नाते, यह वास्तव में मजबूत नहीं है, और मैं यूएआरटी जैसे मजबूत प्रोटोकॉल का उपयोग करूंगा। फिर, यह सच है कि केबलिंग और ढाल विचार आवश्यक हैं, लेकिन मेरी आपत्ति पूरी तरह से इस तथ्य पर थी कि आई 2 सी के साथ 7 मीटर तारों में सिग्नल भेजने के लिए अजीब बात है, और मैंने इसे कभी नहीं देखा है।
जोड़ा लेखक clabacchio, स्रोत
वैसे भी, अगर मुझे चुनना पड़ा, तो मैं वायरलेस नेटवर्क का उपयोग करूंगा :)
जोड़ा लेखक clabacchio, स्रोत
@ ओलीग्लज़र वाह! वैसे भी, यह केवल संभव है या यह भी सिफारिश की जा सकती है?
जोड़ा लेखक clabacchio, स्रोत
@OliGlaser मैं वास्तव में आप पर भरोसा कर सकता हूं, बस मैंने कभी भी पीसीबी से बाहर आई 2 सी नहीं देखा है ... लेकिन असल में मैंने इसे कुछ बार देखा है ...
जोड़ा लेखक clabacchio, स्रोत
@clabacchio - I2C ज्यादातर इंट्रा-पीसीबी सामान के लिए उपयोग किया जाता है, लेकिन इसका कोई कारण नहीं है कि इसका उपयोग लंबी दूरी पर क्यों नहीं किया जा सकता है। यही कारण है कि बफर आईसी उपलब्ध हैं। मुझे लगता है कि दासों और सही सेटअप की संख्या के आधार पर 7 मीटर बफर के बिना प्राप्त किया जाना चाहिए। I2C का उपयोग करके 100 मीटर तक का उल्लेख करने वाले कुछ संदर्भ यहां दिए गए हैं। I2C FAQ 2. I2C दूरी संबंधित पोस्ट
जोड़ा लेखक Skilldrick, स्रोत
@clabacchio - कम गति पर 7 मीटर तक की आवश्यकता के लिए मैं इसकी अनुशंसा करता हूं। यदि आप कहते हैं कि I2C भाग गया, तो 22kHz इसमें 1 9 200 के बॉड का उल्लेख होगा और इसमें त्रुटि का एक बड़ा अंतर भी होगा। यदि आप चाहते थे कि यह अतिरिक्त ठोस हो, तो आप हमेशा एक बफर आईसी का भी उपयोग कर सकते हैं, लेकिन मुझे लगता है कि शायद यह अधिक है। हम केवल "सामान्य" रेंज से कुछ अतिरिक्त मीटर की बात कर रहे हैं, इसलिए जब तक पुलअप, बस कैपेसिटेंस और वायरिंग और सिग्नल को थोड़ी सी ध्यान देने के लिए भुगतान किया जाता है, यह पुष्टि करने के लिए कि वे मामूली नहीं हैं, मुझे यकीन है यह ठीक होंगा।
जोड़ा लेखक Skilldrick, स्रोत