هندسة الهدايا



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

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

استطرادا صغيرا من الموضوع الرئيسي


لا يمكنني الانتقال على الفور إلى الموضوع الرئيسي ، لذلك سأبدأ من بعيد. قبل بضع سنوات ، تم إطلاق لعبة "The Witcher 3". نصحني صديقي باللعب ، وبصفة عامة أعجبت حقًا باللعبة. بعد ذلك قررت ما يجب فعله وأعطيتها شيئًا ما متعلقًا باللعبة ... لن أتعمق في وصف اللعبة (ستساعد Google الجميع) أو أقول إنه لم يتبادر إلى ذهني الكثير من الأشياء للكلمات الرئيسية "ويتشر ، مهندس ، هدية".

الشخصية الرئيسية للعبة لديها حصان يدعى "روش" (في التمثيل الصوتي الروسي) ، يقودها البطل من وقت لآخر بعبارة "تحريك ، روش". قررت صنع لعبة ميكانيكية حول موضوع "تحريك الصراصير".

وبطبيعة الحال ، تم اعتبار الهدية بمثابة شيء لا طائل منه ، غبي ، ولكن مضحك ، لذلك كانت الخطة على النحو التالي:

  1. هناك مربع يخفي الآلية في حد ذاته.
  2. الآلية عبارة عن عمود ، يدور حوله الحصان.
  3. الحد الأقصى من "ثبات" حركة الحصان مرحب به. في البداية ، كان يُعتقد أنه يجب أن يتحرك الحصان كسمكة ، وليس كحصان (بعد كل شيء ، صرصور) ، لكن النتيجة كانت "شيء ما".
  4. سيتم كل هذا من الخشب الرقائقي ، والذي يمكن أن يتم تقطيعه بدقة وفقًا للرسومات باستخدام الليزر.

العيب الرئيسي في اختيار المواد وحقيقة أن القطع سيتم إجراؤها هو حقيقة أنني فقدت الفرصة لإنشاء نموذج أولي ، مما يعني أن جميع مشكلات الأيدي الملتوية وعدم الامتثال لقاعدة "سبع مرات قياس" جعلت أنفسهم يشعرون بسرعة كبيرة:



على الرغم من أنه في النهاية ، ساعدت حقيقة أن العديد من تفاصيل آلية رد الفعل العكسي بسبب الفجوات الكبيرة جدًا على التعويض عن حقيقة أنني قمت بتوصيل الأجزاء والعمود بطريقة ملتوية تمامًا. هنا ، كما يقولون ، "ناقص ناقص يعطي زائد" والآلية ككل عملت ، كما كان الغرض منها:



بعد أن كان هناك القليل من اللوحة وكانت النتيجة مثل هذا المربع:



عندها سيقول أحدهم أنه كان من الضروري جعل الصندوق شفافًا حتى يتسنى مراقبة عمل الدواخل ، لكن في الحقيقة لقد خمنت في البداية أنني لم أتمكن من تجميع الآلية بأكملها وصندوق نظيف وأنيق من الداخل حتى لا يضر ننظر من خلال جدران شفافة للمربع. لذلك ، فإن مربع مبهمة هو التدبير الضروري.

يبقى فقط لحزمه ، وربط القوس على صندوق والهدية جاهزة:



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



اليوم أنا ...


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

لمح لي مصير أن الوقت قد حان لبدء مشروع جديد ، وسيكون هذا المشروع مع شاشة الحبر الإلكتروني. بعد التعرف على مواصفات الجهاز لفترة وجيزة وتوصيل الشاشة بوحدة التحكم ، تأكدت من أن المواصفات لم تكمن في وقت التحديث. تم تحديث الشاشة لأكثر من 10 ثوانٍ ، يومض ومحاولة التسبب في نوبة صرع:


(ليس لدي صور مبكرة لتوصيل الشاشة ، لذلك هنا الجهاز لديه بالفعل نظرة أكثر وضوحا)

أصبح من الواضح أنك بحاجة إلى جهاز بسيط لا يتطلب رسوم متحركة معقدة (ورسوم متحركة بشكل عام). ثم صادفت تقويم مزاجي:


تقويم الحالة المزاجية هو مجموعة من الصور البسيطة والتوقيعات الساخرة لهم. قررت أن أقوم بإنشاء تقويم (وهو في الواقع ليس تقويمًا على الإطلاق) يحمل الاسم "Today I" ... سيكون جهازًا بسيطًا يعرض كل يوم صورة تميز "الحالة الذهنية" اليوم ووصفًا لها. بالإضافة إلى ذلك ، يمكن أن يحتوي التقويم على بعض الوظائف الأخرى أيضًا ، ولكن التقويم الرئيسي سيكون بالضبط "التقويم" - صورته الخاصة لكل يوم.

يسمح لوحدة الورق الإلكترونية بعرض ثلاثة ألوان (الأسود والأحمر والأبيض) ، والتي ينبغي إرسالها إلى الوحدة ، مثل صورتين - الأسود والأبيض والأحمر والأبيض. في الواقع ، سيكون من الأصح القول أن الشاشة تتوقع ببساطة صورة نقطية أحادية اللون ، حيث يحدد كل جزء لون بكسل واحد (لست متأكدًا من أن هذا المصطلح ينطبق على الورق الإلكتروني ، لكنني آمل أن تكون الفكرة واضحة). يمكن تعيين صورة نقطية منفصلة للقناة السوداء أو الحمراء. وبالتالي ، هناك مجموعة من وحدات البايت حيث تتوافق كل بتة مضبوطة على 1 مع بيكسل لوني ، وستكون كل البتات المتبقية 0 بيكسلات بيضاء على الشاشة. دقة الشاشة هي 400 × 300 بكسل ، أي لصورة بالأبيض والأسود ، سوف تكون هناك حاجة إلى 15000 بايت (يتم ترميز 8 بكسل في بايت واحد). بالنسبة للألوان الثلاثة ، سوف يستغرق الأمر 30000 بايت ، إذا كنت لا تحاول حزم الصورة بشكل أكثر إحكاما. من وجهة نظر التنفيذ ، يمكن لمنشئي الشاشة ببساطة اختيار وحدتين لكل بكسل وتخزين الحالة الحقيقية للأشياء (حيث يكون اللون الأحمر ، حيث يكون اللون الأسود ، وأين اللون الأبيض) ، لكن هذا سيتطلب نفس 30000 بايت ، ولكن حتى بالنسبة للصور أحادية اللون سوف يتطلب نقل 30000 بايت.

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

من المهم أن أوضح أنني معتاد على كتابة الأشياء بنفسي (يجب ألا تخبرني أن هناك بحرًا من المكتبات ، وأنا أعلم بذلك وبواسطة Google) عندما أفعل مثل هذه الأشياء ، لكن منذ ذلك الحين قبل ذلك لم يكن من دواعي سروري العمل مع FAT32 على مستوى منخفض ، كانت عملية مسلية إلى حد ما.

لن أخوض في تفاصيل العمل مع FAT32 وبطاقة SD ككل ، كذلك الإنترنت مليء بالمقالات حول هذا الموضوع (ولا أريد تحويل قصتي إلى سرد للمواصفات) ، لكنني سأتحدث عن بعض الأشياء التي يلزم تنفيذها. من الضروري تطبيق ليس فقط وظائف القراءة من ملف والكتابة إلى ملف (قررت تخزين بعض الإعدادات والشروط على بطاقة SD نفسها ، وليس في EEPROM) ، ولكن أيضًا وظائف البحث عن ملف في نظام الملفات إذا كنت بحاجة إلى العمل مع بالطريقة المعتادة.

تنقسم جميع البيانات الموجودة على بطاقة الذاكرة إلى مجموعات (الوحدة الرئيسية القابلة للتوجيه في نظام الملفات FAT32) ، وتنقسم المجموعات بالفعل إلى قطاعات. من أجل قراءة الملف "habr.txt" من بطاقة SD في FAT32 ، تحتاج إلى:

  1. تهيئة بطاقة الذاكرة.
  2. اقرأ القطاع على العنوان صفر وتحقق من أن نظام الملفات FAT32 له رأس معين (يمكنك تخطي هذه الخطوة إذا كنا نعتقد في الحظ).
  3. اقرأ القطاع على العنوان صفر واحصل على "معالجة الكتلة المنطقية" (LBA).
  4. اقرأ القطاع الموجود على العنوان المستلم (LBA) واحصل على البيانات اللازمة منه (أي نظام المجموعة هو الجذر - دليل الجذر ، وعدد القطاعات الموجودة في المجموعة ، إلخ).
  5. اقرأ مجموعة "دليل الجذر" (في الواقع ، تتم القراءة حسب القطاعات ، ما عليك سوى قراءة عدد القطاعات التي توجد بها قطاعات في المجموعة) حسب عددها. لديها صيغة خاصة بها لتحويل الأرقام التسلسلية العنقودية إلى عناوين فعلية. يتم تخزين معلومات الملف هنا ، لذلك نقرأ البيانات بحثًا عن الملف المطلوب. يوجد تافه واحد حول أسماء الملفات: يمكن أن يكون الاسم قصيرًا أو طويلًا ، بناءً على ذلك ، يتم تخزين البيانات إما في مكان واحد (في نفس البنية) أو في سجل إضافي ، ويجب أيضًا قراءته بشكل منفصل. عند العثور على ملف يحمل الاسم المرغوب فيه ، نحصل على الكتلة التي توجد بدايتها (أو ربما الملف بأكمله إذا كان يناسب حجم الكتلة) ، وكذلك حجم الملف. إذا لم يتم العثور على الملف في هذه المجموعة ، فإننا نبحث عن المجموعة التالية ونكرر عملية البحث عن الملفات.
  6. قراءة الكتلة في العنوان وجدت. واستمر في قراءة المجموعات بشكل أكبر وابحث عن المجموعة التالية حتى تتم قراءة جميع البيانات.

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

لم أطبق جميع السيناريوهات الممكنة وقمت بتبسيط بعض الأشياء:

  • جميع الملفات موجودة في جذر بطاقة الذاكرة ولا يتم استخدام تصفح الدليل.
  • جميع الملفات لها أسماء قصيرة.
  • تقوم وحدة التحكم عند بدء التشغيل بقراءة قائمة الملفات وتخزينها في الذاكرة حتى لا تبحث عن كل ملف مرة أخرى.
  • الحد الأقصى لعدد الملفات محدود بواسطة ثابت (وفي الحقيقة قمت برسم بضع صور فقط).

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

فرض العرض أيضا بعض القيود ، كما يتم عرض أي صورة عليها بهذه الطريقة:

  1. نستيقظ ونهيئ الشاشة (من أجل إطالة عمرها وتوفير الطاقة ، تنام الشاشة بشكل أساسي).
  2. نكشف القناة اللازمة (على سبيل المثال ، أسود).
  3. نحن إلى الأمام 15000 بايت من الصورة.
  4. نكشف القناة اللازمة (على سبيل المثال ، الأحمر).
  5. نحن إلى الأمام 15000 بايت من الصورة.
  6. نقول العرض لرسم البيانات من المخزن المؤقت.
  7. ننتظر حتى تنتهي الشاشة من الرسم.
  8. نقول العرض للنوم.

بالنسبة للصور أحادية اللون ، يمكنك تخطي الخطوتين 4 و 5. بالنسبة للصورة ثلاثية الألوان ، فإن ترتيب نقل الصور بالأبيض والأسود والأحمر والأبيض ليس مهمًا ، لأن يتم دهن اللون الأحمر دائمًا باللون الأسود ، بينما يكون اللون الأسود فقط فوق الأبيض ، وتبقى وحدات البكسل فقط بيضاء ، وهي بيضاء وأسود وأبيض وأحمر وأبيض.

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



كانت نتيجة مقارنة هذه الصور بشيء من هذا القبيل (يبدو لي أن كل واحد منا على الأقل في حياتنا شعر وكأنه غزال مع قرون - ساق):



في الواقع ، تبعت الصورتان صورة أخرى تحتوي على وصف للحالة (من خلال النقر على الزر ، يمكنك الحصول على وصف يطابق الصورة المعروضة اليوم).

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

لذلك ، وقع المنطق التالي على وظيفة رد الاتصال من قراءة الصور من بطاقة الذاكرة:

  1. اضبط القناة المطلوبة (يتم تحديد القناة بشكل عشوائي) قبل إرسال البيانات إلى الشاشة.
  2. تتبع البيانات المرسلة لتبديل القناة عند اكتمال إرسال البيانات للقناة السابقة.
  3. إرسال البيانات الواردة من البطاقة.
  4. حدد أنه قد تم نقل البيانات الضرورية وأنه يمكن تجاهل بقية البيانات (الصورة مع الوصف).

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

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

بصريا ، يمكن أن تظهر هذه الحالة مثل هذا:



يوجد مخزن مؤقت معين فيه "نافذة" بالحجم المطلوب (القسم الأخضر) وتحتاج فقط إلى قراءة البيانات من هذه النافذة ، وقراءة البيانات من المخزن المؤقت في أجزاء من بايت N. سيكون من الممكن تصور عملية القراءة هذه مثل:



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

من أجل فهم الصعوبة هنا بشكل أفضل ، سأضيف رسمًا متحركًا آخر هنا ، فقط "فيما يتعلق" بمحتويات المجموعة ، وليس الملف بالكامل (يجب تخزين كافة المعلومات الأخرى بشكل منفصل):



كما هو مخطط له ، يجب أن يظهر التقويم صورة جديدة كل يوم ، أي يجب أن يكون قادرًا على مراقبة الوقت (حتى عند إيقاف تشغيله) ، مما يعني أن هناك حاجة أيضًا إلى وحدة ساعة في الوقت الحقيقي (RTC). وعلى الرغم من أن جهاز التحكم الخاص بي يحتوي على ساعة مدمجة في الوقت الفعلي ، إلا أنه يكاد يكون من المستحيل التقاط بطارية لها ، لأن الاتصالات ليست سلكية على متن الطائرة. قررت عدم اغتصاب ساقي جهاز التحكم في محاولة لحام لهم وأخذت RTC الصينية الخارجية. كان من المفترض أن يكون العمل مع RTC بسيطًا تمامًا:

  • عند تشغيله ، احصل على الوقت من RTC الصيني.
  • ضبط الوقت في RTC الداخلية.
  • استخدم RTC الداخلي لحساب الوقت ونسيان الصينيين حتى الاغلاق التالي.

ولكن هنا ، تبين أن كل شيء ليس بهذه البساطة ، لأن RTC الداخلي لوحدة التحكم يعمل مع الوقت بالتنسيق المعتاد (الطابع الزمني UNIX) ، ويستخدم صديقها الصيني Binary Coded Decimal (BCD). قبل ذلك ، لم أحصل على هذا التنسيق وكنت مندهشًا جدًا من أنه حتى الوحدات الحديثة لاردوينو تستخدمه. جوهر التنسيق بسيط للغاية - هناك بايت واحد ، على سبيل المثال ، يخزن عدد الثواني. تقوم وحدات البت الأربعة ذات الترتيب العالي بتخزين عشرات وحدات تخزين وحدات البت الأربعة ذات الترتيب المنخفض. اتضح أن التمثيل السداسي العشري لهذه البايتة نفسها يحتوي على وقت قابل للقراءة - البايت 0x49 يناظر قيمة 49 ثانية (على الرغم من أنه في النظام العشري ، يتوافق هذا البايت مع 72).

كما أفهمها ، فقد حدث ذلك من الناحية التاريخية لدرجة أنه كان من الأسهل استخدام RTC مباشرة مع أجهزة ترميز الشاشة لإنشاء ساعة ، لكن كان علي تحويل BDC إلى الطابع الزمني UNIX مع الأقلام.

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


(لم أخطط للإنتاج بالجملة ، كل التفاصيل حولها هي نتيجة قياسات غير صحيحة أو حلول سيئة التفكير)

نتيجة لذلك ، تم رسم الحالة والتفاصيل اللازمة (لا يوجد غطاء أمامي في الصورة):



تم وضع الأزرار في جزء منفصل لسهولة التجميع (يبدو أنني ما زلت أتعلم شيئًا من وقت المشروع الأخير):



يبدو التجميع (باستثناء الغلافين الأمامي والخلفي) على النحو التالي:



الشاشة متصلة بالحالة ذات الروابط. تحول هذا إلى أن يكون وسيلة أكثر ملاءمة بكثير من الاغلاق.

حسنًا ، هناك القليل من الجحيم لأصحاب الكمال (لحية من الأسلاك والمكونات):



تبين أن التجميع كان بمثابة جهاز ، حيث قمت بعمل كتاب صغير - تعليمات:



تم تثبيت الغطاء الخلفي ، مما يسمح لك بتفكيك الجهاز إذا كان هناك حاجة إلى عنف إضافي إذا كانت هناك حاجة إلى عنف إضافي على جوانبها الداخلية:



نعم ، من الأسهل شراء منزل بجوار البحر!


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

ومع ذلك ، حتى لا يكون هناك طعم من الحلول التي تتطلب الكثير من الوقت ، سأشارك بعض القصص القصيرة.

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

صرخة طلبا للمساعدة


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

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

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

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

  1. افصل المنقار عن الرأس لطباعة المنقار بلون مختلف.
  2. اصنع "تجويفًا" تكمن فيه جميع الأجهزة الإلكترونية (السماعة ، المشغل ، اردوينو ، والأسلاك).

والنتيجة هي شيء من هذا القبيل (ينقسم المنقار إلى قسمين للحصول على جودة طباعة أفضل):



لا أعتقد أنه من المنطقي التحدث عن الشفرة ، لأن بالإضافة إلى تهيئة المشغل ، لم يكن هناك سوى معالج بنقرة زر وتشغيل أحد تسجيلات صوت النورس (بشكل عام: playSound (rand () & 3)؛).

بعد ذلك ، اترك النورس لطباعة وجمع كل شيء معًا. نتيجة لذلك ، لدينا "محاكي شاي كامل" (يتم تحديد لون النورس بواسطة البلاستيك المتاح) ، والذي يتصل بـ USB وعند النقر فوق الزر الموجود على رأس النورس ، فإنه يعيد إنتاج "طلب المساعدة":



حتى أسهل؟


اشتكت زميلة من أنها كانت مشتتة باستمرار بينما كانت تكتب الاختبارات. نجد على الإنترنت نموذجًا ثلاثي الأبعاد للنظارات وإجراء تغييرات صغيرة:



نتيجة لذلك ، لدينا نظارات - غمامات. نحن لا ننخدع لأنفسنا والبعض الآخر يدرك أنه لا ينبغي أن يصرف انتباهك:



بسيط جدا!


لذلك ، لخلق تحتاج:

  1. القدرة على إيجاد أو رسم عكاز في محرر المتجه.
  2. القدرة على رسم اسطوانتين في المحرر ثلاثي الأبعاد ، واحدة أكثر من الأخرى بمقدار 0.4 مم تقريبًا.
  3. القدرة على صنع قطعة بسيطة من الورق - تسمية.
  4. طابعة ثلاثية الأبعاد (خدمة الطباعة الخاصة بك أو المخصصة).
  5. الطابعة عادية.

والآن ، بالترتيب ... نرسم عكازًا:



نرسم أسطوانتين: نقوم



بطباعة الأجزاء والتسمية والحصول على هدية رائعة وبسيطة لـ "tyzhprogramistov":



ما كان كل هذا ل؟


"أحيانًا ما يلعب المصير معنا ويشير بطريقة أو بأخرى إلى أن شيئًا ما يجب أن يحدث قريبًا." عدة مرات في حياتي كانت لدي أفكار أردت أن أدركها ، لكنني انتظرت شيئًا ما. لن أكون "تقويمًا" إلكترونيًا إذا لم تأتي شاشة مجانية من الصين ، فهذا يعني أنني لن أتعامل مع FAT32 ، ولن أتعلم تنسيق BCD المستخدم في RTC.

ربما يقرأ شخص ما هذه القصة (أو على الأقل ينظر إلى الصور) ويفكر: "اللعنة عليها ، إذا كان بإمكانه فعلها ، فيمكنني أن أفعلها بشكل أفضل!" ونتيجة لذلك ، ستجلب الفرح لشخص قريب.

خارج النافذة ، السماء تمطر ، ديسمبر على التقويم. يقترب وقت العطلة ، وبالتالي وقت الهدايا. اصنع واحصل على هدايا مثيرة للاهتمام ، وليس مجرد علبة أخرى من الشوكولاتة أو شمعة أو تمثال.

Source: https://habr.com/ru/post/ar480792/


All Articles