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

NeoClock: 7 خطوات (بالصور)
NeoClock: 7 خطوات (بالصور)

فيديو: NeoClock: 7 خطوات (بالصور)

فيديو: NeoClock: 7 خطوات (بالصور)
فيديو: Как изменить часы на экране блокировки в Android 12? Настройте часы Android 12 2024, يونيو
Anonim
Image
Image

هذا يتعلق ببناء ساعة باستخدام حلقات neopixel الرائعة من Adafruit. الشيء الممتع في هذه الساعة هو أنها تحتوي في الواقع على حلقتين من نيوبكسل ، واحدة لإخبار الساعات والأخرى للدقائق والثواني والميلي ثانية. تحافظ الساعة على الوقت المثالي باستخدام شريحة DS3234 DeadOn Real Time Clock من Sparkfun. سهلة البناء ومتعة التعديل. آمل أن تلهم الآخرين لبناء ساعات أو فن آخر باستخدام حلقات neopixel.

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

الخطوة 1: تصميم الساعة

تصميم الساعة
تصميم الساعة
تصميم الساعة
تصميم الساعة
تصميم الساعة
تصميم الساعة
تصميم الساعة
تصميم الساعة

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

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

الخطوة الثانية: تصميم الإلكترونيات

تصميم الإلكترونيات
تصميم الإلكترونيات
تصميم الإلكترونيات
تصميم الإلكترونيات
تصميم الإلكترونيات
تصميم الإلكترونيات
تصميم الإلكترونيات
تصميم الإلكترونيات

يعود تصميم الإلكترونيات إلى معرفة العناصر التي أريدها مسبقًا في الساعة:

  • حلقات Neopixel (عدد 60 و 24 عددًا)
  • اردوينو (العقول)
  • تنظيم الساعة (اردوينو لا تحافظ على الوقت المناسب)
  • إدارة الطاقة

تم توثيق حجم ومتطلبات الطاقة للنيوبكسل بشكل جيد. نظرًا لأنهم يعملون على 5V DC ، فقد قررت استخدام 5V Arduino وجعل الأمور أبسط لنفسي. مع اعتبار المساحة ، قررت إنشاء نموذج أولي على Arduino Uno عادي ولكن بالنسبة للإلكترونيات النهائية ، اخترت Arduino Mini.

جاء التكرار الأول لهذا المشروع مباشرة من صفحة اتصالات NeoPixel الأساسية في Adafruit. لقد قمت بتضمين الرسم التخطيطي من موقع الويب لتسهيل الأمور. شيئان مهمان من هذا:

  1. هناك حاجة إلى مكثف 1000 فائق التوهج لمنع اهتزاز التيار الأولي من إتلاف وحدات البكسل.
  2. يلزم وجود مقاوم بقوة 470 أوم في البكسل الأول من الحلقة التي يبلغ عددها 60 (تم دمج هذا المقاوم في الحلقة ذات الـ 24 عددًا)

لدى Adafruit أيضًا مجموعة من أفضل ممارسات NeoPixel التي يجب عليك قراءتها قبل متابعة التصميم.

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

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

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

الخطوة الثالثة: بناء الإلكترونيات

بناء الإلكترونيات
بناء الإلكترونيات
بناء الإلكترونيات
بناء الإلكترونيات
بناء الإلكترونيات
بناء الإلكترونيات

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

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

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

الأسلاك مباشرة للأمام ولكن الأشياء المهمة التي يجب تذكرها من الصور هي:

  • سوف تحتاج مفاتيح الوضع والتعيين إلى مقاومات هاربة. لقد استخدمت مقاومات 2.21 أوم كنت أمتلكها ولكن أي مقاوم صغير سيعمل (يفضل ألا يقل عن 1 كيلو أوم). يعمل هذا على تثبيت دبابيس إدخال Arduino المتصلة بحيث يمكن تمييزها عن الضوضاء عندما ترتفع.
  • تم تأريض الموجة المربعة (SQW) على DS3234 لأنها ليست قيد الاستخدام.
  • يتم وضع الطاقة من L7805 في Arduino Mini في RAW pin. ضع دائمًا القوة التي تأتي في Arduino في RAW.
  • يحتوي البكسل الأول من حلقة 60 نيوبيكسل على مقاومة 470 أوم لتقليل أي ضرر يلحق بالبكسل الأول من ارتفاعات البيانات. لا ينبغي أن تكون هذه مشكلة نظرًا لأن عدد 24 neopixel يحتوي على مقاوم مدمج لهذا بالفعل ، ولكنه أفضل أمانًا من آسف.
  • مفاتيح الوضع والتعيين هي مفاتيح زر الضغط اللحظية SPST

ألوان الأسلاك هي:

  • أحمر: + 5VDC
  • أسود: أرضي
  • الأخضر: البيانات
  • أصفر ، أزرق ، أبيض: أسلاك خاصة لـ DS3234

إذا كانت هذه هي المرة الأولى التي تستخدم فيها neopixels ، فيجب أن تتذكر أنه يمكن اعتبارها سلسلة طويلة. لذلك قد يبدو من الغريب الحديث عن "بكسل أول" في الحلقة ، ولكن في الحقيقة هناك بداية ونهاية لكل سلسلة في الحلقات. في هذا المشروع ، تأتي 24 بكسل للحلقة الصغيرة أولاً وتأتي بعدها 60 بكسل للحلقة الأكبر. هذا يعني حقًا أن لدي سلسلة من 84 نيوبكسل.

للأسلاك على Arduino Mini:

  • DS3234 يتصل على دبابيس 10-13
  • مفاتيح الوضع والتعيين موجودة على الدبابيس 2 و 3
  • تأتي بيانات neopixel من الدبوس 6.

أوصي أيضًا بوضع الرؤوس الستة في الجزء السفلي من Arduino Mini حتى تتمكن من برمجتها عبر كابل FTDI.

ملاحظة مهمة حول التيار: تتطلب هذه الساعة الكثير. أنا متأكد من أنني أستطيع حلها ، لكن تجربتي العملية هي أن أي شيء يساوي أو أقل من 500 مللي أمبير سيؤدي في النهاية إلى ظهور اللون البني. يتجلى ذلك على شكل ساعة تومض بألوان مجنونة ولا تحافظ على الوقت. نبتة الحائط النهائية الخاصة بي هي 12V و 1.5A ولم أتعرض للون البني معها. ومع ذلك ، فإن 1.5A هو الحد الذي سيتخذه منظم الجهد (وأجزاء أخرى). لذلك لا تتجاوز هذا المبلغ.

الخطوة 4: برمجة الساعة

ترميز الساعة
ترميز الساعة

يمكن العثور على الكود الكامل للساعة في NeoClock Code على GitHub. لقد قمت بتضمين الملف هنا ولكن ستحدث أي تغييرات في المستودع.

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

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

يمكن العثور على بعض أمثلة التعليمات البرمجية من هذه المستودعات في دليل أمثلة التعليمات البرمجية الخاص بي

كان ترتيب العمليات التي استخدمتها لإنشاء الكود كما يلي:

  • تأكد من عمل neopixels مع مثال اختبار Strand
  • محاولة تشغيل ساعة برمز حلقة الوقت
  • قم بتعديل الساعة لتعمل على حلقتين بدلاً من حلقة واحدة
  • أضف DS3234 للحفاظ على الوقت عبر مثال DeadOn RTC
  • أضف الوضع وتعيين المفاتيح
  • أضف كود Debounce بمساعدة من Arduion Debounce Tutorial
  • أضف بعض سمات الألوان لمصابيح LED على مدار الساعة
  • أضف بعض الرسوم المتحركة للعلامات 0 و 15 و 30 و 45 دقيقة
  • أضف نقاط البوصلة إلى الساعة لتوجيه العلامات 0 و 15 و 30 و 45 دقيقة

إذا كنت تريد أن ترى كيف أنشأت هذا الرمز ، فيمكنك بالفعل استخدام GitHub للنظر في كل التزام برمجي. تاريخ الساعة موجود في سجل الالتزام.

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

  • setColorBlue
  • مجموعة
  • setColorCyan
  • setColorOrange

ومع ذلك ، يمكنك العثور على هذه الطرق الإضافية في الكود:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

تمت إضافة الرسوم المتحركة لأنني أحببت فكرة رنين الساعات القديمة عند أربع خمس عشرة دقيقة على مدار الساعة. لهذه الساعة قمت بعمل الرسوم المتحركة التالية:

  • 15 دقيقة: لون الخواتم باللون الأحمر
  • 30 دقيقة: لون الخواتم باللون الأخضر
  • 45 دقيقة: لوني الخواتم باللون الأزرق
  • قمة الساعة: قم بعمل قوس قزح عبر الحلقتين

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

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

الخطوة 5: تصميم ملفات القطع بالليزر

تصميم ملفات قص الليزر
تصميم ملفات قص الليزر
تصميم ملفات القطع بالليزر
تصميم ملفات القطع بالليزر
تصميم ملفات قص الليزر
تصميم ملفات قص الليزر
تصميم ملفات القطع بالليزر
تصميم ملفات القطع بالليزر

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

  • 1x قشرة MDF - جوز
  • 1x قشرة MDF - كرز
  • 1x أكريليك - رمادي فاتح
  • 1x أكريليك - أوبال

تسمح لي التحديدات الخشبية برؤية شكل التنقيط وكيف سيبدو الحرق على جانب الساعة. سيسمح لي الأكريليك باختبار انتشار النيوبكسيل ومقارنة شكله مقابل الخشب. في النهاية قررت خشب الكرز مع أكريليك أوبال.

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

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

كانت تكلفة المواد حوالي 20 دولارًا فقط ، لكن تكلفة القطع بلغت حوالي 100 دولار أخرى. ساهم شيئين في هذا:

  • تكلف المنحنيات والدوائر أكثر لأن الآلة تتحرك في محورين وهذا التصميم به الكثير من المنحنيات
  • يتطلب التنقيط الكثير من التمريرات ذهابًا وإيابًا عبر القطعة. إن إسقاط هذا كان سيوفر أكبر قدر من المال لكني أحببته.

بعد الانتهاء من التصميم ، أرسلت ملفات EPS إلى Ponoko وتم الانتهاء من أعمالي بعد حوالي أسبوع.

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

الخطوة 6: إنشاء الساعة

بناء الساعة
بناء الساعة
بناء الساعة
بناء الساعة
بناء الساعة
بناء الساعة
بناء الساعة
بناء الساعة

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

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

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

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

بالنسبة إلى البكسل الذي يعينه الرمز على أنه "الجزء العلوي" لكل حلقة ، فأنت بحاجة إلى تعديل الرمز قليلاً. لدي قيمتان في التعليمات البرمجية الخاصة بي تسمى "inner_top_led" و "external_top_led". في ساعتي ، كان "inner_top_led" 11 بكسل من بداية الحلقة الصغيرة و "Outer_top_led" كان 36 بكسل من بداية الحلقة الكبيرة. إذا حدث أنك قمت بتوجيه الحلقات بشكل مختلف ، فستغير هذه القيم لتكون تلك الموجودة في اتجاهك. قليل من التجريب وستجد القيمة الصحيحة بسرعة كبيرة.

في هذه المرحلة ، اختبرت أن كل شيء يعمل كما هو متوقع.

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

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

الخطوة 7: الأفكار النهائية

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

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

شكرا لقراءة هذه التعليمات. آمل أن تصنع مشروعك الخاص على مدار الساعة أو neopixel وأن تشاركه معي. بناء سعيد!

موصى به: