विषयसूची:

PlotClock, WeMos और Blynk Playing विंटेज AMI ज्यूकबॉक्स: 6 चरण (चित्रों के साथ)
PlotClock, WeMos और Blynk Playing विंटेज AMI ज्यूकबॉक्स: 6 चरण (चित्रों के साथ)

वीडियो: PlotClock, WeMos और Blynk Playing विंटेज AMI ज्यूकबॉक्स: 6 चरण (चित्रों के साथ)

वीडियो: PlotClock, WeMos और Blynk Playing विंटेज AMI ज्यूकबॉक्स: 6 चरण (चित्रों के साथ)
वीडियो: Remote Robot finger playing Vintage AMI Jukebox 2024, जुलाई
Anonim
प्लॉटक्लॉक, वीमोस और ब्लिंक प्लेइंग विंटेज एएमआई ज्यूकबॉक्स
प्लॉटक्लॉक, वीमोस और ब्लिंक प्लेइंग विंटेज एएमआई ज्यूकबॉक्स
प्लॉटक्लॉक, वीमोस और ब्लिंक प्लेइंग विंटेज एएमआई ज्यूकबॉक्स
प्लॉटक्लॉक, वीमोस और ब्लिंक प्लेइंग विंटेज एएमआई ज्यूकबॉक्स

चार तकनीकी नवाचारों ने इस परियोजना को संभव बनाया: 1977 रो एएमआई ज्यूकबॉक्स, प्लॉटक्लॉक रोबोट आर्म किट, वीमोस/ईएसपी 8266 माइक्रोकंट्रोलर और ब्लिंक ऐप/क्लाउड सेवा।

नोट: यदि आपके पास ज्यूकबॉक्स नहीं है - पढ़ना बंद न करें! मानव उंगलियों द्वारा नियंत्रित विभिन्न चीजों को नियंत्रित करने के लिए इस परियोजना को आसानी से अपनाया जा सकता है। एक उदाहरण पारंपरिक जाइलोफोन बजाने वाली एक रोबोट उंगली हो सकती है - हो सकता है कि वह शिक्षाप्रद आप से आए!

मेरा ४० साल पुराना रो एएमआई आर-८१ ज्यूकबॉक्स अभी भी ६०, ७० और ८० के दशक के पुराने विनाइल एकल खेलकर ठीक काम कर रहा है। १६० किलोग्राम (३६० पाउंड) से अधिक वजन वाला यह खिलाड़ी आधुनिक एमपी-खिलाड़ियों जितना पोर्टेबल नहीं है, लेकिन इंटरनेट युग में रहते हुए, अब ज्यूकबॉक्स और २०० विनाइल रिकॉर्ड को अपनी जेब में रखना संभव है - वस्तुतः! और तुम भी माइक्रोकंट्रोलर में संग्रहीत अपनी खुद की प्लेलिस्ट का उपयोग कर सकते हैं!

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

प्लॉटक्लॉक "उंगली" WeMos माइक्रोकंट्रोलर द्वारा नियंत्रित 3 सर्वो द्वारा संचालित है। आश्चर्य का यह टुकड़ा (लगभग) Arduino Uno संगत है और इसमें वाईफाई क्षमताएं हैं, इसलिए दुनिया में कहीं से भी ज्यूकबॉक्स को वायरलेस तरीके से नियंत्रित करना संभव है।

केक पर क्रीम अविश्वसनीय रूप से उपयोग करने में आसान Blynk ऐप और उनके Blynk क्लाउड सर्वर से आता है जो पूर्ण गतिशीलता के साथ एक अच्छा मोबाइल फोन / टैबलेट यूजर इंटरफेस देता है।

चरण 1: हार्डवेयर

हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर

ज्यूकबॉक्स

प्रोजेक्ट ज्यूकबॉक्स 1977 रो एएमआई आर-81 है। चयन बटन के साथ कोई भी पुराना ज्यूकबॉक्स करेगा - प्लॉटक्लॉक द्वारा कुछ सीमाओं को ध्यान में रखते हुए: प्लॉटक्लॉक के मूल हथियारों का डिज़ाइन लगभग 5 x 12 सेमी क्षेत्र को कवर कर सकता है, इसलिए ज्यूकबॉक्स बटन लेआउट (सभी चयन बटन सहित क्षेत्र) उस आकार के बारे में होना चाहिए। पुराने ज्यूकबॉक्स के बटनों को प्लॉटक्लॉक सर्वो द्वारा प्रदान की जा सकने वाली शक्ति की तुलना में अधिक धक्का देने की आवश्यकता हो सकती है।

AMI R-81 में एक मेमोरी है जहाँ यह सभी 200 चयनों को संग्रहीत कर सकता है। चयन उस क्रम के आधार पर खेले जाते हैं जिस क्रम में वे रिकॉर्ड पत्रिका (हिंडोला प्रकार) में संग्रहीत होते हैं, न कि उनके चुने गए क्रम पर। एक रिकॉर्ड के लिए एकाधिक चयन केवल एक बार खेले जाते हैं।

प्लॉटक्लॉक

प्लॉटक्लॉक व्यावसायिक रूप से उपलब्ध DIY किट है जिसमें मैकेनिकल पार्ट्स, 3 सर्वो, Arduino Uno R3, Arduino एक्सटेंशन बोर्ड और USB केबल शामिल हैं। लगभग 30 अमरीकी डालर के लिए यह एक अच्छी खरीद है (उदाहरण के लिए। Banggood.com)। इस परियोजना के लिए Arduino, एक्सटेंशन बोर्ड और USB केबल का उपयोग नहीं किया जाता है।

प्लॉटक्लॉक की रचना के लिए कई अच्छे इंटरनेट/यूट्यूब ट्यूटोरियल हैं - जैसे। यह: प्लॉटक्लॉक निर्देश

static1.squarespace.com/static/52cb189ee4b012ff9269fa8e/t/5526946be4b0ed8e0b3cd296/1428591723698/plotclock_final_instructions.pdf

वीमोस

WeMos D1 R2 ESP8266 आधारित माइक्रोकंट्रोलर है। इसे Arduino IDE का उपयोग करके प्रोग्राम किया जा सकता है और इसमें वाईफाई क्षमताएं हैं इसलिए यह इस परियोजना के लिए हार्डवेयर का एक आदर्श टुकड़ा है।

चरण 2: अंशांकन

कैलिब्रेशन
कैलिब्रेशन

चयन बटन के लिए भौतिक स्थिति के अनुरूप सर्वो कोण (0 से 180 डिग्री के बीच) के लिए सटीक कोण मान खोजने के लिए अंशांकन कार्य है। कोण मान त्रिकोणमिति अंकगणित द्वारा या सीएडी सॉफ़्टवेयर का उपयोग करके पाया जा सकता है। मुझे अपने उस मित्र से अनुमानित मूल्य मिले जो ऑटोकैड का उपयोग करना जानता था।

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

चरण 3: विधानसभा

सभा
सभा
सभा
सभा
सभा
सभा
सभा
सभा

तारों

प्लॉटक्लॉक सर्वो से वेमोस से कनेक्शन 5 तारों के साथ किया जाता है: +5, जीएनडी, डी 4, डी 5 और डी 6। चित्रों और कोड में विवरण देखें।

ज्यूकबॉक्स पर स्थापित करना

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

चरण 4: ब्लिंक

ब्लिंको
ब्लिंको

Blynk कई प्रकार के माइक्रोकंट्रोलर को दूरस्थ रूप से नियंत्रित करने के लिए एक निःशुल्क ऐप है। Blynk के साथ आप कई प्रकार के विजेट का उपयोग करके आसानी से एक अच्छा यूजर इंटरफेस बना सकते हैं। इस प्रोजेक्ट के लिए केवल एक विजेट की आवश्यकता है: टेबल विजेट।

चरण 5: सॉफ्टवेयर

ब्लिंक ऐप

ऐप साइड में कोई कोडिंग नहीं है। ऐप (Blynk) और माइक्रोकंट्रोलर (WeMos) के बीच "बातचीत" को "वर्चुअल पिन" द्वारा नियंत्रित किया जाता है जो अनिवार्य रूप से उन दोनों के बीच जानकारी भेजने और प्राप्त करने के लिए चैनल हैं। उदाहरण के लिए वर्चुअल पिन का उपयोग Blynk ऐप से चयनित गाने की पंक्ति संख्या को WeMos में भेजने के लिए किया जाता है, और Wemos बाकी को संभालता है, अर्थात। प्लॉटक्लॉक सर्वो को कमांड भेजना।

वीमोस कोड

/**************************************************************

V2 पर टेबल विजेट ************************************************************** ****************/ # परिभाषित करें BLYNK_PRINT सीरियल #शामिल #शामिल करें #चार लेख शामिल करें = "--आपका अधिकार कोड--"; // ज्यूकबॉक्स प्रोजेक्ट चार एसएसआईडी = "--आपका एसएसआईडी--"; चार पास = "--आपका वाईफाई पासवर्ड--"; इंट सी [५०]; // ज्यूकबॉक्स रिकॉर्ड पदों के लिए ऐरे (100-299) सर्वो myservo1; // लिफ्टिंग सर्वो myservo2; // बाएं हाथ सर्वो myservo3; // दाहिना हाथ int pos1 = 0; इंट पॉज़ 2 = 0; इंट पॉज़ 3 = 0; इंट बीटीएन = 0; शून्य सेटअप () {myservo1.attach(2); // पिन डी 4, लिफ्ट myservo2.attach(14); // पिन डी 5, बाएं myservo3.attach(12); // पिन डी 6, राइट myservo1.write (140); myservo2.लिखें (९०); myservo3.लिखें (९०); सीरियल.बेगिन (115200); Blynk.begin(auth, ssid, pass); // स्टार्टअप पर तुरंत सूचित करें // स्ट्रिंग संदेश = "ज्यूकबॉक्स वीमोस से जुड़ा:"; //Blynk.notify (msg + ssid); // प्रारंभ में स्पष्ट तालिका Blynk.virtualWrite(V2, "clr"); पॉप्युलेटटेबल (); } BLYNK_WRITE(V2) // टेबल विजेट V2 से कमांड प्राप्त करें {स्ट्रिंग cmd = param[0].asStr(); // परम [0] = "चयन करें" या "अचयनित करें", परम [1] = पंक्ति सीरियल.प्रिंट ("\ n तालिका: BLYNK_WRITE (V2) cmd:"); सीरियल.प्रिंट (सेमीडी); int चयन = c [परम [1]। asInt ()]; // चयनित पंक्ति संख्या परम में है [1] Serial.println ("\ n चयन:"); Serial.println (चयन); प्रक्रिया_चयन (चयन); } शून्य पॉप्युलेटटेबल () { int i = 0; Serial.println ("टेबल को पॉप्युलेट करना …"); Blynk.virtualWrite(V2, "add", 0, "Be My Baby - The Supermes", 112); सी = ११२; Blynk.virtualWrite(V2, "add", 1, "नंबर वन - जेरी विलियम्स", 176); मैं++; सी = १७६; Blynk.virtualWrite (V2, "ऐड", 2, "ऑल माई लविंग - द बीटल्स", 184); मैं++; सी = १८४; Blynk.virtualWrite(V2, "add", 3, "In the Summertime - Mungo Jerry", 236)); मैं++; सी = २३६; Blynk.virtualWrite(V2, "add", 4, "ब्लैक क्लाउड - चब्बी चेकर", 155); मैं++; सी = १५५; Blynk.virtualWrite(V2, "add", 5, "Mamy Blue - Pop-tops", 260); मैं++; सी = २६०; Blynk.virtualWrite (V2, "ऐड", 6, "इट्स गोना बी ऑलराइट - गेरी एंड पेसमेकर", 145); मैं++; सी = १४५; Blynk.virtualWrite (V2, "ऐड", 7, "माई वे - टॉम जोन्स", 193); मैं++; सी = १९३; Blynk.virtualWrite(V2, "add", 8, "San Bernadino - Christie", 149); मैं++; सी = १४९; Blynk.virtualWrite(V2, "add", 9, "द ट्विस्ट - चब्बी चेकर", 169); मैं++; सी = १६९;

देरी (1000);

} शून्य प्रक्रिया_चयन (इंट चयन) {// पार्स 3-अंकीय चयन (जैसे। 178) से 3 बटन: int btn1 = int(selection/100); // पहला बटन Serial.println ("\ nBtn1:"); सीरियल.प्रिंट्लन (बीटीएन 1); अगर (btn1 == 1 || btn1 == 2) // पहला बटन 1 या 2 होना चाहिए - अन्यथा रीसेट करें { push_button(btn1); चयन = चयन - (बीटीएन 1 * 100); इंट बीटीएन 2 = इंट (चयन/10); // दूसरा बटन Serial.println ("\ nBtn2:"); सीरियल.प्रिंट्लन (बीटीएन 2); पुश_बटन (बीटीएन 2); चयन = चयन - (बीटीएन 2 * 10); इंट btn3 = इंट (चयन); // तीसरा बटन Serial.println ("\ nBtn3:"); सीरियल.प्रिंट्लन (बीटीएन 3); पुश_बटन (बीटीएन 3); } और { push_button(11); // रीसेट बटन } // सर्वो पदों को रीसेट करें जब सभी विलंब (2000) किए गए हों; myservo1.लिखें (१४०); myservo2.लिखें (९०); myservo3.write(90);} void push_button(int btn) {//इसे प्रत्येक चयन के लिए 3 बार कहा जाता है // प्रत्येक बटन के बाद वास्तविक बटन पुश किया जाता है ('वास्तविक बटन पुश' ढूंढें) स्विच (बीटीएन) {केस 1: set_servo_angles (134, 136); // 1 ब्रेक; केस 2: set_servo_angles (128, 110); // ब्रेक; केस 3: set_servo_angles (112, 88); // ब्रेक; केस 4: set_servo_angles (89, 68); // 4 ब्रेक; केस 5: set_servo_angles (62, 55); //5 ब्रेक; केस 6: set_servo_angles (172, 131); //6 ब्रेक; केस ७: set_servo_angles (१६३, १०६); // 7 ब्रेक; केस 8: set_servo_angles (140, 83); //8 ब्रेक; केस 9: set_servo_angles (104, 58); // 9 ब्रेक; केस 0: set_servo_angles (75, 36); // 0 ब्रेक; केस 11: set_servo_angles (36, 30); //11 ब्रेक; } // एंड स्विच } void set_servo_angles(int pos2, int pos3) { myservo2.write(pos2); myservo3.write(pos3); // सर्वो पोजीशन तैयार - वास्तविक बटन पुश करें: देरी (500); myservo1.लिखें (६०); // नीचे देरी (500); myservo1.लिखें (१४०); // ऊपर देरी (500); } शून्य लूप () {Blynk.run (); }

चरण 6: भविष्य के चरण

वीडियो विजेट - Blynk ऐप पर लाइव वीडियो और ऑडियो स्ट्रीम (पहले से ही परीक्षण किया गया - काम कर रहा है)

वेबहुक विजेट - क्लाउड से प्लेलिस्ट ऑन-डिमांड डाउनलोड (पहले से ही परीक्षण किया गया - काम कर रहा है)

टेबल विजेट - विजेट में कुछ छोटे सुधारों का स्वागत है (Blynk डेवलपर्स को भेजे गए सुझाव)

सिफारिश की: