লেগো ডুপ্লো ট্রেনের জন্য কাঠের ব্লুটুথ রিমোট: 3 টি ধাপ (ছবি সহ)
লেগো ডুপ্লো ট্রেনের জন্য কাঠের ব্লুটুথ রিমোট: 3 টি ধাপ (ছবি সহ)
Anonim
লেগো ডুপ্লো ট্রেনের জন্য কাঠের ব্লুটুথ রিমোট
লেগো ডুপ্লো ট্রেনের জন্য কাঠের ব্লুটুথ রিমোট
লেগো ডুপ্লো ট্রেনের জন্য কাঠের ব্লুটুথ রিমোট
লেগো ডুপ্লো ট্রেনের জন্য কাঠের ব্লুটুথ রিমোট

আমার বাচ্চারা এই ছোট লেগো ডুপ্লো ট্রেনটিকে পছন্দ করত বিশেষ করে আমার কনিষ্ঠ যিনি নিজেকে শব্দের সাথে যোগাযোগ করতে সংগ্রাম করেন তাই আমি তাকে এমন কিছু তৈরি করতে চেয়েছিলাম যা তাকে ট্রেনের সাথে প্রাপ্তবয়স্কদের বা ফোন/ট্যাবলেট থেকে স্বাধীনভাবে খেলতে সাহায্য করবে। এমন কিছু যা ট্রেনে একটি অতিরিক্ত মাত্রা যোগ করবে এবং এটিকে অতিরিক্ত খেলার মান দেবে

লেগো সেটে ইতিমধ্যেই ট্রেন নিয়ন্ত্রণ করার কিছু উপায় আছে, আপনি এটিকে শুরু করতে এবং এটি বন্ধ করার জন্য ধরে রাখতে পারেন, আপনি ট্র্যাকের উপর থাকা রঙিন ট্যাগগুলি ব্যবহার করে এটি নিয়ন্ত্রণ করতে পারেন যাতে ট্রেনটি যখন এটি অতিক্রম করে তখন বিভিন্ন ক্রিয়া শুরু করে। এগিয়ে, বিপরীত, বাজানো শব্দ লাইট চালু করুন। আপনি আপনার ফোন বা ট্যাবলেটের জন্য একটি অ্যাপ ডাউনলোড করতে পারেন যা ব্লুটুথের মাধ্যমে ট্রেনের সাথে সংযোগ স্থাপন করতে পারে।

এখানে ট্রেনের সম্পূর্ণ পর্যালোচনা

ইন্টারনেটে ঘুরে বেড়ানোর পর আমি দেখতে পেলাম সেখানে বেশ কিছু ভিন্ন মানুষ ছিল যাদের ট্রেন নিয়ন্ত্রণের জন্য সমস্ত লিখিত কোড ছিল। Nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) দ্বারা লিখিত 'পাওয়ার্ডআপ' নোডটি একটি নিখুঁত শুরু বলে মনে হয়েছিল, এটি জাভাস্ক্রিপ্ট ব্যবহার করে লেখা হয়েছিল যা আমি আংশিকভাবে পরিচিত ছিলাম না কিন্তু ভেবেছিলাম যদি আমি জাভা ভিত্তিক মাইক্রোচিপ খুঁজে পেতে পারে, এটি একটি ভাল শুরু হবে।

আবার ইন্টারনেটে আশেপাশে শিকারের পরে আবার আমি এসপ্রুইনো সিস্টেম খুঁজে পেয়েছি, এটি আরডিউনো অনুরূপ কিন্তু জাভাস্ক্রিপ্টের চারপাশে ভিত্তি। Espriuno কোডটি একটি MDBT42Q মিরকচিপে লোড করা যেতে পারে যা ব্লুটুথ এম্বেড ছিল। আমি ভেবেছিলাম যদি আমি "চালিত আপ" মডিউলটি লোড করতে পারি তবে আমি সেখানে অর্ধেক পথ পেরিয়ে যাব, তবে এই সহজ ব্যাপারটি এমন নয় যে MDBT42Q- এ লোড করার জন্য অনেক লাইব্রেরিতে মডিউল রয়েছে, তাই মনে হচ্ছে আমাকে একটি সহজ সমাধান খুঁজুন …

ধাপ 1: কোড

কোড
কোড

এসপ্রিনুও

যারা Espruino প্ল্যাটফর্ম জানেন না তাদের জন্য 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")। তারপর (ফাংশন (g) {

console.log ("সংযোগ 2 শুরু করা"); gatt = g; gatt.getPrimaryService ফিরিয়ে দিন ("00001623-1212-efde-1623-785feabcd123"); } তারপর) তারপর।

মজার জিনিস

এখন আপনি ট্রেনের সাথে সংযুক্ত হয়েছেন এটি সব মজার জিনিস যেমন এটিকে এগিয়ে নিয়ে যাওয়া, শব্দ করা এবং আলো জ্বালানো এবং বন্ধ করা। ট্রেনকে একটি প্রিপে ভ্যালু পাঠানো সহজ কাজ, এর পরে প্রকৃত কমান্ড অর্থাৎ

ফাংশন play_horn () {

console.log ("বার্তা =", চরিত্রগত_ দোকান); const prepval = নতুন Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = নতুন Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval)। তারপর (_ => {Characteristic_store.writeValue (sendvalue);}); }

আমি ব্যবহৃত কমান্ডগুলি ছাড়া অন্য কমান্ড খুঁজে পেতে আপনাকে একটু খনন করতে হতে পারে

বোতাম এবং লিভার

রিমোটের ফিজিক্যাল সাইড হল সোজা ফরওয়ার্ড চারটি বোতাম (সাউন্ড বাজানোর জন্য, লাইট অন এবং অফ করা) এবং একটি পোটেনসিওমিটার যা লিভারের সাথে সংযুক্ত থাকে যাতে আপনি ট্রেনের গতি এবং দিক নিয়ন্ত্রণ করতে পারেন

বোতামটি টান আপ প্রতিরোধক প্রয়োজন হয় না পরিবর্তে আপনি কোডে এটি করতে পারেন, যেমন

pinMode (D15, 'input_pulldown');

আপনি potentiometer কে একটি ইনপুট এর সাথে সংযুক্ত করতে পারেন এবং তারপর নিচের কমান্ডটি ব্যবহার করে এটি এনালগ সিগন্যাল পড়তে পারেন

var পড়া = analogRead (D31);

Arduino এর অন্য পার্থক্য হল যে esprunio এর একটি সেটআপ এবং লুপ নেই। তাই এর পরিবর্তে আমি সমস্ত পৃথক কমান্ড/ট্রিগারগুলিকে ফাংশনে রাখি এবং তারপর সেটইনটার্ভাল সেট করি যা প্রতি 100 মিলিসেকেন্ডে লুপ করে, বোতামটি শোনার পরে বাটনটি চাপলে প্রয়োজনীয় ফাংশনটি চালান।

যদি (digitalRead (D15) == 1) {play_horn (); }

লিভারটি অ্যাকশন করা একটু বেশি জটিল ছিল কারণ ক্রমবর্ধমান গতি সামঞ্জস্য করতে চেয়েছিল তাই প্রথমে আমাকে কাজ করার জন্য এনালগ মান পাঠাতে হয়েছিল

var পড়া = analogRead (D31);

train_direction (পড়া * 1024);

তারপর train_direction ফাংশনে আমি পট ভ্যালুর উপর ভিত্তি করে কমান্ডটি 6 টি ভিন্ন ইনক্রিমেন্টে ভেঙে দিয়েছি

সমস্ত পথ, ট্রেনকে বলে পূর্ণ গতিতে এগিয়ে যেতে

অর্ধেক পথ, ট্রেনকে 50% গতিতে এগিয়ে যেতে বলে

মধ্য, ট্রেন থামতে বলে

অর্ধেক নিচে, ট্রেনকে 50% গতিতে পিছনে যেতে বলে

সমস্ত পথ নিচে, ট্রেন সম্পূর্ণ গতিতে উল্টো যেতে বলে

যেমন

ফাংশন train_direction (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = নতুন Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = নতুন 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 = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } যদি (dir_val 100) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } যদি (dir_val {Characteristic_store.writeValue (sendvalue);}); }

নিচের লিঙ্কের জন্য সম্পূর্ণ কোড ডাউন হতে পারে

ধাপ 2: তারের

ওয়্যারিং
ওয়্যারিং
ওয়্যারিং
ওয়্যারিং

ওয়্যারিং ছিল সবচেয়ে সহজ অংশ

এটি শুধু D15, D16, D17 এবং D18 এর সাথে সংযুক্ত 4 টি পুশ বোতামের সমন্বয়ে গঠিত যা কোনও পুল -আপ প্রতিরোধক ছাড়া এই কোডে করা হয়েছিল এবং D31 এর সাথে সংযুক্ত 1 10k রোধক

আমি এখনও বিদ্যুৎ সরবরাহের উপর কাজ করছি কিন্তু বর্তমানে সমস্ত শক্তি একটি মাইক্রো ইউএসবি ব্রেকআউট হয়ে আসে এবং এটি সরাসরি একটি পাওয়ার ব্যাংক বা একটি USB পোর্টের সাথে সংযুক্ত হতে পারে

ধাপ 3: বিল্ড

বিল্ড
বিল্ড
বিল্ড
বিল্ড
বিল্ড
বিল্ড
বিল্ড
বিল্ড

রিমোটটি বেশিরভাগই প্লাইউডের 3 মিমি, 6 মিমি বা 9 মিমি এ 4 শীটের বাইরে, সেগুলি যেখানে আমার সিএনসি মেশিনে কেটে যায় তবে টেমপ্লেট ব্যবহার করে আমি যদি হাত দিয়ে করা অসম্ভব না

আমি আশা করছি যে টেমপ্লেট এবং ফটো আপনাকে রিমেক করার জন্য আপনাকে যা দেবে তা দেবে কিন্তু কিছু নোট যা সাহায্য করতে পারে

3 মিমি পুশ বোতাম মাউন্টটি পুশ বোতামটি আটকে রাখার জন্য, ফাঁকটি সঠিক জায়গায় বোতামটি স্থাপন করবে কিন্তু আমরা আপনাকে পিছনে লেগটি অ্যাক্সেস করার অনুমতি দেব যাতে আপনি মাইক্রোচিপে সোল্ডার করতে পারেন, বিপরীত দিকে আপনি MDBT42Q মাউন্ট করতে পারেন কিছু আঠালো ব্যবহার করে। সামনে আপনি এত ফেনা যোগ করতে হবে যাতে এটি বোতামগুলিকে একটু বাউন্স দেয় যখন আপনি সেগুলি নিচে চাপুন আপনি স্প্রিংস ব্যবহার করতে পারেন

9 মিমি বোতামগুলির জন্য লোগোর হয় পেইন্ট, খোদাই বা অন্য কিছু যা দেখানোর জন্য কোন বোতামটি কী করে

লিভার/হ্যান্ডেলটি স্তরযুক্ত করতে হবে, আমি একটি 6 মিমি ডোয়েল ব্যবহার করেছি যাতে সেগুলি সমস্ত সঠিক অবস্থানে সারিবদ্ধ করতে পারে

প্রস্তাবিত: