خادم عميل ESP32 NTP: احصل على التاريخ والوقت - Arduino IDE

Khadm Myl Esp32 Ntp Ahsl Ly Altarykh Walwqt Arduino Ide



ESP32 عبارة عن لوحة إنترنت للأشياء (IoT) قائمة على المتحكم الدقيق ويمكن توصيلها بمجموعة كبيرة من الأجهزة. يستخدم ESP32 على نطاق واسع في المشاريع القائمة على إنترنت الأشياء.

يعد العمل مع ESP32 أو أي وقت آخر للميكروكونترولر أمرًا مهمًا للغاية لأن المؤقت المدمج ليس بهذه الدقة حتى نتمكن من استخدام NTP لجلب الخادم في الوقت الفعلي ويمكن تخزينه داخل متغير يمكن استخدامه لاحقًا داخل رمز ESP32.

يستخدم بروتوكول وقت الشبكة (NTP) التوقيت العالمي المنسق (UTC) الذي يزامن ساعة النظام بدقة ودقة كبيرين. على الشبكات الأصغر ، يمكن أن يوفر لنا NTP ساعات بدقة تصل إلى 1 مللي ثانية بينما يمكن للشبكات الأكبر مثل LAN (شبكة المنطقة المحلية) أن يوفر NTP دقة تصل إلى عشرات المللي ثانية عبر الإنترنت. باستخدام هذه الساعة الدقيقة ESP32 يمكن تنفيذ التعليمات في وقت محدد.







يحتوي هذا الدليل على المحتويات التالية:



  1. مقدمة إلى NTP (بروتوكول وقت الشبكة)
  2. خادم NTP وإعدادات الوقت



  3. الطباعة في الوقت الحقيقي باستخدام وظيفة printLocalTime ()





1: مقدمة إلى NTP (بروتوكول وقت الشبكة)

NTP هو اختصار لـ ن الشبكة تي لكى يفعل ص rotocol هو معيار يستخدم لمزامنة وقت الأجهزة مع منطقتها الزمنية. يقوم بروتوكول وقت الشبكة بمزامنة وقت جميع أجهزة الشبكة مع التوقيت العالمي المنسق المعروف أيضًا باسم التوقيت العالمي المنسق.

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



2: خادم NTP وإعدادات الوقت

لقراءة الوقت من خادم NTP ، نحتاج إلى إعلان المتغيرات التالية داخل الكود باستخدام هذه المتغيرات ، يمكننا الحصول على الوقت من خادم NTP.

  • خادم NTP
  • تعويض GMT
  • إزاحة النهار

2.1: خادم NTP

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

منطقة اسم المضيف
في جميع أنحاء العالم pool.ntp.org
آسيا asia.pool.ntp.org
أوروبا europe.pool.ntp.org
أمريكا الشمالية north-america.pool.ntp.org
أوقيانوسيا Oceania.pool.ntp.org
أمريكا الجنوبية south-america.pool.ntp.org

2.2: توقيت جرينتش

يصف معادل GMT الفرق الزمني بالساعات بين المنطقة الزمنية التي تعيش فيها حتى GMT. على سبيل المثال ، إذا استخدمنا المنطقة الزمنية للولايات المتحدة الأمريكية ، فيمكننا ضبطها على التوقيت العالمي المنسق = -11: 00 .

2.3: إزاحة ضوء النهار

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

نظرًا لأننا قمنا بتغطية أساسيات خادم NTP ، فسوف نتحقق الآن من كيفية إرسال طلب إلى خادم NTP وقراءة التوقيت المحلي باستخدام ESP32 مع كود Arduino IDE.

3: الطباعة في الوقت الحقيقي باستخدام وظيفة printLocalTime ()

ال printLocalTime () ستستدعي الوظيفة getLocalTime () الوظيفة التي ترسل الطلب إلى خادم NTP وتخزن التاريخ والوقت المستلمين داخل معلومات الوقت عامل.

3.1: رمز لطباعة الوقت الحقيقي

الصق الكود المعطى لخادم عميل NTP في محرر Arduino IDE. قم بتوصيل ESP32 بجهاز الكمبيوتر ، وحدد منفذ COM وقم بتحميل الكود.

# تضمين
# تضمين 'time.h'
شار كونست * ssid = 'REPLACE_WITH_YOUR_SSID' ؛
شار كونست * كلمة المرور = 'REPLACE_WITH_YOUR_PASSWORD' ؛
شار كونست * ntpServer = 'pool.ntp.org' ؛
const طويلة gmtOffset_sec = 18000 ؛ / * توقيت جرينتش + 5 ساعات ( 18000 SEC ) * /
const int daylightOffset_sec = 3600 ؛ / * 1 ساعة معادلة ضوء النهار * /
printLocalTime باطلة ( )
{
هيكل tm timeinfo ؛
إذا ( ! getLocalTime ( & معلومات الوقت ) ) {
المسلسل. println ( 'فشل في الحصول على الوقت' ) ؛
إرجاع ؛
}
المسلسل. println ( & معلومات الوقت ، '٪ A ،٪ B٪ d٪ Y٪ H:٪ M:٪ S' ) ؛
}
الإعداد باطل ( )
{
المسلسل ( 115200 ) ؛
// الاتصال بشبكة WiFi
المسلسل. printf ( 'الاتصال بـ٪ s' ، ssid ) ؛
WiFi.begin ( ssid ، كلمة المرور ) ؛
في حين ( واي فاي ( ) ! = WL_CONNECTED ) {
تأخير ( 500 ) ؛
المسلسل ( '.' ) ؛
}
المسلسل. println ( 'متصل' ) ؛
// الحرف الأول والحصول على زمن
configTime ( gmtOffset_sec ، daylightOffset_sec ، ntpServer ) ؛
printLocalTime ( ) ؛
// افصل WiFi كما هو - هي لم تعد هناك حاجة
WiFi.donnect (صحيح) ؛
WiFi.mode (WIFI_OFF) ؛
}
حلقة فارغة()
{
تأخير (1000) ؛
printLocalTime () ،
}

بدأ الكود بتضمين شبكة WiFi ومكتبة الوقت. واي فاي ستساعد المكتبة على توصيل ESP32 بشبكة أثناء زمن مكتبة سوف تتعامل مع مزامنة خادم NTP.

بعد ذلك يتم تحديد SSID وكلمة المرور للشبكة التي سيتصل بها ESP32. استبدل بيانات اعتماد الشبكة الخاصة بك هنا. بعد ذلك حددنا تعويض GMT 18000 ثانية وهي (التوقيت العالمي المنسق + 5 ساعات). يمكنك استبدال منطقتك الزمنية UTC هنا. اتبع ال حلقة الوصل للحصول على تعويض GMT لمنطقتك الزمنية.

بالإضافة إلى ذلك ، يتم تحديد عنوان خادم NTP باستخدام الأمر:

شار كونست * ntpServer = 'pool.ntp.org' ؛

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

في النهاية ، قمنا بتكوين ESP32 كعميل NTP وللحصول على التاريخ والوقت. لذلك استخدمنا ملف configTime () وظيفة.

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

تمثل الأوامر التالية ملف معلومات الوقت بنية.

المسلسل. println ( & معلومات الوقت ، '٪ A ،٪ B٪ d٪ Y٪ H:٪ M:٪ S' ) ؛

كل حرف من هيكل الوقت يتعلق بمعلومات محددة:

المحددات معلومة
٪أ يوم العودة من الأسبوع
٪ب شهر العودة
٪د يوم العودة من الشهر
٪ ص عودة السنة الحالية
٪ ح إرجاع الساعة الحالية
٪ م إرجاع الدقائق الحالية
٪س إرجاع الثواني الحالية

3.2: الإخراج

بعد تحميل الرمز ، سيتصل ESP32 بشبكة WiFi ويرسل طلبًا إلى خادم NTP لتلقي التاريخ والوقت الحاليين. يمكن رؤية الإخراج التالي على شاشة Arduino التسلسلية.

الوقت الحالي على جهاز الكمبيوتر الخاص بي و ESP32 مطابق.

لقد نجحنا في قراءة الوقت من خادم NTP باستخدام ESP32 كعميل.

استنتاج

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