विषयसूची:

लेगो डुप्लो ट्रेन के लिए लकड़ी का ब्लूटूथ रिमोट: 3 कदम (चित्रों के साथ)
लेगो डुप्लो ट्रेन के लिए लकड़ी का ब्लूटूथ रिमोट: 3 कदम (चित्रों के साथ)

वीडियो: लेगो डुप्लो ट्रेन के लिए लकड़ी का ब्लूटूथ रिमोट: 3 कदम (चित्रों के साथ)

वीडियो: लेगो डुप्लो ट्रेन के लिए लकड़ी का ब्लूटूथ रिमोट: 3 कदम (चित्रों के साथ)
वीडियो: Cookie Monster बच्चों के लिए खिलौना सीखने का वीडियो! 2024, नवंबर
Anonim
लेगो डुप्लो ट्रेन के लिए लकड़ी का ब्लूटूथ रिमोट
लेगो डुप्लो ट्रेन के लिए लकड़ी का ब्लूटूथ रिमोट
लेगो डुप्लो ट्रेन के लिए लकड़ी का ब्लूटूथ रिमोट
लेगो डुप्लो ट्रेन के लिए लकड़ी का ब्लूटूथ रिमोट

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

लेगो सेट में पहले से ही ट्रेन को नियंत्रित करने का कुछ तरीका है, आप इसे शुरू करने के लिए आगे बढ़ा सकते हैं और इसे रोकने के लिए पकड़ सकते हैं, आप इसे ट्रैक पर जाने वाले रंग टैग का उपयोग करके नियंत्रित कर सकते हैं, इसलिए जब ट्रेन इसे पार करती है तो यह विभिन्न क्रियाओं को ट्रिगर करता है यानी आगे, पीछे, ध्वनि बजाएँ रोशनी चालू करें। आप अपने फोन या टैबलेट के लिए एक ऐप भी डाउनलोड कर सकते हैं जो ब्लूटूथ के माध्यम से ट्रेन से जुड़ सकता है।

यहां देखें ट्रेन की पूरी समीक्षा

इंटरनेट पर खोजबीन करने के बाद मैंने पाया कि वहाँ बहुत कम अलग-अलग लोग थे जिनके पास ट्रेन को नियंत्रित करने के लिए सभी तैयार लिखित कोड थे। नाथन.केलेनिकी (https://nathan.kellenicki.com/node-powerup/) द्वारा लिखित 'पावर्डअप' नोड एकदम सही शुरुआत की तरह लग रहा था, यह जावास्क्रिप्ट का उपयोग करके लिखा गया था जिससे मैं आंशिक रूप से परिचित नहीं था, लेकिन सोचा कि अगर मैं जावा आधारित माइक्रोचिप मिल सकता है, यह एक अच्छी शुरुआत होगी।

इंटरनेट पर फिर से शिकार करने के बाद फिर से मुझे एस्प्रुइनो सिस्टम मिला, यह आर्डिनो के समान है लेकिन जावास्क्रिप्ट के आसपास का आधार है। espriuno कोड को एक MDBT42Q mircochip पर लोड किया जा सकता है जिसमें ब्लूटूथ एम्बेड था। मैंने सोचा कि अगर मैं इसमें "पावर्ड अप" मॉड्यूल लोड कर सकता हूं तो मैं वहां आधा रास्ता तय करूंगा, हालांकि यह सरल मामला नहीं था कि एमडीबीटी 42 क्यू पर लोड करने के लिए कई पुस्तकालयों में मॉड्यूल शामिल है, इसलिए ऐसा लगता है कि मुझे करना है कोई आसान उपाय ढूंढे….

चरण 1: कोड

कोड
कोड

एस्प्रिनुओ

उन लोगों के लिए जो एस्प्रुइनो प्लेटफॉर्म को नहीं जानते हैं https://www.espruino.com (और मैंने नहीं किया) क्या यह Arduino के समान है, इसमें कुछ मुख्य अंतर है जो इसे जावास्क्रिप्ट के बजाय c के लिए लिखा गया है, यह थोड़ा नया लगता है इसलिए ऐसा न हो कि उदाहरण हों लेकिन मंचों के माध्यम से समर्थन बहुत अच्छा और बहुत मददगार हो।

जावास्क्रिप्ट ट्रेन से मिलते हैं

पहली बाधा ब्लूटूथ के माध्यम से ट्रेन से जुड़ना था, यह एनआरएफ वर्ग का उपयोग करके किया जा सकता है जो एस्प्रुइनो कोड में जहाज करता है।

NRF.connect का उपयोग ट्रेन से कनेक्ट करने के लिए किया जा सकता है, हालांकि आपको सबसे पहले ट्रेन का पता ढूंढना होगा, आप इस जानकारी को प्राप्त करने के लिए NRF.findDevices का उपयोग कर सकते हैं।

एक बार जब आप ऐसा कर लेते हैं तो आपको ट्रेन के साथ हैंडशेक करने के लिए ट्रेन को दो मूल्य भेजने की आवश्यकता होती है, मेरी ट्रेन के लिए यह "00001623-1212-efde-1623-785feabcd123" और उसके बाद "00001624-1212-efde-1623-785feabcd123" मेरा मानना है कि यह सभी स्टीम ट्रेनों के सेट के लिए समान होगा लेकिन अन्य संस्करण यानी कार्गो सेट अलग हो सकते हैं

एक बार आपके पास यह हो जाने के बाद आप निम्नलिखित की तरह फ़ंक्शन का उपयोग करके ट्रेन को कनेक्ट कर सकते हैं, क्या आप बता सकते हैं कि ट्रेन कब कनेक्ट हो गई है क्योंकि यह फ्लैश होगी, यह नीली हेडलाइट्स

NRF.connect("e0:7d:ea:0c:03:29").then(function(g) {

कंसोल.लॉग ("कनेक्टिंग 2 शुरू करना"); गैट = जी; वापसी gatt.getPrimaryService("00001623-1212-efde-1623-785feabcd123"); }).फिर (फ़ंक्शन (सेवा) {वापसी सेवा। getCharacteristic ("00001624-1212-efde-1623-785feabcd123");})। तब (मान => {कंसोल। लॉग (मान);})। तब (फ़ंक्शन () { कंसोल.लॉग ("ट्रेन कनेक्टेड"); कनेक्टेड = 1;

मजेदार सामान

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

समारोह play_horn () {

कंसोल.लॉग ("संदेश =", विशेषता_स्टोर); const prepval = नया Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); कॉन्स प्रेषण = नया Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); कैरेक्टरिस्टिक_स्टोर.राइटवैल्यू (प्रीपवल).फिर (_ => {कैरेक्टरिस्टिक_स्टोर.राइटवैल्यू (सेंडवैल्यू);}); }

मेरे द्वारा उपयोग किए गए कमांड के अलावा अन्य कमांड खोजने के लिए आपको थोड़ी खुदाई करनी पड़ सकती है

बटन और लीवर

रिमोट का भौतिक पक्ष बहुत सीधा है चार बटन (ध्वनियां बजाने के लिए, रोशनी चालू और बंद करने के लिए) और एक पोटेंशियोमीटर जो लीवर से जुड़ा होता है ताकि आप ट्रेन की गति और दिशा को नियंत्रित कर सकें

बटन को पुल अप रेसिस्टर की आवश्यकता नहीं है इसके बजाय आप इसे कोड में कर सकते हैं, अर्थात

पिनमोड (डी 15, 'इनपुट_पुलडाउन');

आप पोटेंशियोमीटर को किसी एक इनपुट से कनेक्ट कर सकते हैं और फिर निम्न कमांड का उपयोग करके इसे एनालॉग सिग्नल पढ़ सकते हैं:

वर रीडिंग = एनालॉग रीड (डी 31);

Arduino के लिए दूसरा अंतर यह है कि esprunio में सेटअप और लूप नहीं होता है। तो इसके बजाय मैं सभी अलग-अलग कमांड/ट्रिगर को फ़ंक्शंस में रखता हूं और फिर सेट इंटरवल सेट करता हूं जो प्रत्येक 100 मिलीसेकंड को लूप करता है, बटन को सुनकर बटन दबाए जाने पर आवश्यक फ़ंक्शन चलाता है।

अगर (डिजिटल रीड (डी 15) == 1) {play_horn (); }

लीवर को क्रियान्वित करना थोड़ा अधिक जटिल था क्योंकि गति को क्रमिक रूप से समायोजित करने में सक्षम होना चाहता था इसलिए पहले मुझे कार्य करने के लिए एनालॉग मान भेजना पड़ा

वर रीडिंग = एनालॉग रीड (डी 31);

train_direction (पढ़ना * 1024);

फिर ट्रेन_डायरेक्शन फंक्शन में मैंने पॉट वैल्यू के आधार पर कमांड को 6 अलग-अलग इंक्रीमेंट में तोड़ दिया

पूरे रास्ते ऊपर, ट्रेन को पूरी गति से आगे जाने के लिए कहता है

आधा ऊपर, ट्रेन को 50% की गति से आगे बढ़ने के लिए कहता है

बीच में, ट्रेन को रुकने के लिए कहता है

आधा रास्ता नीचे, ट्रेन को 50% की गति से पीछे जाने के लिए कहता है

सभी तरह से नीचे, ट्रेन को रिवर्स में पूरी गति से जाने के लिए कहता है

अर्थात

समारोह ट्रेन_दिशा (dir_val) {

// कंसोल.लॉग ("संदेश =", विशेषता_स्टोर); const prepval = नया Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); कॉन्स प्रेषण = नया Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); अगर (dir_val > 300 && dir_val 400 && dir_val 500) { const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } अगर (dir_val 200) { const sendvalue = नया Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } अगर (dir_val 100) { const sendvalue = नया Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } अगर (dir_val { Characteristic_store.writeValue(sendvalue); }); }

नीचे दिए गए लिंक के लिए पूरा कोड नीचे किया जा सकता है

चरण 2: तारों

तारों
तारों
तारों
तारों

वायरिंग सबसे सरल हिस्सा था

इसमें केवल 4 पुश बटन शामिल थे जो D15, D16, D17 और D18 से जुड़े थे, बिना किसी पुल अप रेसिस्टर के क्योंकि यह कोड में किया गया था और 1 10k रेसिस्टर D31 से जुड़ा था

मैं अभी भी बिजली की आपूर्ति पर काम कर रहा हूं लेकिन वर्तमान में सारी शक्ति माइक्रो यूएसबी ब्रेकआउट के रूप में आती है और इसे सीधे पावर बैंक या यूएसबी पोर्ट से जोड़ा जा सकता है

चरण 3: बिल्ड

बिल्ड
बिल्ड
बिल्ड
बिल्ड
बिल्ड
बिल्ड
बिल्ड
बिल्ड

रिमोट ज्यादातर प्लाईवुड के 3 मिमी, 6 मिमी या 9 मिमी ए 4 शीट से बाहर होता है, वे जहां मेरी सीएनसी मशीन पर काटते हैं, हालांकि प्रदान किए गए टेम्पलेट का उपयोग करते हुए, हालांकि यह हाथ से करना असंभव नहीं होगा

मुझे उम्मीद है कि टेम्प्लेट और तस्वीरें आपको वह सब कुछ देगी जो आपको रीमेक करने की आवश्यकता है, हालांकि कुछ नोट्स हैं जो मदद कर सकते हैं

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

9 मिमी बटन को लोगो के पेंट, उत्कीर्णन या कुछ और की आवश्यकता होगी जो यह दिखाने के लिए कि कौन सा बटन क्या करता है

लीवर/हैंडल को स्तरित करने की आवश्यकता होगी, मैंने सभी सही स्थितियों में उन्हें संरेखित करने में सहायता के लिए 6 मिमी डॉवेल का उपयोग किया

सिफारिश की: