فهرست مطالب:

ریموت بلوتوث چوبی برای Lego Duplo Train: 3 مرحله (همراه با تصاویر)
ریموت بلوتوث چوبی برای Lego Duplo Train: 3 مرحله (همراه با تصاویر)

تصویری: ریموت بلوتوث چوبی برای Lego Duplo Train: 3 مرحله (همراه با تصاویر)

تصویری: ریموت بلوتوث چوبی برای Lego Duplo Train: 3 مرحله (همراه با تصاویر)
تصویری: ریموت بلوتوث شاتر + مونوپاد 2024, نوامبر
Anonim
ریموت بلوتوث چوبی برای Lego Duplo Train
ریموت بلوتوث چوبی برای Lego Duplo Train
ریموت بلوتوث چوبی برای Lego Duplo Train
ریموت بلوتوث چوبی برای Lego Duplo Train

بچه های من عاشق این قطار کوچک لگو دوپلو بودند ، به ویژه کوچکترین من که در برقراری ارتباط با کلمات مشکل دارد ، بنابراین من می خواستم چیزی برایش بسازم که به او کمک کند با قطار مستقل از بزرگسالان یا تلفنها/تبلتها بازی کند. چیزی که به ابعاد اضافی قطار می افزاید و ارزش بازی بیشتری به آن می بخشد

مجموعه لگو در حال حاضر راههای کمی برای کنترل قطار دارد ، می توانید آن را به جلو فشار داده و آن را نگه دارید تا متوقف شود ، می توانید آن را با استفاده از برچسب های رنگی که در مسیر حرکت می کنند کنترل کنید ، بنابراین هنگامی که قطار از آن عبور می کند اقدامات مختلفی را انجام می دهد. جلو ، عقب ، پخش صداها چراغ ها را روشن کنید. همچنین می توانید برنامه ای را برای تلفن یا رایانه لوحی خود بارگیری کنید که می تواند از طریق بلوتوث به قطار متصل شود.

در اینجا یک بررسی کامل از قطار

پس از جستجو در اینترنت ، متوجه شدم تعداد کمی از افراد مختلف وجود دارد که برای کنترل قطار همه کد آماده داشته باشند. گره "Poweredup" نوشته شده توسط nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) یک شروع عالی به نظر می رسید ، با استفاده از جاوا اسکریپت نوشته شده است که من تا حدی با آن آشنا نبودم ، اما فکر می کردم اگر می توان ریزتراشه مبتنی بر جاوا را پیدا کرد ، این شروع خوبی خواهد بود.

دوباره بعد از شکار مجدد در اینترنت ، سیستم اسپروینو را پیدا کردم ، این شبیه به ardiuno است ، اما در اطراف جاوا اسکریپت قرار دارد. کد espriuno را می توان در یک میرکچیپ MDBT42Q که دارای بلوتوث تعبیه شده بود بارگذاری کرد. من فکر کردم اگر بتوانم ماژول "power up" را در آن بارگذاری کنم ، من نصف راه را می رسم ، اما این ساده در مورد ماژول موجود در بسیاری از کتابخانه ها تا بزرگ در MDBT42Q وجود نداشت ، بنابراین به نظر می رسد باید راه حل ساده تری پیدا کنید….

مرحله 1: کد

کد
کد

اسپرینوو

برای کسانی که پلت فرم Espruino را نمی شناسند https://www.espruino.com (و من نمی دانستم) آیا این بسیار شبیه به آردوینو است ، چند تفاوت اصلی وجود دارد که آن را برای جاوا اسکریپت نوشته است نه c ، کمی جدیدتر به نظر می رسد بنابراین ممکن است نمونه هایی وجود نداشته باشد ، اما پشتیبانی از طریق انجمن ها بسیار عالی و بسیار مفید است.

جاوا اسکریپت با قطار ملاقات کنید

اولین مانع اتصال به قطار از طریق بلوتوث بود ، این را می توان با استفاده از کلاس NRF که در کد espruino ارسال می شود انجام داد.

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 ؛ return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123") ؛ }). سپس (تابع (سرویس) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123")؛}). سپس (تابع (مشخصه) {Characteristic_store = feature؛ return feature.readValue ()؛}).then (value => {console.log (value)؛}). سپس (function () {console.log ("Train Connected") ؛ متصل = 1 ؛

چیزهای سرگرم کننده

اکنون که به قطار متصل شده اید ، وقت آن است که همه چیزهای سرگرم کننده مانند حرکت آن به جلو ، ایجاد صدا و روشن و خاموش کردن چراغ را فرا بگیرید. کار ساده این است که یک قطعه مقدار آمادگی را به قطار ارسال کنید ، سپس دستور واقعی یعنی

تابع play_horn () {

console.log ("message ="، Characteristic_store)؛ 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).then (_ => {Characteristic_store.writeValue (ارزش ارسال) ؛}) ؛ }

ممکن است مجبور شوید کمی جستجو کنید تا فرمان دیگری به غیر از دستوراتی که من استفاده کردم پیدا کنید

دکمه ها و اهرم ها

جنبه فیزیکی کنترل از راه دور چهار دکمه (برای پخش صدا ، روشن و خاموش کردن چراغ ها) و یک پتانسیومتر متصل به اهرم است که می توانید سرعت و جهت قطار را کنترل کنید.

دکمه نیازی به مقاومت کششی ندارد در عوض می توانید این کار را به صورت کد انجام دهید ، به عنوان مثال

pinMode (D15 ، 'input_pulldown') ؛

می توانید پتانسیومتر را به یکی از ورودی ها متصل کرده و سپس با استفاده از دستور زیر ، سیگنال آنالوگ را برای آن بخوانید

var خواندن = analogRead (D31) ؛

تفاوت دیگر آردوینو در این است که esprunio راه اندازی و حلقه ندارد. بنابراین در عوض همه دستورات/راه اندازی های جداگانه را در توابع قرار می دهم و سپس setInterval را تنظیم می کنم که هر 100 میلی ثانیه حلقه می شود ، به دکمه گوش می دهم و وقتی دکمه را فشار می دهیم عملکرد مورد نیاز را اجرا می کنم.

if (digitalRead (D15) == 1) {play_horn ()؛ }

عملکرد اهرم کمی پیچیده تر بود ، زیرا می خواستم بتوانم سرعت را به صورت تدریجی تنظیم کنم ، بنابراین ابتدا باید مقدار آنالوگ را برای عملکرد ارسال کنم

var خواندن = analogRead (D31) ؛

جهت قطار (خواندن * 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]) ؛ if (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = new Uint8Array ([0x08، 0x00، 0x81، 0x00، 0x01، 0x51، 0x00، 0x64])؛ } if (dir_val 200) {const sendvalue = new Uint8Array ([0x08، 0x00، 0x81، 0x00، 0x01، 0x51، 0x00، 0xe2])؛ } if (dir_val 100) {const sendvalue = new Uint8Array ([0x08، 0x00، 0x81، 0x00، 0x01، 0x51، 0x00، 0xce])؛ } if (dir_val {Characteristic_store.writeValue (sendvalue)؛})؛ }

برای پیوند زیر می توانید کد کامل را پایین بیاورید

مرحله 2: سیم کشی

سیم کشی
سیم کشی
سیم کشی
سیم کشی

سیم کشی ساده ترین قسمت بود

این فقط شامل 4 دکمه متصل به D15 ، D16 ، D17 و D18 بدون هیچ گونه مقاومت کششی به عنوان این در کد انجام شده بود و 1 مقاومت 10k متصل به D31

من هنوز روی منبع تغذیه کار می کنم ، اما در حال حاضر تمام برق از یک خروجی میکرو یو اس بی می آید و این می تواند آنها را مستقیماً به پاور بانک یا پورت USB متصل کند

مرحله 3: ساخت

The Build
The Build
The Build
The Build
The Build
The Build
The Build
The Build

کنترل از راه دور عمدتا از ورق های 3 میلی متر ، 6 میلی متر یا 9 میلی متر A4 است ، آنها با استفاده از الگوی ارائه شده بر روی دستگاه CNC من بریده می شوند ، اگرچه انجام این کار با دست غیرممکن نیست.

امیدوارم الگو و عکسها تمام آنچه را که برای بازسازی نیاز دارید در اختیار شما قرار دهد ، هرچند چند نکته وجود دارد که ممکن است کمک کننده باشد

پایه 3 میلی متری دکمه برای چسباندن دکمه فشاری است ، شکاف دکمه را در محل مناسب قرار می دهد ، اما ما به شما اجازه می دهیم به قسمت پایینی دسترسی داشته باشید تا بتوانید به میکروچیپ لحیم کنید ، در قسمت عقب نیز می توانید MDBT42Q را نصب کنید با استفاده از مقداری چسب در قسمت جلو باید فوم زیادی اضافه کنید تا وقتی دکمه ها را فشار می دهید کمی تکان بخورد ، همچنین می توانید از فنرها استفاده کنید.

دکمه های 9 میلی متری به رنگ ، حکاکی یا چیز دیگری نیاز دارند که نشان می دهد چه دکمه ای چه کاری را انجام می دهد

اهرم/دستگیره باید لایه لایه شود ، من از رولپلاک 6 میلی متری برای تراز کردن آنها در تمام موقعیت های مناسب استفاده کردم.

توصیه شده: