جدول المحتويات:

ريموت خشبي بلوتوث لقطار ليغو دوبلو: 3 خطوات (مع صور)
ريموت خشبي بلوتوث لقطار ليغو دوبلو: 3 خطوات (مع صور)

فيديو: ريموت خشبي بلوتوث لقطار ليغو دوبلو: 3 خطوات (مع صور)

فيديو: ريموت خشبي بلوتوث لقطار ليغو دوبلو: 3 خطوات (مع صور)
فيديو: سيارة حقيقية من الليجو || أول مرة أجرب ! 2024, شهر نوفمبر
Anonim
ريموت بلوتوث خشبي لقطار ليغو دوبلو
ريموت بلوتوث خشبي لقطار ليغو دوبلو
ريموت بلوتوث خشبي لقطار ليغو دوبلو
ريموت بلوتوث خشبي لقطار ليغو دوبلو

أحب أطفالي قطار Lego Duplo الصغير هذا ولا سيما أصغرهم الذين يكافحون للتواصل مع الكلمات ، لذلك أردت أن أبني لها شيئًا يساعدها على اللعب مع القطار بشكل مستقل عن البالغين أو الهواتف / الأجهزة اللوحية. شيء من شأنه أن يضيف بُعدًا إضافيًا للقطار ويمنحه قيمة لعب إضافية

مجموعة Lego لديها بالفعل القليل من الطرق للتحكم في القطار ، يمكنك دفعه إلى الأمام لبدء تشغيله والاحتفاظ به لإيقافه ، ويمكنك التحكم فيه باستخدام علامات الألوان التي تسير على المسار ، لذلك عندما يمر القطار فوقه ، فإنه يؤدي إلى إجراءات مختلفة ، أي. إلى الأمام ، والعكس ، وتشغيل الأصوات ، وتشغيل الأضواء. يمكنك أيضًا تنزيل تطبيق لهاتفك أو جهازك اللوحي يمكنه الاتصال بالقطار عبر البلوتوث.

هنا مراجعة كاملة للقطار

بعد البحث عبر الإنترنت ، وجدت أنه كان هناك عدد قليل جدًا من الأشخاص المختلفين الذين لديهم رموز مكتوبة جاهزة للتحكم في القطار. بدت عقدة 'Poweredup' التي كتبها nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) وكأنها بداية مثالية ، وقد تمت كتابتها باستخدام Javascript الذي لم أكن مألوفًا به جزئيًا ولكني أعتقد أنه يمكن العثور على رقاقة تعتمد على جافا ، ستكون هذه بداية جيدة.

مرة أخرى بعد البحث على الإنترنت مرة أخرى ، وجدت نظام espruino ، وهو مشابه لنظام ardiuno ولكنه يعتمد على جافا سكريبت. يمكن تحميل كود espriuno على mircochip MDBT42Q الذي يحتوي على تقنية البلوتوث. اعتقدت أنه إذا كان بإمكاني تحميل الوحدة النمطية "التي تم تشغيلها" إليها ، فسأكون في منتصف الطريق ، ولكن هذا لم يكن هو الحال بالنسبة للوحدة النمطية الموجودة في العديد من المكتبات الكبيرة لتحميلها على MDBT42Q ، لذلك يبدو أنه لا بد لي من ذلك إيجاد حل أبسط….

الخطوة 1: الكود

الرمز
الرمز

اسبرينو

بالنسبة لأولئك الذين لا يعرفون منصة Espruino https://www.espruino.com (ولم أفعل) هل هي مشابهة جدًا لـ Arduino ، هناك بعض الاختلافات الرئيسية التي كتبتها لجافا سكريبت بدلاً من 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 ("بدء connect2") ؛ جات = ز ؛ إرجاع gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123") ؛ }). ثم (الوظيفة (الخدمة) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123") ؛}). ثم (الوظيفة (مميزة) {Characteristic_store = characteristic؛ return characteristic.readValue ()؛}).then (value => {console.log (value)؛}). ثم (function () {console.log ("Train Connected") ؛ connect = 1 ؛

الأشياء الممتعة

أنت الآن متصلاً بالقطار ، حان الوقت لجميع الأشياء الممتعة مثل تحريكه للأمام ، وإصدار صوت وتشغيل وإطفاء الضوء. إنها مهمة بسيطة تتمثل في إرسال قيمة الإعدادية للقطار ، متبوعة بالأمر الفعلي ie

وظيفة play_horn () {

console.log ("message ="، Characteristic_store) ؛ const prepval = صفيف Uint8 جديد ([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') ؛

يمكنك توصيل مقياس الجهد بأحد المدخلات ثم قراءة الإشارة التناظرية باستخدام الأمر التالي

فار القراءة = analogRead (D31) ؛

الاختلاف الآخر في اردوينو هو أن esprunio لا يحتوي على إعداد وحلقة. لذا ، بدلاً من ذلك ، أضع كل الأوامر / المشغلات المنفصلة في الوظائف ، ثم أقوم بإعداد setInterval الذي يتكرر كل 100 مللي ثانية ، والاستماع إلى الزر ثم تشغيل الوظيفة المطلوبة عند الضغط على الزر.

إذا (digitalRead (D15) == 1) {play_horn () ؛ }

كان إجراء الرافعة أكثر تعقيدًا قليلاً حيث أردت أن أكون قادرًا على ضبط السرعة بشكل تدريجي ، لذا كان علي أولاً إرسال القيمة التناظرية للعمل

فار القراءة = analogRead (D31) ؛

train_direction (قراءة * 1024) ؛

ثم في وظيفة train_direction ، قمت بتقسيم الأمر إلى 6 زيادات مختلفة بناءً على قيمة القدر

على طول الطريق ، يخبر القطار بالمضي قدمًا بأقصى سرعة

في منتصف الطريق ، يخبر القطار بالتقدم بسرعة 50٪

الأوسط ، يخبر القطار بالتوقف

في منتصف الطريق ، يخبر القطار أن يعود إلى الخلف بسرعة 50٪

على طول الطريق ، يخبر القطار أن يسير بأقصى سرعة في الاتجاه المعاكس

بمعنى آخر

وظيفة train_direction (dir_val) {

//console.log("message = "، Characteristic_store) ؛ const prepval = صفيف Uint8 جديد ([0x0a ، 0x00 ، 0x41 ، 0x01 ، 0x01 ، 0x01 ، 0x00 ، 0x00 ، 0x00 ، 0x01]) ؛ قيمة إرسال const = 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]) ؛ } إذا (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]) ؛ } if (dir_val {Characteristic_store.writeValue (sendvalue)؛}) ؛ }

يمكن أن يكون الكود الكامل للرابط أدناه

الخطوة 2: الأسلاك

الأسلاك
الأسلاك
الأسلاك
الأسلاك

كانت الأسلاك هي الجزء الأبسط

كان يتألف فقط من 4 أزرار ضغط متصلة بـ D15 و D16 و D17 و D18 بدون أي مقاومة سحب كما تم ذلك في الكود و 1 10k المقاوم المتصل بـ D31

ما زلت أعمل على مصدر الطاقة ، لكن في الوقت الحالي ، تأتي كل الطاقة من اندلاع micro USB ويمكن توصيلها مباشرة ببنك طاقة أو منفذ USB

الخطوة 3: The Build

البناء
البناء
البناء
البناء
البناء
البناء
البناء
البناء

يتكون جهاز التحكم عن بعد في الغالب من صفائح من الخشب الرقائقي مقاس 3 مم أو 6 مم أو 9 مم ، حيث يتم قطعها على آلة CNC الخاصة بي ولكن باستخدام القالب بشرط أنه لن يكون من المستحيل القيام به يدويًا

آمل أن يمنحك القالب والصور كل ما تحتاجه لإعادة صياغته ولكن هناك القليل من الملاحظات التي قد تساعدك

إن أداة التثبيت بزر الضغط 3 مم مخصصة للالتصاق بزر الضغط ، وستعمل الفجوة على وضع الزر في المكان الصحيح ولكننا نسمح لك بالوصول إلى الساق في الخلف حتى تتمكن من اللحام بالرقاقة الدقيقة ، وفي الخلف ، يمكنك أيضًا تركيب MDBT42Q باستخدام بعض الغراء. في المقدمة ، ستحتاج إلى إضافة رغوة بحيث تعطي الأزرار ارتدادًا بسيطًا عند الضغط عليها لأسفل ، يمكنك أيضًا استخدام النوابض

ستحتاج الأزرار مقاس 9 مم إلى طلاء الشعار أو النقش أو أي شيء آخر لإظهار ما يفعله الزر

يجب وضع الرافعة / المقبض في طبقات ، لقد استخدمت وتد 6 مم للمساعدة في مواءمتها في جميع المواضع الصحيحة

موصى به: