- पूर्व-आवश्यकताएं:
- परियोजना के पीछे की अवधारणा:
- सर्किट आरेख:
- अपने Arduino प्रोग्रामिंग:
- अपने पायथन प्रोग्रामिंग:
- जेस्चर नियंत्रित कार्रवाई में कंप्यूटर:
हाल ही में जेस्चर नियंत्रित लैपटॉप या कंप्यूटर बहुत प्रसिद्ध हो रहे हैं। इस तकनीक को लीप मोशन कहा जाता है जो हमें इसके सामने अपने हाथ को लहराते हुए अपने कंप्यूटर / लैपटॉप पर कुछ कार्यों को नियंत्रित करने में सक्षम बनाता है। यह करने के लिए बहुत अच्छा और मजेदार है, लेकिन ये लैपटॉप वास्तव में बहुत अधिक कीमत वाले हैं। तो इस परियोजना में हमें Arduino और Python के पावर को मिलाकर अपना खुद का Gesture control Laptop / Computer बनाने की कोशिश करें ।
हम अपने हाथ की स्थिति निर्धारित करने और स्थिति के आधार पर एक मीडिया प्लेयर (वीएलसी) को नियंत्रित करने के लिए दो अल्ट्रासोनिक सेंसर का उपयोग करेंगे । मैंने इसका उपयोग प्रदर्शन के लिए किया है, लेकिन एक बार जब आप परियोजना को समझ गए हैं, तो आप कोड की कुछ पंक्तियों को बदलकर कुछ भी कर सकते हैं और अपने पसंदीदा एप्लिकेशन को अपने पसंदीदा तरीके से नियंत्रित कर सकते हैं।
पूर्व-आवश्यकताएं:
हमने पहले से ही कुछ परियोजनाओं को कवर किया है जो अरडिनो को पायथन के साथ जोड़ती है। इसलिए मुझे लगता है कि आपने पहले ही पायथन और इसके सीरियल लाइब्रेरी को स्थापित कर लिया है और एलईडी की तरह कुछ बुनियादी परियोजनाओं को सफलतापूर्वक आजमाया है। यदि नहीं, तो चिंता न करें आप इस Arduino-Python LED Controlling ट्यूटोरियल पर वापस गिर सकते हैं और इसके साथ मिल सकते हैं। इसलिए सुनिश्चित करें कि आपने आगे बढ़ने से पहले पायथन और पीयर्सियल लाइब्रेरी स्थापित की है।
परियोजना के पीछे की अवधारणा:
परियोजना के पीछे की अवधारणा बहुत सरल है। हम अपने मॉनिटर के शीर्ष पर दो अल्ट्रासोनिक (यूएस) सेंसर लगाएंगे और Arduino का उपयोग करते हुए मॉनिटर और हमारे हाथ के बीच की दूरी को पढ़ेंगे, दूरी के इस मूल्य के आधार पर हम कुछ क्रियाएं करेंगे। हमारे कंप्यूटर पर कार्रवाई करने के लिए हम पायथन पाइयुतोगुई पुस्तकालय का उपयोग करते हैं । Arduino से कमांड को सीरियल पोर्ट (USB) के माध्यम से कंप्यूटर पर भेजा जाता है। यह डेटा तब अजगर द्वारा पढ़ा जाएगा जो कंप्यूटर पर चल रहा है और रीड डेटा के आधार पर एक कार्रवाई की जाएगी।
सर्किट आरेख:
हैंड जेस्चर के साथ पीसी को नियंत्रित करने के लिए, बस दो अल्ट्रॉनिक सेंसरों को Arduino से कनेक्ट करें। हम जानते हैं कि यूएस सेंसर 5V के साथ काम करता है और इसलिए वे Arduino के बोर्ड वोल्टेज नियामक द्वारा संचालित होते हैं। मॉड्यूल को शक्ति प्रदान करने के लिए और सीरियल संचार के लिए Arduino को पीसी / लैपटॉप से जोड़ा जा सकता है। एक बार कनेक्शन हो जाने के बाद उन्हें अपने मॉनिटर पर रखें जैसा कि नीचे दिखाया गया है। मैंने अपने मॉनिटर पर इसे चिपकाने के लिए एक डबल साइड टेप का उपयोग किया है लेकिन आप अपनी रचनात्मकता का उपयोग कर सकते हैं। इसे एक जगह सुरक्षित करने के बाद हम प्रोग्रामिंग के साथ आगे बढ़ सकते हैं।
अपने Arduino प्रोग्रामिंग:
अमेरिकी सेंसर से हाथ की दूरी को पढ़ने के लिए Arduino को प्रोग्राम किया जाना चाहिए। पूरा कार्यक्रम इस पृष्ठ के अंत में दिया गया है; नीचे मैंने कार्यक्रम के लिए स्पष्टीकरण दिया है। यदि आप अल्ट्रासोनिक सेंसर के लिए नए हैं, तो बस Arduino & Ultrasonic Sensor आधारित दूरी माप के माध्यम से जाएं।
दूरी के मूल्य को पढ़कर हम इशारों से नियंत्रित होने वाली कुछ क्रियाओं पर पहुँच सकते हैं, उदाहरण के लिए इस कार्यक्रम में मैंने एक डेमो के रूप में 5 क्रियाओं को क्रमबद्ध किया है।
क्रिया 1: जब दोनों हाथों को सेंसर से पहले किसी विशेष दूरी पर रखा जाता है तो वीएलसी प्लेयर में वीडियो प्ले / पॉज होना चाहिए।
एक्शन 2: जब किसी विशेष दूरी पर सेंसर से पहले दाहिने हाथ को ऊपर रखा जाता है, तो वीडियो को फास्ट फॉरवर्ड एक कदम करना चाहिए।
क्रिया 3: जब बाएं हाथ को एक विशेष दूरी पर सेंसर से पहले रखा जाता है तो वीडियो को एक कदम पीछे हटाना चाहिए।
क्रिया 4: जब दाहिने हाथ को किसी विशेष दूरी पर सेंसर के सामने रखा जाता है और फिर यदि सेंसर की ओर ले जाया जाता है तो वीडियो को तेजी से आगे बढ़ाना चाहिए और यदि वीडियो को हटा दिया जाए तो उसे रिवाइंड करना चाहिए।
क्रिया 5: जब बाएं हाथ को किसी विशेष दूरी पर सेंसर के सामने रखा जाता है और फिर यदि सेंसर की ओर ले जाया जाता है तो वीडियो की मात्रा बढ़नी चाहिए और अगर दूर ले जाए तो वॉल्यूम कम हो जाना चाहिए।
आइए देखें कि उपरोक्त क्रियाओं को करने के लिए प्रोग्राम कैसे लिखा जाता है। इसलिए, सभी कार्यक्रमों की तरह हम नीचे दिखाए गए I / O पिन को परिभाषित करने के साथ शुरू करते हैं। दो अमेरिकी सेंसर डिजिटल पिन 2,3,4 और 5 से जुड़े हैं और ये + 5 वी पिन द्वारा संचालित हैं। ट्रिगर पिन आउटपुट पिन हैं और इको पिन इनपुट पिन हैं।
Arduino और अजगर के बीच सीरियल संचार 9600 की बॉड दर पर होता है।
const int ट्रिगर 1 = 2; // 1 Sesnor const int echo1 = 3 का ट्रिगर पिन; // 1 Sesnor const int int2 = 4 का इको पिन; // 2nd Sesnor const int echo2 = 5 का ट्रिगर पिन; // 2nd Sesnor void setup का इको पिन () {Serial.begin (9600); पिनमोड (ट्रिगर 1, आउटपूट); pinMode (echo1, INPUT); पिनमोड (ट्रिगर 2, आउटपूट); पिनमोड (echo2, INPUT); }
हमें किसी भी कार्रवाई के समापन से पहले प्रत्येक बार सेंसर और हाथ के बीच की दूरी की गणना करने की आवश्यकता है । इसलिए हमें इसे कई बार करना होगा, जिसका अर्थ है कि इस कोड को फ़ंक्शन के रूप में उपयोग किया जाना चाहिए। हमने एक फ़ंक्शन लिखा है, जिसका नाम calcul_distance () है जो हमें सेंसर और हाथ के बीच की दूरी लौटाएगा।
/ * ### दूरी की गणना करने के लिए फ़ंक्शन ### * / शून्य गणना_डिस्टेंस (इंट ट्रिगर, इंट इको) {digitalWrite (ट्रिगर, LOW); देरीमाइक्रोसेकंड (2); digitalWrite (ट्रिगर, हाई); देरीमाइक्रोसेकंड (10); digitalWrite (ट्रिगर, LOW); time_taken = pulIn (echo, HIGH); dist = time_taken * 0.034 / 2; if (dist> 50) dist = 50; }
हमारे मुख्य लूप के अंदर हम दूरी के मूल्य की जांच करते हैं और ऊपर उल्लिखित क्रियाएं करते हैं। इससे पहले हम दो वैरिएबल डिस्टल और डिस्टआर का उपयोग करते हैं जो वर्तमान दूरी मूल्य के साथ अद्यतन हो जाता है।
calcul_distance (ट्रिगर 1, इको 1); distL = dist; // बाएं सेंसर की दूरी की गणना करें गणना (ट्रिगर 2, इको 2); distR = dist; // राइट सेंसर की दूरी पाएं
चूँकि हम दोनों सेंसर के बीच की दूरी को जानते हैं, अब हम इसकी तुलना पूर्वनिर्धारित मूल्यों से कर सकते हैं और कुछ क्रियाओं पर पहुँच सकते हैं। उदाहरण के लिए यदि दोनों हाथों को 40 mc की दूरी पर रखा जाता है तो हम वीडियो को खेलते / रोकते हैं। यहां "प्ले / पॉज़" शब्द को सीरियल पोर्ट के माध्यम से बाहर भेजा जाएगा
if ((DistL> 40 && distR> 40) && (distL <50 && distR <50)) // दोनों हाथों का पता लगाएँ {Serial.println ("Play / Pause"); देरी (500);}
यदि केवल दाहिने हाथ को मॉड्यूल से पहले रखा जाता है, तो हम तेजी से वीडियो को एक कदम आगे बढ़ाते हैं और यदि बाएं हाथ से हम एक कदम से उल्टा करते हैं। कार्रवाई के आधार पर, "रिवाइंड" या "फॉरवर्ड" शब्द को सीरियल पोर्ट के माध्यम से बाहर भेजा जाएगा
if ((DistL> 40 && distL <50) && (distR == 50)) // लेफ्ट हैंड का पता लगाएं {Serial.println ("Rewind"); देरी (500);} अगर ((distR> 40 && distR <50) && (distL == 50)) // राइट हैंड डिटेक्ट करें {Serial.println ("फॉरवर्ड"); देरी (500);}
वॉल्यूम और ट्रैक का विस्तृत नियंत्रण हम एक अलग कार्यप्रणाली का उपयोग करते हैं ताकि झूठे ट्रिगर को रोका जा सके। वॉल्यूम को नियंत्रित करने के लिए हमें बाएं हाथ का स्थान रखना होगा। 15 सेमी की दूरी पर, फिर आप वॉल्यूम बढ़ाने के लिए इसे सेंसर से दूर ले जाने की मात्रा को कम करने के लिए इसे सेंसर की ओर ले जा सकते हैं। उसी के लिए कोड नीचे दिखाया गया है। कार्रवाई के आधार पर, यहां "वूप" या "वडाउन" शब्द सीरियल पोर्ट के माध्यम से बाहर भेजा जाएगा
// लॉक लेफ्ट - कंट्रोल मोड अगर (डिस्टल> = 13 && डिस्टल <= 17) {विलंब (100); // हैंड होल्ड टाइम कैलकुलेशन_डिस्टेंस (ट्रिगर 1, इको 1); distL = dist; if (distL> = 13 && distL <= 17) {Serial.println ("Left Locked"); जबकि (डिस्टल <= 40) {गणना_डिस्टेंस (ट्रिगर 1, इको 1); distL = dist; if (distL <10) // हाथ को {Serial.println ("Vup") में धकेला गया; देरी (300);} अगर (डिस्टल> 20) // हाथ निकाला गया {Serial.println ("Vdown"); देरी (300);}}}}}
वीडियो के ट्रैक को नियंत्रित करने के लिए, हम दाईं ओर के सेंसर के लिए भी इसी विधि का उपयोग कर सकते हैं । अगर हम दाहिने हाथ को सेंसर की ओर ले जाते हैं तो यह मूवी को तेजी से आगे बढ़ाएगा और यदि आप इसे सेंसर से दूर ले जाते हैं तो यह मूवी को रिवाइंड करेगा। कार्रवाई के आधार पर, "रिवाइंड" या "फॉरवर्ड" शब्द को सीरियल पोर्ट के माध्यम से बाहर भेजा जाएगा
अब आप पृष्ठ के अंत में दिए गए इस जेस्चर नियंत्रित पीसी के लिए पूरा कोड पढ़ सकते हैं और इसे पूरी तरह समझने की कोशिश कर सकते हैं और फिर इसे अपने Arduino IDE पर कॉपी कर सकते हैं।
अपने पायथन प्रोग्रामिंग:
इस परियोजना के लिए अजगर कार्यक्रम बहुत सरल है। हमें बस सही बॉड दर के माध्यम से Arduino के साथ एक धारावाहिक संचार स्थापित करना होगा और फिर कुछ बुनियादी कीबोर्ड क्रियाएं करनी होंगी। अजगर के साथ पहला कदम पी yautogui मॉड्यूल स्थापित करना होगा । सुनिश्चित करें कि आप इस कदम का पालन करते हैं क्योंकि कार्यक्रम pyautogui मॉड्यूल के बिना काम नहीं करेगा ।
खिड़कियों के लिए pyautogui मॉड्यूल स्थापित करना:
विंडोज के लिए pyutogui स्थापित करने के लिए नीचे दिए गए चरणों का पालन करें । यदि आप अन्य प्लेटफार्मों का उपयोग कर रहे हैं, तो चरण भी कमोबेश इसी तरह के होंगे। सुनिश्चित करें कि आपका कंप्यूटर / लैपटॉप इंटरनेट से जुड़ा है और नीचे दिए गए चरणों के साथ आगे बढ़ें
चरण 1: विंडोज कमांड प्रॉम्प्ट खोलें और उस निर्देशिका को फ़ोल्डर में बदलें जहां आपने अजगर स्थापित किया है। डिफ़ॉल्ट रूप से कमांड होना चाहिए
सीडी सी: \ Python27
चरण 2: अपने अजगर निर्देशिका के अंदर अपने पाइप को अपग्रेड करने के लिए कमांड पायथन-एम पाइप इंस्टॉल- अपग्रेड पाइप का उपयोग करें। पिप अजगर में एक उपकरण है जो हमें आसानी से अजगर मॉड्यूल स्थापित करने में मदद करता है। एक बार जब यह मॉड्यूल अपग्रेड हो जाता है (जैसा कि नीचे चित्र में दिखाया गया है) अगले चरण पर आगे बढ़ें।
अजगर-पाइप पाइप स्थापित पाइप
चरण 3: pyutogui मॉड्यूल को स्थापित करने के लिए कमांड " python –m pip install pyautogui " का उपयोग करें। एक बार प्रक्रिया सफल होने के बाद आपको नीचे कुछ इसी तरह की स्क्रीन दिखनी चाहिए।
अजगर-पाइप पाइप स्थापित पाइप
अब pyutogui मॉड्यूल और pyserial मॉड्यूल (पिछले ट्यूटोरियल में स्थापित) python के साथ सफल है, हम अजगर प्रोग्राम के साथ आगे बढ़ सकते हैं। पूरा अजगर कोड ट्यूटोरियल के अंत में दिया जाता है, लेकिन एक ही के लिए विवरण इस प्रकार है।
आइए हम इस परियोजना के लिए सभी आवश्यक तीन मॉड्यूलों को आयात करें। वे pyutogui, धारावाहिक अजगर और समय हैं।
आयात धारावाहिक # धारावाहिक संचार आयात समय के लिए आयात किया गया # विलंबित आयात आयात करने के लिए उपयोग किया गया
अगला हम COM पोर्ट के माध्यम से Arduino के साथ संबंध स्थापित करते हैं। मेरे कंप्यूटर में Arduino COM 18 से जुड़ा है। डिवाइस मैनेजर का उपयोग करके यह पता लगाएं कि COM पोर्ट आपके Arduino से जुड़ा हुआ है या नहीं और उसके अनुसार निम्न लाइन को ठीक करें।
ArduinoSerial = serial.Serial ('com18', 9600) #Create सीरियल पोर्ट ऑब्जेक्ट को arduinoSerialData time.sleep (2) #wait कहा जाता है, संचार प्राप्त करने के लिए 2 सेकंड के लिए।
लूप करते समय अनंत के अंदर, हम बार-बार COM पोर्ट को सुनते हैं और किसी भी पूर्व-परिभाषित कार्यों के साथ प्रमुख शब्दों की तुलना करते हैं और तदनुसार बोर्ड दबाते हैं।
जबकि 1: इनकमिंग = स्ट्रैट (ArduinoSerial.readline ()) सीरियल डेटा को फैलाएं और इसे इनकमिंग के रूप में लाइन प्रिंट इनकमिंग प्रिंट करें, यदि इनकमिंग में 'प्ले / पॉज' हो तो इन करें: pyautogui.typewrite (।, 0.2) यदि इनकमिंग में: 'pyutogui hotkey ('ctrl', 'left') यदि आवक में 'आगे': pyautogui.hotkey ('ctrl', 'right') यदि 'Vup' इनकमिंग में: pyautogui.hotkey ('ctrl', 'down') if ' इनकमिंग 'इनकमिंग: pyautogui.hotkey (' ctrl ',' up ')
जैसा कि आप देख सकते हैं, एक कुंजी दबाने के लिए हमें बस "pyautogui.typewrite (, 0.2)" कमांड का उपयोग करना होगा, जो 0.2sec के लिए मुख्य स्थान दबाएगा। अगर आपको ctrl + S जैसी हॉट की की जरूरत है तो आप हॉट की कमांड "pyautogui.hotkey ('ctrl', 's')" का उपयोग कर सकते हैं ।
मैंने इन संयोजनों का उपयोग किया है क्योंकि वे वीएलसी मीडिया प्लेयर पर काम करते हैं आप उन्हें किसी भी तरह से ट्विस्ट कर सकते हैं जैसे आप अपने खुद के एप्लिकेशन को इशारों के साथ कंप्यूटर में कुछ भी नियंत्रित करने के लिए बना सकते हैं ।
जेस्चर नियंत्रित कार्रवाई में कंप्यूटर:
ऊपर बताए अनुसार संबंध बनाएं और अपने Arduino बोर्ड पर Arduino कोड अपलोड करें। फिर नीचे पायथन स्क्रिप्ट का उपयोग करें और अपने लैपटॉप / कंप्यूटर पर प्रोग्राम लॉन्च करें।
अब आप VLC मीडिया प्लेयर का उपयोग करके अपने कंप्यूटर पर कोई भी फिल्म चला सकते हैं और नीचे दिए गए वीडियो में दिखाए अनुसार मूवी को नियंत्रित करने के लिए अपने हाथ का उपयोग कर सकते हैं।
आशा है कि आप इस परियोजना को समझ गए होंगे और इसके साथ खेलने में आनंद लेंगे। यह सिर्फ एक डेमो है और आप अपनी रचनात्मकता का उपयोग इस के आसपास बहुत अधिक शांत हावभाव नियंत्रित सामान बनाने के लिए कर सकते हैं। मुझे बताएं कि क्या यह उपयोगी था और आप टिप्पणी अनुभाग में इसका उपयोग करके क्या बनाएंगे और मुझे यह जानकर खुशी होगी।