विषयसूची:

इशारा नियंत्रण के साथ अल्ट्रासोनिक पाई पियानो!: 10 कदम (चित्रों के साथ)
इशारा नियंत्रण के साथ अल्ट्रासोनिक पाई पियानो!: 10 कदम (चित्रों के साथ)

वीडियो: इशारा नियंत्रण के साथ अल्ट्रासोनिक पाई पियानो!: 10 कदम (चित्रों के साथ)

वीडियो: इशारा नियंत्रण के साथ अल्ट्रासोनिक पाई पियानो!: 10 कदम (चित्रों के साथ)
वीडियो: रुमाल गायब करने का जादू learn handkerchief magic trick revealed 2024, नवंबर
Anonim
Image
Image
हावभाव नियंत्रण के साथ अल्ट्रासोनिक पाई पियानो!
हावभाव नियंत्रण के साथ अल्ट्रासोनिक पाई पियानो!

यह परियोजना इनपुट के रूप में सस्ते HC-SR04 अल्ट्रासोनिक सेंसर का उपयोग करती है और MIDI नोट्स उत्पन्न करती है जिसे उच्च गुणवत्ता वाली ध्वनि के लिए रास्पबेरी पाई पर एक सिंथेसाइज़र के माध्यम से चलाया जा सकता है।

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

ऊपर दिया गया वीडियो तैयार उत्पाद को एक साधारण लेजर-कट बाड़े में दिखाता है। इस निर्देश में बाद में एक अधिक गहन वीडियो है जो बताता है कि परियोजना कैसे काम करती है।

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

कृपया https://theotherandygrove.com/octasonic/ पर नवीनतम दस्तावेज़ीकरण और ट्यूटोरियल भी देखें, जिसमें अब इस परियोजना के पायथन संस्करण की जानकारी शामिल है (यह निर्देश रस्ट संस्करण के लिए लिखा गया था)।

चरण 1: सामग्री

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

  • रास्पबेरी पाई (2 या 3) एसडी कार्ड के साथ
  • 8 HC-SR04 अल्ट्रासोनिक सेंसर
  • ऑक्टासोनिक ब्रेकआउट बोर्ड
  • द्वि-दिशात्मक तर्क स्तर कनवर्टर
  • 32 x 12 "अल्ट्रासोनिक सेंसर को जोड़ने के लिए महिला-महिला जम्पर तार
  • रास्पबेरी पाई, ऑक्टासोनिक और लॉजिक लेवल कन्वर्टर को जोड़ने के लिए 13 x 6" महिला-महिला जम्पर तार
  • रास्पबेरी पाई के लिए उपयुक्त बिजली की आपूर्ति
  • पीसी स्पीकर या समान

यदि संभव हो तो मैं रास्पबेरी पाई 3 का उपयोग करने की सलाह दूंगा क्योंकि इसमें अधिक कंप्यूटिंग शक्ति है, जिसके परिणामस्वरूप अधिक प्रतिक्रियाशील और मनभावन ध्वनि है। यह रास्पबेरी पाई 2 के साथ थोड़ा ट्विकिंग के साथ ठीक काम कर सकता है लेकिन मैं इस परियोजना के लिए मूल रास्पबेरी पाई का उपयोग करने का प्रयास नहीं करूंगा।

HC-SR04 अल्ट्रासोनिक सेंसर में 4 कनेक्शन हैं - 5V, GND, ट्रिगर और इको। आमतौर पर, ट्रिगर और इको एक माइक्रोकंट्रोलर या रास्पबेरी पाई पर अलग-अलग पिन से जुड़े होते हैं, लेकिन इसका मतलब है कि आपको 8 सेंसर को जोड़ने के लिए 16 पिन का उपयोग करने की आवश्यकता होगी, और यह व्यावहारिक नहीं है। यह वह जगह है जहां ऑक्टासोनिक ब्रेकआउट बोर्ड आता है। यह बोर्ड सभी सेंसर से जुड़ता है और इसमें एक समर्पित माइक्रोकंट्रोलर होता है जो सेंसर की निगरानी करता है और फिर एसपीआई पर रास्पबेरी पाई के साथ संचार करता है।

HC-SR04 को 5V की आवश्यकता होती है और रास्पबेरी पाई केवल 3.3V है, इसलिए हमें तर्क स्तर कनवर्टर की भी आवश्यकता है जो रास्पबेरी पाई को ऑक्टासोनिक ब्रेकआउट बोर्ड से जोड़ेगा।

चरण 2: अल्ट्रासोनिक सेंसर को ऑक्टासोनिक बोर्ड से कनेक्ट करें

अल्ट्रासोनिक सेंसर को ऑक्टासोनिक बोर्ड से कनेक्ट करें
अल्ट्रासोनिक सेंसर को ऑक्टासोनिक बोर्ड से कनेक्ट करें
अल्ट्रासोनिक सेंसर को ऑक्टासोनिक बोर्ड से कनेक्ट करें
अल्ट्रासोनिक सेंसर को ऑक्टासोनिक बोर्ड से कनेक्ट करें

प्रत्येक अल्ट्रासोनिक सेंसर को बोर्ड से जोड़ने के लिए 4 महिला-महिला जम्पर तारों का उपयोग करें, उन्हें सही तरीके से जोड़ने के लिए सावधान रहें। बोर्ड को डिज़ाइन किया गया है ताकि पिन उसी क्रम में हों जैसे अल्ट्रासोनिक सेंसर पर पिन। बोर्ड पर बाएं से दाएं, पिन GND, ट्रिगर, इको, 5V हैं।

चरण 3: लॉजिक लेवल कन्वर्टर को ऑक्टासोनिक बोर्ड से कनेक्ट करें

लॉजिक लेवल कन्वर्टर को ऑक्टासोनिक बोर्ड से कनेक्ट करें
लॉजिक लेवल कन्वर्टर को ऑक्टासोनिक बोर्ड से कनेक्ट करें

रास्पबेरी पाई और ऑक्टासोनिक बोर्ड एसपीआई पर संवाद करते हैं। SPI 4 तारों का उपयोग करता है:

  • मास्टर इन, स्लेव आउट (MISO)
  • मास्टर आउट, स्लेव इन (MOSI)
  • सीरियल क्लॉक (एससीके)
  • गुलाम चयन (एसएस)

इसके अतिरिक्त, हमें बिजली (5V और GND) को जोड़ने की आवश्यकता है।

लॉजिक लेवल कन्वर्टर के दो पहलू होते हैं - एक लो वोल्टेज (LV) और एक हाई वोल्टेज (HV)। रास्पबेरी एलवी पक्ष से जुड़ेगा क्योंकि यह 3.3V है। Octasonic 5V होने के बाद से HV साइड से कनेक्ट होगा।

यह कदम ऑक्टासोनिक को तर्क स्तर कनवर्टर के एचवी पक्ष से जोड़ने के लिए है।

इस चरण से जुड़ी तस्वीर देखें जिसमें दिखाया गया है कि कौन से पिन को लॉजिक लेवल कन्वर्टर से जोड़ा जाना चाहिए।

ऑक्टासोनिक से लॉजिक लेवल कन्वर्टर के कनेक्शन इस प्रकार होने चाहिए:

  • 5वी से एचवी
  • एससीके से एचवी4
  • MISO से HV3
  • MOSI से HV2
  • एसएस से एचवी1
  • GND से GND

चरण 4: लॉजिक लेवल कन्वर्टर को रास्पबेरी पाई से कनेक्ट करें

लॉजिक लेवल कन्वर्टर को रास्पबेरी पाई से कनेक्ट करें
लॉजिक लेवल कन्वर्टर को रास्पबेरी पाई से कनेक्ट करें

रास्पबेरी पाई और ऑक्टासोनिक बोर्ड एसपीआई पर संवाद करते हैं। SPI 4 तारों का उपयोग करता है:

  • मास्टर इन, स्लेव आउट (MISO)
  • मास्टर आउट, स्लेव इन (MOSI)
  • सीरियल क्लॉक (एससीके)
  • गुलाम चयन (एसएस)

इसके अतिरिक्त, हमें बिजली (3.3V और GND) कनेक्ट करने की आवश्यकता है। लॉजिक लेवल कन्वर्टर के दो पहलू होते हैं - एक लो वोल्टेज (LV) और एक हाई वोल्टेज (HV)। रास्पबेरी एलवी पक्ष से जुड़ेगा क्योंकि यह 3.3V है। Octasonic 5V होने के बाद से HV साइड से कनेक्ट होगा।

यह कदम रास्पबेरी पाई को लॉजिक लेवल कन्वर्टर के एलवी साइड से जोड़ने के लिए है।

रास्पबेरी पाई से लॉजिक लेवल कन्वर्टर तक के कनेक्शन इस प्रकार होने चाहिए:

  • 3.3V से LV
  • GPIO11 (SPI_SCLK) से LV4
  • GPIO09 (SPI_MISO) से LV3
  • GPIO10 (SPI_MOSI) से LV2
  • GPIO08 (SPI_CE0_N) SS से LV1
  • GND से GND

रास्पबेरी पाई पर सही पिन का पता लगाने के लिए इस चरण से जुड़े आरेख का उपयोग करें!

चरण 5: रास्पबेरी पाई 5वी को ऑक्टासोनिक 5वी से कनेक्ट करें

रास्पबेरी पाई 5वी को ऑक्टासोनिक 5वी से कनेक्ट करें
रास्पबेरी पाई 5वी को ऑक्टासोनिक 5वी से कनेक्ट करें
रास्पबेरी पाई 5वी को ऑक्टासोनिक 5वी से कनेक्ट करें
रास्पबेरी पाई 5वी को ऑक्टासोनिक 5वी से कनेक्ट करें

जोड़ने के लिए एक अंतिम तार है। हमें वास्तव में ऑक्टासोनिक बोर्ड को 5V के साथ पावर देने की आवश्यकता है, इसलिए हम ऐसा करते हैं कि ऑक्टासोनिक AVR हेडर पर रास्पबेरी पाई 5V पिन में से एक को 5V पिन से कनेक्ट करें। यह AVR हैडर ब्लॉक में निचला बायां पिन है (यह बोर्ड के ऊपर दाईं ओर 2 x 3 ब्लॉक है)। संलग्न फोटो देखें जिसमें दिखाया गया है कि AVR ब्लॉक कहाँ है।

रास्पबेरी पाई पर 5V पिन खोजने के लिए अन्य संलग्न आरेख देखें।

चरण 6: सॉफ़्टवेयर स्थापित करें

रास्पियन स्थापित करें

रास्पियन जेसी की एक साफ स्थापना के साथ शुरू करें, फिर इसे नवीनतम संस्करण में अपडेट करें:

सुडो एपीटी-अपडेट प्राप्त करें

सुडो एपीटी-अपग्रेड प्राप्त करें

एसपीआई सक्षम करें

इस परियोजना के काम करने के लिए आपको रास्पबेरी पाई पर एसपीआई को सक्षम करना होगा! ऐसा करने के लिए रास्पबेरी पाई कॉन्फ़िगरेशन उपयोगिता का उपयोग करें।

एसपीआई को प्रभावी होने के लिए सक्षम करने के बाद पाई को रीबूट करना भी महत्वपूर्ण है।

FluidSynth. स्थापित करें

Fluidsynth एक अद्भुत मुफ्त सॉफ्टवेयर MIDI synth है। आप इसे इस कमांड के साथ कमांड-लाइन से इंस्टॉल कर सकते हैं:

sudo apt-fluidsynth स्थापित करें

जंग प्रोग्रामिंग भाषा स्थापित करें

अल्ट्रासोनिक पाई पियानो मोज़िला से रस्ट प्रोग्रामिंग लैंग्वेज में लागू किया गया है (यह सी ++ की तरह है लेकिन खराब बिट्स के बिना)। आजकल सभी अच्छे बच्चे इसका उपयोग कर रहे हैं।

जंग स्थापित करने के लिए https://rustup.rs/ पर दिए गए निर्देशों का पालन करें। आपका समय बचाने के लिए, इस एक कमांड को चलाने के निर्देश हैं। आप इंस्टॉल के दौरान किसी भी प्रश्न के डिफ़ॉल्ट उत्तर स्वीकार कर सकते हैं।

नोट: इस निर्देश को पोस्ट करने के बाद से, रास्पबेरी पाई पर रस्ट को स्थापित करने में कुछ समस्याएँ हैं। खराब समय:-/ लेकिन मैंने इस मुद्दे को हल करने के लिए नीचे दिए गए आदेश को संशोधित किया है। उम्मीद है कि वे इसे जल्द ही ठीक कर लेंगे। मैं एक ऐसी छवि बनाने पर काम कर रहा हूं जिसे लोग एसडी कार्ड पर डाउनलोड और जला सकें। अगर आप ऐसा चाहते हैं तो कृपया मुझसे संपर्क करें।

निर्यात RUSTUP_USE_HYPER=1curl https://sh.rustup.rs -sSf | श्री

अल्ट्रासोनिक पाई पियानो स्रोत कोड डाउनलोड करें

अल्ट्रासोनिक पाई पियानो स्रोत कोड का स्रोत कोड जीथब पर होस्ट किया गया है। कोड प्राप्त करने के लिए दो विकल्प हैं। यदि आप git और github से परिचित हैं, तो आप रेपो को क्लोन कर सकते हैं:

git क्लोन [email protected]: TheGizmoDojo/UltrasonicPiPiano.git

वैकल्पिक रूप से, आप नवीनतम कोड की ज़िप फ़ाइल डाउनलोड कर सकते हैं।

स्रोत कोड संकलित करें

सीडी अल्ट्रासोनिकPiPiano

कार्गो बिल्ड --रिलीज

कोड का परीक्षण करें

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

एप्लिकेशन को चलाने के लिए निम्न कमांड का उपयोग करें। यह सेंसर से डेटा पढ़ेगा और उन्हें MIDI नोटों में अनुवादित करेगा जो तब कंसोल पर मुद्रित होते हैं। जैसे ही आप सेंसर पर अपना हाथ घुमाते हैं, आपको डेटा जेनरेट होते हुए देखना चाहिए। यदि नहीं, तो इस निर्देश के अंत में समस्या निवारण अनुभाग पर जाएँ।

कार्गो रन --रिलीज

यदि आप उत्सुक हैं, तो "--release" ध्वज रस्ट को कोड को यथासंभव कुशलता से संकलित करने के लिए कहता है, डिफ़ॉल्ट "--debug" सेटिंग के विपरीत।

चरण 7: कुछ संगीत बनाएं

सुनिश्चित करें कि आप अभी भी उस निर्देशिका में हैं जहाँ आपने स्रोत कोड डाउनलोड किया है और निम्न कमांड चलाएँ।

यह "run.sh" स्क्रिप्ट यह सुनिश्चित करती है कि कोड संकलित किया गया है और फिर कोड को चलाता है, आउटपुट को फ्लुइडसिंथ में पाइप करता है।

./run.sh

सुनिश्चित करें कि आपके पास रास्पबेरी पाई पर 3.5 मिमी ऑडियो जैक से जुड़े हुए स्पीकर हैं और सेंसर पर अपना हाथ घुमाने पर आपको संगीत सुनना चाहिए।

यदि आप संगीत नहीं सुनते हैं और आपके पास एचडीएमआई मॉनिटर संलग्न है, तो संभवतः ऑडियो आउटपुट वहां जा रहा है। इसे ठीक करने के लिए, बस इस कमांड को चलाएँ और फिर पाई पियानो को फिर से शुरू करें:

sudo amixer cset numid=3 1

वॉल्यूम बदलना

मात्रा (या "लाभ") को "-g" पैरामीटर के साथ द्रवसंश्लेषण के लिए निर्दिष्ट किया जाता है। आप run.sh स्क्रिप्ट को संशोधित कर सकते हैं और इस मान को बदल सकते हैं। कृपया ध्यान दें कि इस पैरामीटर में छोटे बदलावों के परिणामस्वरूप मात्रा में बड़ा परिवर्तन होता है, इसलिए इसे छोटी मात्रा (जैसे 0.1 या 0.2) से बढ़ाने का प्रयास करें।

चरण 8: हावभाव नियंत्रण

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

अवधारणा बहुत सरल है। सॉफ्टवेयर ट्रैक करता है कि कौन से सेंसर कवर किए गए हैं (10 सेमी के भीतर) और कौन से नहीं हैं। यह 8 बाइनरी नंबर (1 या 0) में अनुवाद करता है। यह बहुत सुविधाजनक है, क्योंकि 8 बाइनरी नंबरों का एक क्रम एक "बाइट" बनाता है जो 0 और 255 के बीच की संख्याओं का प्रतिनिधित्व कर सकता है। यदि आप पहले से बाइनरी नंबरों के बारे में नहीं जानते हैं तो मैं एक ट्यूटोरियल की खोज करने की अत्यधिक अनुशंसा करता हूं। यदि आप प्रोग्रामिंग के बारे में अधिक जानना चाहते हैं तो बाइनरी नंबर सीखने का एक मौलिक कौशल है।

सॉफ्टवेयर सेंसर की वर्तमान स्थिति को वर्तमान इशारे का प्रतिनिधित्व करने वाले एकल बाइट में मैप करता है। यदि वह संख्या कई चक्रों तक समान रहती है, तो सॉफ्टवेयर उस इशारे पर कार्य करता है।

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

चरण 9: एक संलग्नक बनाना

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

चरण 10: समस्या निवारण और अगले चरण

समस्या निवारण

यदि प्रोजेक्ट काम नहीं कर रहा है, तो यह आमतौर पर एक वायरिंग त्रुटि के कारण होता है। सभी कनेक्शनों की दोबारा जांच करने के लिए अपना समय लें।

एक और आम समस्या एसपीआई को सक्षम करने और पीआई को रीबूट करने में विफल हो रही है।

रस्ट और पायथन विशिष्ट लेखों के साथ समस्या निवारण युक्तियों सहित पूर्ण दस्तावेज़ीकरण के लिए कृपया https://theotherandygrove.com/octasonic/ पर जाएं, और समर्थन कैसे प्राप्त करें, इस बारे में भी जानकारी प्राप्त करें।

अगला कदम

एक बार जब आपके पास प्रोजेक्ट काम कर रहा हो, तो मैं कोड के साथ प्रयोग करने और विभिन्न संगीत वाद्ययंत्रों को आजमाने की सलाह देता हूं। MIDI साधन कोड 1 और 127 के बीच हैं और यहाँ प्रलेखित हैं।

क्या आप एक एकल संगीत वाद्ययंत्र चाहते हैं जिसमें प्रत्येक सेंसर एक अलग सप्तक बजा रहा हो? शायद आप चाहते हैं कि प्रत्येक सेंसर इसके बजाय एक अलग उपकरण हो? संभावनाएं लगभग असीम हैं!

मुझे आशा है कि आपको यह निर्देश योग्य लगा होगा। कृपया इसे पसंद करें यदि आपने किया, और भविष्य की परियोजनाओं को देखने के लिए मुझे यहाँ और मेरे YouTube चैनल को सब्सक्राइब करना सुनिश्चित करें।

सिफारिश की: