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

ساعة الإنترنت: عرض التاريخ والوقت باستخدام OLED باستخدام ESP8266 NodeMCU مع بروتوكول NTP: 6 خطوات
ساعة الإنترنت: عرض التاريخ والوقت باستخدام OLED باستخدام ESP8266 NodeMCU مع بروتوكول NTP: 6 خطوات

فيديو: ساعة الإنترنت: عرض التاريخ والوقت باستخدام OLED باستخدام ESP8266 NodeMCU مع بروتوكول NTP: 6 خطوات

فيديو: ساعة الإنترنت: عرض التاريخ والوقت باستخدام OLED باستخدام ESP8266 NodeMCU مع بروتوكول NTP: 6 خطوات
فيديو: ESP8266 mini Dual Time Zone Internet clock with Daylight Saving Time 2024, ديسمبر
Anonim
ساعة الإنترنت: عرض التاريخ والوقت باستخدام OLED باستخدام ESP8266 NodeMCU مع بروتوكول NTP
ساعة الإنترنت: عرض التاريخ والوقت باستخدام OLED باستخدام ESP8266 NodeMCU مع بروتوكول NTP

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

وبالنسبة لهذا المشروع ، فأنت بحاجة إلى esp8266 التي ستحتوي على شبكة wifi للوصول إلى الإنترنت وشاشة لعرض الوقت عليها و esp8266 ستجلب الوقت من الإنترنت باستخدام بروتوكول NTP ، وتقف ntp على بروتوكول وقت الشبكة ، لذلك توجد خوادم ntp بشكل أساسي على الويب والتي تُستخدم لمزامنة ساعات الكمبيوتر وسنستخدم خوادم bthose للحصول على الوقت في مشروعنا.

الخطوة 1: الأشياء التي تحتاجها

أشياء تحتاجها
أشياء تحتاجها
أشياء تحتاجها
أشياء تحتاجها
أشياء تحتاجها
أشياء تحتاجها

لهذا المشروع ، ستحتاج إلى الأشياء التالية:

Esp8266 / nodemcu

ssd1306 أولد 0.96 بوصة

أسلاك العبور

اللوح

كابل USB

الخطوة 2: التوصيلات

روابط
روابط

تتصل شاشة OLED ذات 4 سنون بوحدة ESP8266 باستخدام بروتوكول I2C ، فيما يلي مخطط الدائرة وجدول التوصيلات لتوصيل دبابيس OLED I2C بـ NodeMCU لعرض وقت الإنترنت.

الخطوة 3: تنزيل المكتبات

تحميل المكتبات
تحميل المكتبات
تحميل المكتبات
تحميل المكتبات

تأكد من تنزيل مكتبات SD1306 في Arduino ID الخاص بك كما هو موضح في الصورة وتأكد من مكتبة Adafruit GFX أيضًا ، إذا لم يكن الأمر كذلك ، فقم بتثبيت هاتين المكتبتين.

في Arduino IDE الخاص بك ، انتقل إلى Libraries manager وابحث عن NTP وقم فقط بتنزيل مكتبة عميل NTP أثناء تنزيلها ، وارجع إلى الصورة للحصول على مزيد من المساعدة.

الخطوة 4: ما هو NTP

ما هو NTP
ما هو NTP

يعد NTP أحد أقدم بروتوكولات الإنترنت الشبكية (IP) لمزامنة الساعات بين شبكات الكمبيوتر. تم تصميمه بواسطة David L. Mills من جامعة ديلاوير في عام 1981. يمكن استخدام هذا البروتوكول لمزامنة العديد من الشبكات مع التوقيت العالمي المنسق (UTC) في غضون أجزاء قليلة من الثانية. التوقيت العالمي المنسق (UTC) هو معيار الوقت الأساسي الذي ينظم العالم من خلاله الساعة والوقت. لا تتغير شركة UTC وتختلف باختلاف المواقع الجغرافية. يستخدم NTP التوقيت العالمي المنسق كمرجع زمني ويوفر وقتًا دقيقًا ومتزامنًا عبر الإنترنت.

يعمل NTP على نموذج خادم العميل الهرمي. يحتوي الطراز الأعلى على ساعات مرجعية تُعرف باسم "الطبقة 0" مثل الساعات الذرية ، وموجات الراديو ، ونظام تحديد المواقع العالمي ، ونظام GSM الذي يستقبل الوقت من القمر الصناعي. الخوادم التي تتلقى الوقت من stratum0 تسمى "stratum1" والخوادم التي تتلقى الوقت من الطبقة 1 تسمى "stratum2" وهكذا. يستمر هذا وتتناقص دقة الوقت بعد كل مرحلة. يختار NTP تلقائيًا أفضل مصادر الوقت المتاحة المتعددة للمزامنة مما يجعله بروتوكولًا قادرًا على تحمل الأخطاء. هنا في هذا المشروع ، نحصل على وقت من خادم NTP باستخدام ESP8266 NodeMCU ونعرضه على شاشة OLED. تم إنشاء هذا النوع نفسه من ساعة الإنترنت باستخدام ESP32 في البرنامج التعليمي السابق.

الخطوة 5: جزء الترميز

جزء الترميز
جزء الترميز

لطلب التاريخ والوقت ، قم بتهيئة عميل الوقت بعنوان خوادم NTP. للحصول على دقة أفضل ، اختر عنوان خوادم NTP القريبة من منطقتك الجغرافية. هنا نستخدم “pool.ntp.org” الذي يوفر خوادم من جميع أنحاء العالم. إذا كنت ترغب في اختيار خوادم من آسيا يمكنك استخدام “asia.pool.ntp.org”. يأخذ timeClient أيضًا تعويض التوقيت العالمي المنسق (UTC) بالمللي ثانية من منطقتك الزمنية. على سبيل المثال ، تعويض التوقيت العالمي المنسق (UTC) للهند هو +5: 30 لذلك نقوم بتحويل هذه الإزاحة بالمللي ثانية والتي تساوي 5 * 60 * 60 + 30 * 60 = 19800.

منطقة. تعويض الوقت بالتوقيت العالمي المنسق (ساعات ودقائق). تعويض الوقت بالتوقيت العالمي المنسق (بالثواني)

الهند +5: 30 19800

لندن 0:00. 0

نيويورك -5: 00-18000

يرجى نسخ الكود التالي وإدخال wifi الخاص بك وكلمة المرور في الكود وإدخال إزاحة الوقت في الكود ثم تحميله على لوحات esp8266 الخاصة بك.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // يوفر إجراءات Wi-Fi محددة لـ ESP8266 نتصل بها للاتصال بالشبكة # تتضمن "WiFiUdp.h" // يعالج إرسال واستقبال حزم UDP

# تضمين "SPI.h" // SPI للتفاعل مع OLED مع NodeMCu

# تضمين "Adafruit_GFX.h"

# تضمين "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // عرض شاشة OLED ، بالبكسل

#define SCREEN_HEIGHT 64 // ارتفاع عرض OLED ، بالبكسل

# تعريف OLED_RESET -1

عرض Adafruit_SSD1306 (SCREEN_WIDTH ، SCREEN_HEIGHT ، & Wire ، OLED_RESET) ؛

constchar * ssid = "yourwifissid" ؛

const char * password = "yourwifipass" ؛

WiFiUDP ntpUDP ؛

NTPClient timeClient (ntpUDP، "pool.ntp.org"، 19800، 60000) ؛

String arr_days = {"الأحد" ، "الإثنين" ، "الثلاثاء" ، "الأربعاء" ، "الخميس" ، "الجمعة" ، "السبت"} ؛

سلسلة تاريخ_وقت ؛ // يمكنك تحديد تجمع خادم الوقت والإزاحة (بالثواني ، يمكن // تغييرها لاحقًا باستخدام setTimeOffset ()). يمكنك أيضًا تحديد // الفاصل الزمني للتحديث (بالمللي ثانية ، يمكن تغييره باستخدام setUpdateInterval ()).

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

{

Serial.begin (115200) ؛

WiFi.begin (SSID ، كلمة المرور) ؛

بينما (WiFi.status ()! = WL_CONNECTED)

{

تأخير (500) ؛

Serial.print (".") ؛

}

إذا (! display.begin (SSD1306_SWITCHCAPVCC، 0x3C))

{

Serial.println (F ("فشل تخصيص SSD1306")) ؛

ل(؛؛)؛ // لا تتابع ، حلقة إلى الأبد

}

display.clearDisplay () ،

display.setTextSize (2) ، // ارسم نصًا بمقياس 2X

display.setTextColor (WHITE) ،

display.setCursor (5، 2) ؛

display.println ("WELCOME TO") ؛

display.println ("تعليمات") ؛

display.println ("المشروع") ؛

display.display () ،

تأخير (3000) ؛

timeClient.begin () ،

}

حلقة فارغة()

{

timeClient.update () ،

display.clearDisplay () ،

Serial.println (timeClient.getFormattedTime ()) ،

display.setTextSize (2) ، // ارسم نصًا بمقياس 2X

display.setTextColor (BLUE) ؛

display.setCursor (0، 2) ؛

int hh = timeClient.getHours () ،

int mm = timeClient.getMinutes () ،

int ss = timeClient.getSeconds () ،

إذا (hh> 12)

{

hh = hh-12 ؛

display.print (hh) ؛

display.print (":") ؛

طباعة الشاشة (مم) ؛

display.print (":") ؛

display.print (ss) ؛

display.println ("PM") ؛

}

آخر

{

display.print (hh) ؛

display.print (":") ؛

طباعة الشاشة (مم) ؛

display.print (":") ؛

display.print (ss) ؛

display.println ("AM") ؛

}

اليوم int = timeClient.getDay () ،

display.println ("" "+ arr_days [اليوم] +" "") ؛

date_time = timeClient.getFormattedDate () ،

int index_date = date_time.indexOf ("T") ؛

تاريخ السلسلة = date_time.substring (0، index_date) ؛

Serial.println (التاريخ) ؛

display.println (التاريخ) ؛

display.display () ،

// إظهار النص الأولي}

الخطوة 6: الحصول على التاريخ والوقت

الحصول على التاريخ والوقت
الحصول على التاريخ والوقت

إذا قمت بتوصيل كل شيء بشكل صحيح وقمت بتحميل الكود بشكل صحيح أيضًا ، فستتمكن من رؤية ساعة ntp تعمل على شاشة oled كما لو كنت تعمل في شاشة oled. يرجى الرجوع إلى الصورة للإخراج.

موصى به: