विषयसूची:

पाइथन-जीयूआई और अरुडिनो के साथ सर्वोड्राइवर-बोर्ड: 5 कदम
पाइथन-जीयूआई और अरुडिनो के साथ सर्वोड्राइवर-बोर्ड: 5 कदम

वीडियो: पाइथन-जीयूआई और अरुडिनो के साथ सर्वोड्राइवर-बोर्ड: 5 कदम

वीडियो: पाइथन-जीयूआई और अरुडिनो के साथ सर्वोड्राइवर-बोर्ड: 5 कदम
वीडियो: How to confuse a Python Developer? 2024, जुलाई
Anonim
अजगर-जीयूआई और अरुडिनो के साथ सर्वोड्राइवर-बोर्ड
अजगर-जीयूआई और अरुडिनो के साथ सर्वोड्राइवर-बोर्ड

प्रोटोटाइपिंग या मॉडल हवाई जहाज का निर्माण करते समय, आप अक्सर इस समस्या का सामना करते हैं, कि आपको सर्वो यात्रा की जांच करनी है या सर्वो को मध्य स्थिति में सेट करना है।

यदि आप अपने संपूर्ण RC-सिस्टम या परीक्षण का निर्माण नहीं करना चाहते हैं, तो आप सर्वो को कितनी दूर तक धकेल सकते हैं या मध्य स्थान कहाँ है, तो यह बोर्ड आपके लिए है! यह आपको सर्वो को निर्दिष्ट पदों पर ले जाने या आगे और पीछे यात्रा करने की अनुमति देता है।

यह आश्चर्यजनक रूप से अच्छी तरह से काम करता है, यहां तक कि 6 सर्वो के साथ जो लूप में एक स्थिति से दूसरे स्थान पर दौड़ता है।

इसके अलावा, सीरियल का उपयोग करके पायथन-जीयूआई और अरुडिनो के बीच संचार के बारे में जानने के लिए यह एक अच्छी परियोजना है।

चरण 1: आपको क्या चाहिए …

इस परियोजना के लिए, आपको निम्नलिखित की आवश्यकता होगी:

हार्डवेयर

  • केबल के साथ Arduino नैनो। मैंने एक क्लोन का उपयोग किया, और पायथन कोड वास्तव में एक क्लोन के CH340-चिप की अपेक्षा करता है
  • एक प्रोटोटाइप बोर्ड। 7x5cm पर्याप्त है
  • कुछ 2, 54 मिमी हेडर और पिन
  • 1-6 सर्वोस
  • सर्वो के लिए बिजली की आपूर्ति (मैंने 4 बैटरी वाले बैटरीपैक का इस्तेमाल किया)

सॉफ्टवेयर

  • पायथन 3:
  • CH340-चिप्स के लिए एक USB-चालक: CH340 ड्राइवरों के लिए ड्राइवरों के लिए बस Google
  • Arduino IDE:

चरण 2: बोर्ड को मिलाप करना

बोर्ड सोल्डरिंग
बोर्ड सोल्डरिंग

तस्वीर पर फ़्रिट्ज़िंग के अनुसार सोल्डरिंग वास्तव में सीधे आगे है। बस सुनिश्चित करें कि आप सर्वो को 3-पिन-पंक्तियों में आसानी से जोड़ सकते हैं।

  • 3-पिन-पंक्तियाँ Arduino नैनो के डिजिटल पिन 3, 5, 6, 9, 10 और 11 से जुड़ी हुई हैं।
  • लाल तार Arduino के 5V-पिन से जुड़ा हुआ है
  • काला तार Arduino के GND-पिन से जुड़ा है
  • 3-पिन-पंक्तियों के नीचे पिन की जोड़ी एक विशिष्ट आरसी-रिसीवर बिजली की आपूर्ति को संलग्न करने के लिए होती है, आप अपनी पसंद के अनुसार कनेक्टर जोड़ सकते हैं, जैसे स्क्रूिंग टर्मिनल, एक्सटी-कनेक्टर्स, जेएसटी या… या…

व्यक्तिगत रूप से, मुझे Arduino डालने के लिए महिला हेडर की पंक्तियाँ पसंद हैं, लेकिन यह आपके ऊपर है।

कृपया ध्यान दें, कि छोटी महिला हेडर एक जम्पर हैं, जो आपको परीक्षण उद्देश्यों के लिए Arduino के 5V-स्रोत का उपयोग करके सर्वो की आपूर्ति करने देती हैं। यदि आप इसे बहुत अधिक तनाव देते हैं, तो Arduino रीसेट हो जाएगा और सही गति को ढीला कर देगा। दूसरी बिजली आपूर्ति संलग्न करने से पहले उन्हें हटा दिया जाना चाहिए।

चरण 3: Arduino सेट करना

Arduino IDE स्थापित करें और संलग्न स्केच के साथ Arduino नैनो को फ्लैश करें।

चरण 4: पायथन की स्थापना

पायथन की स्थापना
पायथन की स्थापना

इसे डाउनलोड करने के बाद Python 3 को इंस्टॉल करें। "पाथ" -वेरिएबल बनाने के विकल्प की जांच करना सुनिश्चित करें।

आपको पाइप का उपयोग करके दो और पैकेज स्थापित करने की आवश्यकता है। उसके लिए, "विंडोज" -की दबाएं, "cmd" टाइप करें और "एंटर" दबाएं। कमांड प्रॉम्प्ट में निम्न कमांड टाइप करें:

  • पाइप स्थापित सीरियल
  • piip pyserial स्थापित करें
  • पिप इंस्टाल टिंकर

जैसा कि आप देख सकते हैं, मुझे मॉड्यूल सीरियल के साथ-साथ पाइसेरियल की भी आवश्यकता है, जो कि सबसे अधिक कुशल नहीं है, क्योंकि पाइसेरियल को सीरियल को बदलना चाहिए। फिर भी यह काम करता है और मैं अभी सीखना शुरू कर रहा हूं;)।

IDE में Python-Script खोलें और इसे चलाएँ, या इसे सीधे टर्मिनल से चलाएँ।

ड्रॉप-डाउन मेनू में, आप दो मोड, "गो स्ट्रेट" और "पिंग पोंग" के बीच चयन कर सकते हैं:

  • सीधे जाओ: पहले कॉलम में माइक्रोसेकंड में एक सर्वो-स्थिति दर्ज करें और सर्वो को निर्दिष्ट स्थिति में ले जाने के लिए "स्टार्ट" दबाएं।
  • पिंग पोंग: दूसरे और तीसरे कॉलम में निचली सीमा और ऊपरी सीमा दर्ज करें। वह निचली और ऊपरी स्थिति है, जिसके बीच में सर्वो पीछे-पीछे जाएगा। कॉलम "पिंग पोंग टाइम" में आप मिलीसेकंड में एक समय निर्दिष्ट कर सकते हैं, कि सर्वो ऊपरी या निचले स्थान पर पहुंचने पर प्रतीक्षा करेगा। "स्टार्ट" को हिट करें और सर्वो आगे और पीछे चलना शुरू कर देगा, "स्टॉप" को हिट करें और सर्वो बंद हो जाएगा।

चरण 5: जहां जादू होता है

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

अब, Python प्रोग्राम में क्या होता है?

सबसे पहले, प्रोग्राम जांचता है कि इस लाइन में COM-पोर्ट्स से क्या जुड़ा हुआ है और इसे एक सूची में सहेजता है:

self. COMPortsList = सूची (serial.tools.list_ports.comports ())

फिर यह सूची के माध्यम से लूप करता है जब तक कि यह एक कुख्यात सीएच 340-चिप नहीं पाता है, इसे सहेजता है और फिर फॉर-लूप के बाद एक सीरियल कनेक्शन स्थापित करता है। ध्यान दें, जैसे ही पहला CH340 मिलता है, फॉर-लूप टूट जाता है।

p के लिए self. COMPortsList: यदि "CH340" p[1] में: # Arduino क्लोन की तलाश में

सीरियल कनेक्शन COM-पोर्ट के साथ 57600 के बॉड्रेट के साथ स्थापित किया गया है।

और Arduino कोड क्या करता है? ठीक है, चूंकि Arduino में केवल एक COM- पोर्ट है, सीरियल कनेक्शन केवल एक पंक्ति है:

सीरियल.बेगिन (57600);

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

Command = struct.pack('>B', self. Place) # int-variable "self. Place" को बाइट में बदल दिया जाता है

self. Ser.write(Command) # सीरियल-पोर्ट कमांड पर बाइट लिखना = int(self. ServoPos.get ())//10 # फ़ील्ड से इनपुट पढ़ना और int Command = struct.pack(' में बदलना) >बी', कमांड) # इंट को बाइट सेल्फ में बदलना। सेर.राइट (कमांड) # सीरियल-पोर्ट पर बाइट लिखना

साथ ही, डेटा को पार्स करने में समय लगता है (उदाहरण के लिए चार बाइट्स "1", "2", "3" और "0" को int 1230 के रूप में व्याख्या करना, चार अलग-अलग वर्णों के रूप में नहीं) और ऐसा करना बेहतर है कि Arduino पर नहीं।

Arduino-साइड पर, भेजी गई जानकारी को निम्नानुसार उठाया जाता है:

अगर (सीरियल.उपलब्ध ()> 1) {// यदि सीरियल डेटा उपलब्ध है, तो लूप दर्ज किया जाता है c = Serial.read (); // पहली बाइट (सर्वो की संख्या) एक चर Micros = Serial.read () में सहेजी जाती है; // सर्वो की स्थिति यहाँ सहेजी गई है माइक्रो = माइक्रो * 10; }

सिफारिश की: