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

في متناول اليد كان هيكل غير مكلف مع Ebay و Arduino Uno.

للتحكم في المحركات ، أخذت PWM Servo Shield ملحومة L293D + PCF8574 على اللوح:

للقراءة من لوحة المفاتيح ، أخذت PCF8574 وحفنة من الثنائيات:

تم صنع لوحة المفاتيح نفسها لوحة دوائر مطبوعة:

حتى لا تنهار لوحة المفاتيح في يدي ، قمت بإصلاح التراكب في الأعلى. كان عليها أن تأمر من "الطحن" :)

لعرض البرنامج ، يتم استخدام شاشة تقليدية مكونة من 4 أحرف 20. نعم ، أيضًا من خلال PCF8574 ؛)
في البداية ، استخدمت 4 بطاريات للطاقة ، لكنها نفدت بسرعة كبيرة ، واستبدلتها بزوج من 18650 بطارية:

استخدمت وحدات TP4056 للشحن ، والتي قمت بتوصيلها بالبطاريات عبر مرحل ، ولكن ليس بنجاح كبير.
كانت أسرع طريقة لكتابة البرامج الثابتة. لسوء الحظ ، اتضح أن مكتبة I2C LCD لديها ترخيص GPL ، وذهب الرمز إلى سلة المهملات. في نفس الوقت تقريبًا ، أدركت أن Arduino Uno ليس الخيار الأفضل ، وأن حفنة من PCF8574 غير ملائمة جدًا للحام.
وقررت أن أبدأ من جديد.
الإصدار 2

لقد أخذت في الاعتبار الخبرة السابقة ، والتي أشارت إلى وجود العديد من المشاكل:
- الهيكل مع Ebay مصنوع من زجاج شبكي وهو (!) هش للغاية (قمت بسحب برغي تركيب علبة التروس والحامل مكسور للتو).
- هناك العديد من ثقوب التثبيت على الهيكل ، ولكنها ليست مناسبة.
- جنبا إلى جنب مع الهيكل هي التروس 1:48 ، لكنها سريعة للغاية.
- بشكل عام ، الشاسيه ليس كافيا.
- اردوينو أونو لديه عدد قليل من الأرجل.
- لا توجد وحدة صوت (وهي ضرورية لأمر النار).
- تتم كتابة قصص الرعب عن Li-ion على الإنترنت ، ولا أريد أن أعطي طفلًا جهازًا يحتمل أن يكون خطرًا.
ونتيجة لذلك ، اشتريت:
بالإضافة إلى:
Achtung! تحذير! إنتباه! يتم توفير هذه الروابط فقط لتوضيح وتبسيط البحث الإضافي عن التفاصيل. لا أستطيع أن أضمن أن البائع لا يغير فجأة الكمية إلى أخرى ، ولا يغير السعر والكمية وما إلى ذلك.حديد
لقد نقلت لوحة المفاتيح إلى لوحة الدائرة (ربما يكون هذا هو العنصر الوحيد الذي يصعب تكراره). تم طحن تراكب لوحة المفاتيح على طلبي.
بقي السؤال: ما لجعل الهيكل؟ لم يكن هناك بلاستيك مناسب ، من الصعب معالجة المعدن ... وإذا كنت تأخذ الخشب الرقائقي؟ فكرت: "لكن هذا ليس مرضيا من الناحية الجمالية!" ولكن عندما حصلت على هيكل عادي بعد نصف ساعة ، غيرت رأيي. لم يكن الهيكل مناسبًا جدًا وذهب إلى السلة ، لكني أحببت سرعة المعالجة لدرجة أنني قررت الاستمرار في استخدام الخشب الرقائقي.
صحيح ، لقد بدأت في مشاهدة الورقة الثانية فقط بعد رسم خطة تقريبية:

لتركيب المحركات ، قطعت قطعة من الألومنيوم وحفرتها:

لوحات مثبتة على رفوف سداسية ومتصلة فيما بينها عن طريق الحلقات.

(هنا يمكنك رؤية مثبت 5V وعدد قليل من جهات الاتصال الكهربائية).
تحولت أسلاك الطاقة إلى حد كبير ، لذلك صنعت لوحة طاقة من اللوح (التفاصيل
هنا ). أظن أنه يمكنك أخذ درع مستشعر عادي ، يحتوي على الكثير من دبابيس الطاقة.

نظرًا لعدم وجود المزيد من موسعات الإدخال / الإخراج ، يجب إعادة تصميم لوحة المفاتيح (
المصدر ). قمت بنقل الثنائيات ومقاومات السحب إليها:


كمستشعر للسرعة ، استخدمت optocoupler مشقوق وترس (رسمت عليه بعلامة دائمة):

كعجلة ثالثة ، استخدمت كرة:

في البداية ، كان هناك دعم على شكل عجلة على العارضة ، والتي تأتي مع الهيكل. ومع ذلك ، عندما تغير اتجاه الحركة ، بدأت العجلة في الدوران في أكثر لحظة غير متوقعة وألقت العربة إلى الجانب.
مخطط الأسلاك
من الأفضل إلقاء نظرة على ملفات consts.h و lcd.ino ، فهي تحتوي على المعلومات الأكثر صلة. تبدو الاتصالات كما هي الآن كما يلي:
الصورة قابلة للنقر.البرامج الثابتة
البرامج الثابتة ، في جوهرها ، هو برنامج عادي مكتوب في Arduino IDE. هناك وضعان للتشغيل: التحرير والتنفيذ. في عملية التحرير ، يتم قبول الأمر + عدد التكرار من لوحة المفاتيح. كل هذا معبأ في قيمة 16 بت وإضافته إلى صفيف في ذاكرة الوصول العشوائي. عند تنفيذ برنامج ، تتم إزالة القيم من المصفوفة وتنفيذها. يبدو تنفيذ خطوة واحدة (بشكل مبسط للغاية) كما يلي:
( ) ( >= ), = *
( ) ( >= ), = *
يتم تحديد المسافة المقطوعة من خلال عدد النبضات من optocoupler ، والتي يتم تحديدها عن طريق مقاطعة المؤقت.
الاستثناء الوحيد هو تشغيل الصوت. في حالة مواجهة الأمر "shot" ، يتم بدء أبسط حلقة ، والتي تلتقط القيم من ملف wav (يتم وميضها في نفس ذاكرة الفلاش للبرنامج) وتصدرها إلى R-2R DAC. عندما تنتهي القيم ، فإنها تعود إلى عملية تنفيذ البرنامج العادية.
لسوء الحظ ، يختلف العالم الحقيقي قليلاً عن طراز البرنامج الذي تم تصميم البرامج الثابتة من أجله ، لذلك أضفت عددًا من التأخيرات التي تسمح بأخذ القصور الذاتي في الهيكل في الاعتبار.
لقد وضعت عمدا رخصة MIT. حسب فهمي ، يمكن استخدام البرامج الثابتة بمثل هذا الترخيص بحرية كما تريد ، دون الحاجة إلى نشر المزيد من التغييرات (لا أريد إجبار أي شخص على فعل أي شيء).
دليل التشغيل ؛)
تختلف لوحة المفاتيح قليلاً عن Lunokhod "الكلاسيكية":

- على اليسار كتلة من الأوامر (أخضر - إلى أين تذهب ، أحمر - وقفة ، أسفل - خارج ، نار ، كرر).
- توجد في المنتصف أرقام مع عدد التكرارات.
- على اليمين هناك 8 مفاتيح تحكم (أسود - حذف آخر أمر ، أحمر - حذف كل شيء ، أخضر - بدء ، أصفر - بدء الأمر الأخير ، أزرق - اختبار ، رمادي - احتياطي).
مرة أخرى مع علامة:
في الصورة | الترجمة | المعنى |
إعادة توجيه | قد إلى الأمام | |
Bwd | ارجع | |
غادر | إستدر لليسار | |
حق | إستدر لليمين | |
وقفة | تجميد | |
خارج | لم تنفذ ، غادر للمستقبل | فعلت كما في Lunokhod |
حريق | حريق | ينتج صوت "pih!" |
حلقة | دورة | كرر عدة أوامر سابقة مرة واحدة |
0-9 | عدد الخطوات | 20 كحد أقصى |
Bsp | حذف الأمر الأخير | |
ديل | حذف البرنامج بأكمله | مطلوب تأكيد الذهاب! |
T1 ، T2 | اختبر | قم بتشغيل برنامج الاختبار |
تحقق | اتخذ الخطوة الأخيرة | |
انطلق! | أكمل جميع الخطوات | |
يتم إدخال البرنامج بالضغط بالتناوب على "الفريق" و "الرقم". ثم نضغط على "الإطلاق" الأخضر ونلقي نظرة على النتيجة. يحدث الحذف بالضغط على الزر الأحمر ، ولكن ليس على الفور: تحتاج إلى تأكيد قرارك بالضغط على الزر "ابدأ" الأخضر. عند إيقاف التشغيل ، يتم حذف البرنامج.
يحتوي الأمر Repeat على معلمة واحدة: عدد الخطوات التي يلزم تكرارها [مرة واحدة]. مثال: Fwd1 و Pause1 و Bwd1 و Loop3 ؛ ونتيجة لذلك ، سيتم تنفيذ أوامر Fwd1 و Pause1 و Bwd1 مرتين. المرة الأولى لأنهم في البرنامج ، والثاني - لأنه مذكور في الأمر Cycle.
فقط في حالة ، يتم مراقبة شحن البطارية. إذا كان صغيرًا جدًا ، يتم عرض تحذير ولا يتم ركوب اللعبة.
واجهة المستخدم الرسومية
من الصعب مراعاة البرنامج بأكمله ، لذلك قمت بإثبات مؤشر بسيط يكرر معلومات الإدخال.
بعد البدء ، يتم عرض المطالبة:

عند إدخال أمر ، يتم عرض رمز الأمر وعدد التكرارات في الزاوية العلوية اليسرى:

إذا تم إدخال أكثر من أمر واحد ، فستكون القائمة أدناه (في الواقع ، البرنامج) ، وسيستمر عرض الأمر الذي تدخله في الأعلى:

لماذا حدث ذلك بهذه الطريقة
تم إنشاء اللعبة من ما كان في متناول اليد أو من السهل الحصول عليه. أود أيضا أن أقول عن اردوينو. يتم اختياره لعدة أسباب:
- لديها عدد مناسب من الاستنتاجات ، وهم بحاجة إلى الكثير (43):
- 6 للتحكم في المحركات.
- 8 + 4 للوحة المفاتيح ؛
- 11 لشاشات الكريستال السائل ؛
- 3 لـ DAC ؛
- 8 لأجهزة استشعار الموجات فوق الصوتية ؛
- 2 لمستشعرات السرعة ؛
- 1 - قياس جهد البطارية.
- أنا على دراية بهذه المنصة.
- مخيط بنقرة واحدة.
- لا يتطلب المتحكم الدقيق أي سرعات ضخمة أو وحدات تخزين ذاكرة.
- والكفاءة الخاصة ليست مطلوبة أيضا ، لأن تستهلك المحركات 90٪ من التيار.
ما يمكن تحسينه
الهيكل مع بداية حادة ، تكون العجلات "مصقولة" وتضلل اللعبة. يمكنك محاولة صنع هيكل من ست عجلات ، أو حتى هيكل زاحف (يوجد على Aliexpress ، لكنني لم أجربه بعد).
واجهة المستخدم الرسومية يعرض المؤشر الآن الحد الأدنى من المعلومات فقط ، ويتم ذلك بأبسط طريقة.
كود بالتأكيد لن أحصل على بوليتزر.
الصوت . هناك مشغلات mp3 رخيصة وصغيرة جدا. يمكنك رمي R-2R DAC بأمان واستبداله بمشغل جاهز.
أزرار النسخ الاحتياطي . يمكنك تسجيل البرنامج النهائي في EEPROM بحيث لا يضيع عند إيقاف تشغيل الطاقة. يمكن أن يكون التنفيذ كما هو الحال في الراديو: مع الضغط لفترة طويلة ، يتم حفظ البرنامج ، مع ضغطة قصيرة - تشغيل.
زر الخروج . غير مطبّق حاليًا. يمكنك ربط شيء مثل التتابع / المؤازرة بأحد دبابيس Arduino.
شكر وتقدير
- الطفل الذي حفزني طوال هذا الوقت.
- زوجتي ، التي انتظرت بصبر بينما لعبت بما يكفي ، وساعدت في Corel Draw!
- سيرجي دودنيكوف ، الذي رسم تراكب لوحة المفاتيح.
- أندريه شيشكوف ، الذي صمم هذا الرقعة نفسها.
- انطون الذي جعلني mp3 رائعة بصوت "نجاح باهر!".
- hudbrog ، لفكرة تنفيذ وحدة تحكم PID!
- Chatik تفعل ذلك بنفسك ، الذين دعموني عقليًا وأجبروا على النظر إلى النتائج الوسيطة للعمل ؛)
التكرارات السيئة
أحب الأفلام مع جاكي شان ، لأنه في النهاية هناك قطع من الفشل. لم أستطع الاستغناء عنها أيضًا. أكثر ما فاجأني هو حقيقة أن الحفر المستدير مع اثنين من الأخاديد يعطي حفرة مثلثة ؛)