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

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

هنا سوف نقدم لك حلاً يسمح لـ ESP32 بإظهار الوقت الصحيح لأي مكان في العالم على مدار العام. لكن أولاً ، دعنا نلقي نظرة على مثال SimpleTime في Arduino IDE ونرى ما يفعله وكيف يمكننا تحسينه.

مثال SimpleTime

إذا كنت تستخدم Arduino IDE مع ESP32 ، فستجد أنه يحتوي على مثال يسمى سيمبل تايم التي تبدو كالتالي:

يمكنك الوصول إلى هذا المثال عن طريق تكوين Arduino IDE لاستخدام لوحة ESP32 ، من ملف أدوات القائمة ، مثل تحديد ملف وحدة تطوير ESP32. بمجرد القيام بذلك ، يمكنك الوصول إلى مثال SimpleTime من ملف أدوات القائمة تحت أمثلة،ESP32 ،زمن، و وقت بسيط.

instagram viewer

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

ثابت طويل gmtOffset_sec = 3600 ؛
const int daylightOffset_sec = 3600 ؛

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

البحث عن نهج أفضل

إذن ما هي أفضل طريقة لتهيئة المنطقة الزمنية والتوقيت الصيفي؟ للإجابة على هذا السؤال ، لا تنظر إلى أبعد من كيفية تعامل جهاز الكمبيوتر الشخصي الذي يعمل بنظام Windows الخاص بك مع الموقف:

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

متعلق ب: كيفية تخصيص System Tray Clock على نظام Windows

إنشاء قاعدة بيانات موقع لـ ESP32

يتطلب القيام بنفس الشيء على ESP32 بعض العمل الشاق. بدأنا بـ مشاركة مدونة التي وصفت كيفية إعداد المنطقة الزمنية باستخدام متغير البيئة TZ. لموقعنا ، حدث أن يكون MST7MDT ، M3.2.0 ، M11.1.0 ، على هذا النحو جدول المنطقة الزمنية. بينما أدى ذلك إلى حل مشكلة الاضطرار إلى التعديل يدويًا للتوقيت الصيفي ، أردنا ذلك أن تكون العملية أبسط ، دون الحاجة إلى البحث عن سلسلة من الأرقام والحروف لكل منها موقعك.

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

قاعدة البيانات نفسها مخزنة في الملف time_zone.h. باستخدام قاعدة البيانات ، يبدو رمز SimpleTime كما يلي:

لقد أبرزنا التعديلات التي تم إجراؤها على مثال SimpleTime باللون الأصفر. سيسمح هذا الخط للرسم باستخدام قاعدة البيانات:

# تضمين "time_zones.h"

يقوم هذا الخط بتكوين موقعك:

const char * location = "America / Denver" ؛

هناك 461 موقعا محتملا. يمكنك العثور على المواقع المتاحة من خلال إلقاء نظرة على time_zone.h ملف ، أو من خلال النظر في قائمة المنطقة الزمنية على هذا الموقع.

أخيرًا ، يخبر السطر التالي ESP32 بمزامنة الوقت مع خادم الإنترنت باستخدام بروتوكول وقت الشبكة (NTP):

configTimeWithTz (getTzByLocation (الموقع) ، ntpServer) ،

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

const char * ntpServer = "pool.ntp.org" ؛

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

const char * ssid = "YOUR_SSID" ؛
const char * password = "YOUR_PASS" ؛

يحل محل YOUR_SSID باسم شبكتك اللاسلكية و تمرير الخاص بك بكلمة المرور المستخدمة للاتصال به.

متعلق ب: طرق تكوين جهاز التوجيه اللاسلكي بشكل آمن كنقطة وصول عامة

الانتهاء

بمجرد الانتهاء من خطوات التكوين ، قم بتحميل المخطط إلى ESP32 وسيستخدم الوقت الصحيح على مدار السنة دون أي تدخل!

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

  1. قم بتكوين ESP32 كنقطة وصول لاسلكية للتكوين الأولي
  2. قم بتشغيل خادم الويب لتزويد المستخدم بصفحة تكوين
  3. قم بإنشاء نموذج HTML للسماح للمستخدم بإدخال معلومات الشبكة اللاسلكية وتحديد موقعها
  4. قم بإنشاء الكود لمعالجة اختيارات المستخدم وتخزينه في ذاكرة غير متقلبة
  5. عند تشغيل اللوحة:
    • اقرأ التكوين من الذاكرة غير المتطايرة
    • اتصل بالشبكة اللاسلكية وقم بمزامنة الوقت

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

حقوق الصورة: Marcio Teixeira /فليكر

تفحص ال مصدر الرمز لـ ESP32 Dali Clock لمعرفة كيفية إظهار صفحة تكوين ويب كاملة الميزات. تعرض صفحة التكوين قائمة منسدلة للسماح للمستخدم بتحديد موقعه ومنطقته الزمنية و كما يسمح للمستخدم بضبط الوقت يدويًا باستخدام أداة الوقت والتقويم ، لغير المتصل لبديل!

مزامنة وقت الشبكة القائمة على الموقع على ESP32

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

7 مشاريع مثيرة للاهتمام تستخدم ESP32 لتوليد فيديو مركب

إذا كنت تبحث عن مشاريع مثيرة للاهتمام باستخدام ESP32 ، فأنت في المكان الصحيح.

اقرأ التالي

شاركسقسقةبريد الالكتروني
مواضيع ذات صلة
  • افعلها بنفسك
  • ESP32
  • انترنت الأشياء
عن المؤلف
مارسيو تيكسيرا (4 مقالات منشورة)

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

المزيد من Marcio Teixeira

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك