جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
سنرى في هذا البرنامج التعليمي كيفية الحصول على الوقت باستخدام ESP8266 / nodemcu مع Arduino IDE. يعد الحصول على الوقت مفيدًا بشكل خاص في تسجيل البيانات للطابع الزمني لقراءاتك. إذا كان مشروع ESP8266 الخاص بك يتمتع بإمكانية الوصول إلى الإنترنت ، فيمكنك الحصول على وقت باستخدام بروتوكول وقت الشبكة (NTP) - لا تحتاج إلى أي أجهزة إضافية. يمكنك توصيل ESP8266 بشبكة wifi الخاصة بك وستكون ساعة تتم مزامنتها مع الشبكة ، لذلك إذا قمت بتحميل الرمز ، فسيحصل على وقت من الإنترنت لذلك سيعرض دائمًا الوقت الصحيح.
الخطوة 1: الأشياء التي تحتاجها
بالنسبة لهذا المشروع ، ستحتاج إلى عدد قليل جدًا من الأشياء: كبل ESP8266 / NODEMCUA USB لبرمجته.
الخطوة 2: ما هو NTP وكيف سيعمل؟
ما هو NTP: يرمز NTP إلى بروتوكول وقت الشبكة. إنه بروتوكول إنترنت قياسي (IP) لمزامنة ساعات الكمبيوتر مع بعض المراجع عبر الشبكة ، ويمكن استخدام البروتوكول لمزامنة جميع الأجهزة المتصلة بالشبكة مع التوقيت العالمي المنسق (UTC) ، ويضبط NTP ساعات أجهزة الكمبيوتر على التوقيت العالمي المنسق (UTC) ، في أي وقت محلي يتم تطبيق إزاحة المنطقة أو إزاحة الوقت توفير ضوء النهار من قبل العميل. بهذه الطريقة يمكن للعملاء المزامنة مع الخوادم بغض النظر عن اختلافات الموقع والمنطقة الزمنية. كيف ستعمل لنا: يتصل جهاز العميل مثل ESP8266 بالخادم باستخدام بروتوكول مخطط بيانات المستخدم (UDP) على المنفذ 123. طلب حزمة إلى خادم NTP. استجابة لهذا الطلب ، يرسل خادم NTP حزمة طابع زمني. تحتوي حزمة الطابع الزمني على معلومات متعددة مثل الطابع الزمني لـ UNIX أو الدقة أو التأخير أو المنطقة الزمنية ، ويمكن للعميل بعد ذلك تحليل قيم التاريخ والوقت الحالية.
الخطوة 3: تثبيت Library على Arduino IDE
في Arduino IDE الخاص بك ، انتقل إلى Libraries manager وابحث عن NTP وقم فقط بتنزيل مكتبة عميل NTP أثناء تنزيلها ، وارجع إلى الصورة للحصول على مزيد من المساعدة.
الخطوة 4: جزء الترميز
يرجى نسخ الكود التالي ووضع بيانات اعتماد الشبكة الخاصة بك في التعليمات البرمجية الخاصة بك ، ثم تحتاج إلى تعيين offsettime بالنسبة لي ، فهو 19800 لأن منطقتي الزمنية هي utc + 5: 30 ، لذا UTC +5: 30 = 5.5 * 60 * 60 = 19800UTC + 1 = 1 * 60 * 60 = 3600 احسب منطقتك الزمنية وقم بتحريرها ثم قم بتحميل الرمز. # include "NTPClient.h" #include "ESP8266WiFi.h" #include "WiFiUdp.h" const char * ssid = "***** ****** "؛ const char * password =" *********** "؛ const long utcOffsetInSeconds = 19800؛ char daysOfTheWeek [7] [12] = {" Sunday "،" Monday " ، "الثلاثاء" ، "الأربعاء" ، "الخميس" ، "الجمعة" ، "السبت"} ؛ // تحديد عميل NTP للحصول على timeWiFiUDP ntpUDP ؛ NTPClient timeClient (ntpUDP ، "pool.ntp.org" ، utcOffsetInSeconds) ؛ إعداد باطل () {Serial.begin (115200) ، WiFi.begin (SSID ، كلمة المرور) ؛ while (WiFi.status ()! = WL_CONNECTED) {delay (500) ؛ Serial.print (".") ؛ } timeClient.begin ()؛} حلقة فارغة () {timeClient.update () ، Serial.print (daysOfTheWeek [timeClient.getDay ()]) ؛ Serial.print ("،") ؛ Serial.print (timeClient.getHours ()) ؛ Serial.print (":") ؛ Serial.print (timeClient.getMinutes ()) ، Serial.print (":") ؛ Serial.println (timeClient.getSeconds ()) ، //Serial.println (timeClient.getFormattedTime ()) ؛ تأخير (1000) ؛}
الخطوة الخامسة: الحصول على الوقت
بعد تحميل الكود إلى Esp8266 ، يمكنك فتح الشاشة التسلسلية وإذا كان كل شيء جيدًا ، فستتمكن من الحصول على الوقت على الشاشة التسلسلية حيث يمكنني الحصول على الوقت في الشاشة التسلسلية. عرضه وجعله ساعة شبكة مناسبة. لذا استمتع بجعل شبكتك على مدار الساعة.