תוכן עניינים:

שעון אינטרנט: הצג תאריך ושעה עם OLED באמצעות ESP8266 NodeMCU עם פרוטוקול NTP: 6 שלבים
שעון אינטרנט: הצג תאריך ושעה עם OLED באמצעות ESP8266 NodeMCU עם פרוטוקול NTP: 6 שלבים

וִידֵאוֹ: שעון אינטרנט: הצג תאריך ושעה עם OLED באמצעות ESP8266 NodeMCU עם פרוטוקול NTP: 6 שלבים

וִידֵאוֹ: שעון אינטרנט: הצג תאריך ושעה עם OLED באמצעות ESP8266 NodeMCU עם פרוטוקול NTP: 6 שלבים
וִידֵאוֹ: שינוי שעה ותאריך במחשב 2024, דֵצֶמבֶּר
Anonim
שעון אינטרנט: הצג תאריך ושעה עם OLED באמצעות ESP8266 NodeMCU עם פרוטוקול NTP
שעון אינטרנט: הצג תאריך ושעה עם OLED באמצעות ESP8266 NodeMCU עם פרוטוקול NTP

היי חברים במדריך זה נבנה שעון אינטרנט שיקבל זמן מהאינטרנט ולכן הפרויקט הזה לא יצטרך שום RTC להפעלה, הוא יצטרך רק חיבור אינטרנט עובד.

ולפרויקט זה אתה צריך esp8266 שיהיה לו wifi כדי לקבל גישה לאינטרנט ותצוגה שתציג בו את הזמן ו- esp8266 יביא זמן מהאינטרנט באמצעות פרוטוקול NTP, ntp מייצג פרוטוקול זמן רשת, כך שבעצם ישנם שרתי ntp באינטרנט המשמשים לסנכרון שעוני מחשב ואנו נשתמש בשרתים אלה כדי לקבל זמן בפרויקט שלנו.

שלב 1: דברים שאתה צריך

דברים שאתה צריך
דברים שאתה צריך
דברים שאתה צריך
דברים שאתה צריך
דברים שאתה צריך
דברים שאתה צריך

לפרויקט זה תזדקק לדברים הבאים:

Esp8266/nodemcu

Oled ssd1306 0.96"

חוטי מגשר

לוח לחם

כבל יו אס בי

שלב 2: חיבורים

חיבורים
חיבורים

צג OLED בעל 4 פינים זה מתקשר עם מודול ESP8266 באמצעות פרוטוקול I2C, להלן תרשים המעגלים וטבלת החיבורים לחיבור סיכות OLED I2C עם NodeMCU להצגת זמן האינטרנט.

שלב 3: הורדת ספריות

הורד ספריות
הורד ספריות
הורד ספריות
הורד ספריות

וודא שהורדת את ספריות SD1306 ב- Arduino ide שלך כפי שמוצג בתמונה וודא שגם את ספריית ה- GFX של Adafruit, אם לא אז התקן את שתי הספריות האלה.

ב- IDE Arduino שלך עבור למנהל הספריות וחפש NTP ופשוט הורד את ספריית לקוחות NTP כפי שהורדתי, עיין בתמונה לעזרה נוספת.

שלב 4: מהו NTP

מהו NTP
מהו NTP

NTP הוא אחד מפרוטוקולי האינטרנט הוותיקים ברשת לסנכרון שעונים בין רשתות מחשבים. הוא תוכנן על ידי דיוויד ל 'מילס מאוניברסיטת דלאוור בשנת 1981. ניתן להשתמש בפרוטוקול זה לסנכרן רשתות רבות עם זמן אוניברסלי מתואם (UTC) בתוך כמה אלפיות השנייה. UTC הוא תקן הזמן העיקרי שלפיו העולם מסדיר את השעון והזמן. UTC אינו משתנה ומשתנה עבור מיקומים גיאוגרפיים שונים. NTP משתמש ב- UTC כהפניה לזמן ומספק זמן מדויק ומסונכרן ברחבי האינטרנט.

NTP פועל על מודל שרת-לקוח היררכי. לדגם העליון יש שעוני התייחסות המכונים "שכבה 0" כמו שעונים אטומיים, גלי רדיו, GPS, GSM המקבלים זמן מהלווין. השרתים המקבלים זמן משכבה 0 נקראים "שכבה 1" ושרתים המקבלים זמן משכבה 1 נקראים "שכבה 2" וכן הלאה. זה ממשיך ודיוק הזמן ממשיך לרדת לאחר כל שלב. 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.

אֵזוֹר. קיזוז זמן UTC (שעות ודקות). קיזוז זמן UTC (שניות)

הודו +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"

#הגדר SCREEN_WIDTH 128 // רוחב תצוגה של OLED, בפיקסלים

#הגדר 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 (לבן);

display.setCursor (5, 2);

display.println ("ברוכים הבאים");

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 (":");

display.print (ss);

display.println ("PM");

}

אַחֵר

{

display.print (hh);

display.print (":");

display.print (מ מ);

display.print (":");

display.print (ss);

display.println ("AM");

}

int day = 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. אנא הפנה את התמונה לפלט.

מוּמלָץ: