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

ساعة ثنائية حقيقية مع مزامنة NTP: 4 خطوات
ساعة ثنائية حقيقية مع مزامنة NTP: 4 خطوات

فيديو: ساعة ثنائية حقيقية مع مزامنة NTP: 4 خطوات

فيديو: ساعة ثنائية حقيقية مع مزامنة NTP: 4 خطوات
فيديو: طريقة تشغيل اسوارة totwoo 2024, يوليو
Anonim
ساعة ثنائية حقيقية مع مزامنة NTP
ساعة ثنائية حقيقية مع مزامنة NTP
ساعة ثنائية حقيقية مع مزامنة NTP
ساعة ثنائية حقيقية مع مزامنة NTP

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

في الساعة الثنائية الحقيقية ، يخبرك الرقم الأول بأنه نصف يوم ، والرقم الثاني ربع يوم ، والرقم الثالث هو ثُمن اليوم ، وما إلى ذلك. يمكن قراءته لأي دقة بسرعة كبيرة (مع الممارسة بالطبع). يقوم الرقم الأول بترميز AM مقابل PM بشكل فعال ، بينما يشفر الرقم الثاني سواء كان مبكرًا صباحًا / مساءً أو متأخرًا صباحًا / مساءً ، وهكذا.

عند تصميم ساعتي الثنائية الحقيقية ، استخدمت اثني عشر رقمًا من الدقة ، لذلك تم تقسيم اليوم إلى 2 ^ 12 = 4096 جزءًا (كل زيادة تبلغ 20 ثانية تقريبًا). بدلاً من الاحتفاظ بجميع الأرقام في سطر ، تم فصل 12 رقمًا إلى 3 صفوف من 4 أرقام. على الرغم من أن الأرقام الثنائية الفعلية لم تتغير ، فإن هذا يسمح بقراءة الساعة على أنها 3 أرقام سداسية عشرية مشفرة ثنائيًا ، السطر الأول يعرض 16 جزءًا من اليوم (1.5 ساعة) ، السطر الثاني يعرض 256 يومًا (حوالي 5 دقائق) ، و يظهر السطر الثالث 4096 جزء من اليوم (~ 20 ثانية).

تتم مزامنة الساعة مع NTP (بروتوكول وقت الشبكة) باستخدام ESP8266. تم تكوين ESP8266 بحيث ، عند بدء التشغيل ، سيؤدي الضغط على زر على مدار الساعة إلى إرساله إلى وضع الإعدادات. في وضع الإعدادات ، ستنشئ الساعة شبكة WiFi تقدم صفحة ويب يمكن استخدامها لإدخال إعدادات wifi الخاصة بك وخادم NTP والمنطقة الزمنية. يتم تخزين هذه المعلومات في EEPROM الخاص بـ ESP8266 ويتم قراءتها عند بدء تشغيل الساعة في وضع الساعة بحيث يمكنها الاتصال بالإنترنت واسترداد الوقت.

اللوازم:

  • NodeMCU ESP8266
  • WS2812B شريط LED
  • اضغط الزر
  • 470 أوم المقاوم
  • 10 كيلو أوم المقاوم
  • مكثف 470 فائق التوهج
  • عصي المصاصة
  • الرخام
  • خشب (أو ورقة أخرى من المواد) للحالة

الخطوة 1: الدائرة

دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية

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

يتم تشغيل شريط LED من VU و GND لوحدة NodeMCU. VU هي الطاقة القادمة (تقريبًا) مباشرة من USB ، لذا فهي توفر 5 فولت لمصابيح WS2812B LED على الرغم من أن ESP8266 يعمل عند 3.3 فولت. لقد وضعت مكثفًا 470 فائق التوهج عبر الطاقة لشريط WS2812B لحماية المصابيح. يتم توصيل البيانات الخاصة بشريط LED بدبوس D3 الخاص بـ NodeMCU عبر المقاوم 470 أوم. راجع هذا الدليل لمزيد من المعلومات حول كيفية التحكم في مصابيح WS2812B باستخدام ESP8266. تم لحام الدائرة على لوحة أولية مع بعض رؤوس الذكور إلى الإناث لـ NodeMCU.

تم إرفاق زر ضغط أيضًا بـ D6 من NodeMCU. يمكن الضغط على زر الضغط هذا أثناء بدء تشغيل الساعة لإرساله إلى وضع الإعدادات (حيث يمكن تعديل إعدادات wifi وخادم NTP وتفضيلات المنطقة الزمنية). من أحد الطرفين ، يتصل الزر الانضغاطي بـ D6 وأيضًا بـ GND عبر المقاوم 10K أوم وعلى الطرف الآخر متصل بالطاقة. عندما يكون الزر غير مضغوط ، يقرأ D6 منخفضًا ؛ عند الضغط عليه ، يقرأ D6 عاليًا.

الخطوة 2: البرمجيات

برمجة
برمجة

تمت كتابة برنامج ESP8266 باستخدام كود Arduino. تتم معالجة مصابيح LED باستخدام مكتبة FastLED وتتم مزامنة NTP بواسطة مكتبة NTPClient. تتم مزامنة الوقت بواسطة NTP كل ساعة.

في بداية وظيفة الإعداد ، يتحقق البرنامج لمعرفة ما إذا كان الزر المتصل بـ D6 مضغوطًا. إذا كان الأمر كذلك ، فإن ESP8266 ينشئ شبكة wifi (يمكن تغيير SSID وكلمة المرور في الرمز ، ويكون SSID الافتراضي هو "TrueBinary" وكلمة المرور "thepoweroftwo"). اتصل بهذه الشبكة من أي جهاز وانتقل إلى 192.168.1.1. سيقدم ESP8266 صفحة ويب مع نماذج حيث يمكنك إدخال SSID وكلمة المرور لشبكة wifi ، وخادم NTP المفضل ، وإزاحة المنطقة الزمنية من التوقيت العالمي المنسق (UTC). بعد إرسال هذه النماذج إلى ESP8266 ، ستحفظ المعلومات في وحدة تخزين EEPROM الداخلية.

إذا لم يتم الضغط على الزر ، تبدأ الساعة بشكل طبيعي ، وتقرأ الإعدادات من EEPROM ، وتتصل بشبكة wifi لاستخدام NTP ، وتبدأ في عرض الوقت.

ملاحظة: مجموعة الوظائف (مؤشر int) تأخذ رقم الرقم من 0-11 حيث يكون 0 هو الرقم الأول (نصف اليوم) و 11 هو الرقم الأخير (1/4096 من اليوم) ويقوم بتشغيل مؤشر LED المقابل باستخدام " المصابيح "مجموعة. يجب ملء هذه الوظيفة وفقًا لكيفية تكوين الشاشة. يتوافق المثال الذي قمت بتعليقه مع كيفية لحام الصفوف بأسلوب متعرج بدلاً من اللحام من طرف إلى طرف وتخطي كل مؤشر LED آخر.

الخطوة الثالثة: السكن

الإسكان
الإسكان
الإسكان
الإسكان
الإسكان
الإسكان

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

الخطوة 4: تم

منتهي!
منتهي!
منتهي!
منتهي!

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

يستغرق الأمر فترة تدريب لقراءة الوقت بتنسيق ثنائي حقيقي ، ولكنه تمرين ممتع وبعد فترة يصبح طريقة سريعة للحصول على الوقت بلمحة واحدة فقط!

موصى به: