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

ساعة Ish: 5 خطوات (مع صور)
ساعة Ish: 5 خطوات (مع صور)

فيديو: ساعة Ish: 5 خطوات (مع صور)

فيديو: ساعة Ish: 5 خطوات (مع صور)
فيديو: How to Set Image as Watch Face in Samsung Galaxy Watch 5? Custom Watch Face 2024, شهر نوفمبر
Anonim
Image
Image
تجميع قطع الغيار والأعمال الخشبية
تجميع قطع الغيار والأعمال الخشبية

غالبًا ما أجد نفسي أشتري أشياء ليس لدي أي فكرة عما سأفعله بها. هذا المشروع هو نتيجة شراء حلقة بها 12x WS2812b LEDs قيد التشغيل. لم يكن لدي أي خطط لذلك ، لكنه بدا رائعًا عبر الإنترنت ، لذلك علقت واحدة في عربة التسوق الخاصة بي ، ولعبت بها لفترة من الوقت عندما وصلت ثم نسيت كل شيء عنها.

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

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

الخطوة 1: تجميع القطع والأعمال الخشبية

تجميع قطع الغيار والأعمال الخشبية
تجميع قطع الغيار والأعمال الخشبية
تجميع قطع الغيار والأعمال الخشبية
تجميع قطع الغيار والأعمال الخشبية
تجميع قطع الغيار والأعمال الخشبية
تجميع قطع الغيار والأعمال الخشبية

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

يتكون هذا المشروع من إحدى قطع تلك البليت. (سألت الرئيس قبل أن آخذه إلى المنزل)

تستخدم أيضا:

  • حلقة ws2812b LED 12 بكسل
  • وحدة Real Time Clock (RTC) (Im باستخدام DS3231 مع I2C)
  • متوافق مع Arduino Nano v3.0
  • لوح أكريليك (5 مم)
  • سلك ملون

أدوات

  • حافر كهربائي
  • جهاز التوجيه
  • قابل للتعديل بت الخشب المسطح
  • ساندر السلطة
  • منشار
  • لحام حديد
  • مسدس الغراء الساخن
  • ورق رملي
  • زيت دنماركي

رملي

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

تعليم وقطع الثقوب

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

فتحات التوجيه والكابلات

باستخدام جهاز التوجيه الخاص بي مع بت 12 مم ، قمت بتوجيه فترة راحة في الجزء السفلي من الكتلة لإخفاء RTC و Arduino. يبلغ عمقها حوالي 15 ملم ولا تقل عن 5 ملم من أي حافة. لقد قمت بتمييز المركز (ish) من الأسفل وحفر لأعلى باستخدام 10mm بت بعد نصف الطريق للسماح لأسلاك LED. ثم باستخدام بت 5 مم قمت بحفره من مركز استراحة LED للوفاء بفتحة 10 مم من الأسفل.

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

الخطوة 2: دوائر أكريليك

دوائر أكريليك
دوائر أكريليك
دوائر أكريليك
دوائر أكريليك
دوائر أكريليك
دوائر أكريليك

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

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

الخطوة 3: اللحام

لحام
لحام
لحام
لحام
لحام
لحام
لحام
لحام

أحب استخدام نظام ألوان لأسلاكي في هذه المناسبة التي أختارها:

  • أحمر للطاقة (5 فولت)
  • أبيض للأرض
  • أصفر للبيانات
  • أخضر للساعة

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

ثم قمت بعد ذلك بلحام الأسلاك الأربعة على RTC باستخدام النظام أعلاه. لإبقاء الأمور أكثر إتقانًا ، قررت سحب الطاقة لـ RTC من Arduino. ثم قم بتوصيل كل شيء بـ Arduino وسلك ملحوم 1 للطاقة وآخر للأرضي بـ Arduino.

RTC

  • SCL (الساعة) إلى الدبوس التناظري 5
  • SDA (البيانات) إلى الدبوس التناظري 4
  • VCC إلى 5V
  • GND إلى أي GND على Arduino

حلقة LED

Din to Digital Pin 6

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

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

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

يجب أن تكون الآن قادرًا على تحميل هذا الرمز إلى Arduino.

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

بالتناوب ، يعمل هذا أيضًا جيدًا لتحديد الوقت.

www.instructables.com/id/Setting-the-DS130…

لقد استعرت الكثير من هذا الرمز من مكتبة Adafruit NeoPixel وبعضها من مكتبة RTC التي وجدتها والبعض الآخر صنعته بمفردي.

// تضمين رمز المكتبة: #include

#يشمل

#يشمل

// تعريف الدبابيس

#define PIN 6

#define BRIGHTNESS 20 // تعيين أقصى سطوع

#define r 5

# تعريف ز 5

# تعريف ب 5

RTC_DS3231 rtc ؛ // إنشاء كائن الساعة

شريط Adafruit_NeoPixel = Adafruit_NeoPixel (12 ، PIN ، NEO_GRB + NEO_KHZ800) ؛ // تجريد الكائن

الإعداد باطل () {

Wire.begin () ؛ // ابدأ I2C

rtc.begin () ، // بدء الساعة

Serial.begin (9600) ؛

// تعيين الرموز pinmodes

pinMode (PIN ، الإخراج) ؛

إذا (rtc.lostPower ()) {

Serial.println ("فقدت طاقة RTC ، فلنضبط الوقت!") ؛

// السطر التالي يعين RTC على تاريخ ووقت تجميع هذا الرسم التخطيطي

rtc.adjust (DateTime (F (_ DATE_)، F (_ TIME_))) ؛

// يعين هذا السطر RTC بتاريخ ووقت صريحين ، على سبيل المثال لضبطه

// 21 كانون الثاني (يناير) 2014 في الساعة 3 صباحًا ، يمكنك الاتصال:

// rtc.adjust (DateTime (2014 ، 1 ، 21 ، 3 ، 0 ، 0)) ؛

}

strip.begin () ،

عرض الشريط()؛ // تهيئة جميع وحدات البكسل على "إيقاف"

DateTime theTime = rtc.now () ، // يأخذ في الاعتبار التوقيت الصيفي

بايت secondval = theTime.second () ، // الحصول على ثواني

بايت minuteval = theTime.minute () ، // الحصول على دقائق

int hourval = theTime.hour () ؛

نقطة (شريط اللون (0 ، ز ، 0) ، 50) ؛

}

حلقة فارغة () {

// احصل على وقت

DateTime theTime = rtc.now () ، // يأخذ في الاعتبار التوقيت الصيفي

int minuteval = theTime.minute () ، // الحصول على دقائق

int hourval = theTime.hour () ؛ // احصل على ساعات

int secondval = theTime.second () ،

إذا (الدقيقة 0) {

strip.setPixelColor (0 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 9) {

strip.setPixelColor (1 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 14) {

strip.setPixelColor (2 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 19) {

strip.setPixelColor (3 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 24) {

strip.setPixelColor (4 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 29) {

strip.setPixelColor (5 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 34) {

strip.setPixelColor (6 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 39) {

strip.setPixelColor (7 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 44) {

strip.setPixelColor (8 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 49) {

strip.setPixelColor (9 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 54) {

strip.setPixelColor (10 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

وإلا إذا (الدقيقة <= 59) {

strip.setPixelColor (11 ، ص ، 0 ، 0) ؛

عرض الشريط()؛}

تأخير (1000) ؛

لـ (int i = 0 ؛ i <12 ؛ i ++) {

strip.setPixelColor (أنا ، 0 ، 0 ، 0) ؛

عرض الشريط()؛

}

إذا (hourval == 0) {

strip.setPixelColor (0 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 1) {

strip.setPixelColor (1 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 2) {

strip.setPixelColor (2 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 3) {

strip.setPixelColor (3 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 4) {

strip.setPixelColor (4 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 5) {

strip.setPixelColor (5 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 6) {

strip.setPixelColor (6 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 7) {

strip.setPixelColor (7 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 8) {

strip.setPixelColor (8 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 9) {

strip.setPixelColor (9 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 10) {

strip.setPixelColor (10 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 11) {

strip.setPixelColor (11 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 12) {

strip.setPixelColor (0 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 13) {

strip.setPixelColor (1 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 14) {

strip.setPixelColor (2 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 15) {

strip.setPixelColor (3 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 16) {

strip.setPixelColor (4 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 17) {

strip.setPixelColor (5 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 18) {

strip.setPixelColor (6 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 19) {

strip.setPixelColor (7 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 20) {

strip.setPixelColor (8 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 21) {

strip.setPixelColor (9 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 22) {

strip.setPixelColor (10 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

وإلا إذا (hourval == 23) {

strip.setPixelColor (11 ، 0 ، 0 ، ب) ؛

عرض الشريط()؛}

تأخير (1000) ؛

لـ (int i = 0 ؛ i <12 ؛ i ++) {

strip.setPixelColor (أنا ، 0 ، 0 ، 0) ؛

عرض الشريط()؛

}

// للتصحيح التسلسلي

Serial.print (hourval، DEC) ؛

Serial.print (':') ؛

Serial.print (minuteval ، DEC) ؛

Serial.print (':') ؛

Serial.println (secondval ، DEC) ؛

}

نقطة باطلة (uint32_t c، uint8_t wait) {

لـ (int j = 0 ؛ j <3 ؛ j ++) {

لـ (int i = 0 ؛ i <12 ؛ i ++) {

strip.setPixelColor (ط ، ج) ؛

عرض الشريط()؛

تأخير (انتظر) ؛

لـ (int i = 0 ؛ i <12 ؛ i ++) {

strip.setPixelColor (أنا ، 0 ، 0 ، 0) ؛

عرض الشريط()؛}

}

}

}

الخطوة الخامسة: الزيت الدنماركي

زيت دنماركي
زيت دنماركي
زيت دنماركي
زيت دنماركي
زيت دنماركي
زيت دنماركي
زيت دنماركي
زيت دنماركي

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

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

كل ما تبقى الآن هو توصيله والاستمتاع به.

موصى به: