فهرست مطالب:

ساعت اینترنتی: نمایش تاریخ و زمان با 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 وجود دارد. در وب که برای همگام سازی ساعت کامپیوتر استفاده می شود و ما از سرورهای bthose برای زمان در پروژه خود استفاده می کنیم.

مرحله 1: موارد مورد نیاز

چیزهایی که شما نیاز دارید
چیزهایی که شما نیاز دارید
چیزهایی که شما نیاز دارید
چیزهایی که شما نیاز دارید
چیزهایی که شما نیاز دارید
چیزهایی که شما نیاز دارید

برای این پروژه به موارد زیر نیاز دارید:

Esp8266/nodemcu

اولد ssd1306 0.96"

سیم های بلوز

تخته نان

کابل یو اس بی

مرحله 2: اتصالات

اتصالات
اتصالات

این صفحه نمایش 4 پین OLED با ماژول ESP8266 با استفاده از پروتکل I2C ارتباط برقرار می کند ، در زیر نمودار مدار و جدول اتصالات برای اتصال پین های OLED I2C با NodeMCU برای نمایش زمان اینترنت آمده است.

مرحله 3: بارگیری کتابخانه ها

بارگیری کتابخانه ها
بارگیری کتابخانه ها
بارگیری کتابخانه ها
بارگیری کتابخانه ها

اطمینان حاصل کنید که کتابخانه SD1306 را در Arduino ide خود بارگیری کرده اید و در کتابخانه Adafruit GFX نیز اطمینان حاصل کنید ، در غیر این صورت این دو کتابخانه را نصب کنید.

در Arduino IDE خود به مدیر کتابخانه ها بروید و NTP را جستجو کنید و فقط کتابخانه سرویس گیرنده NTP را همانطور که بارگیری کردم بارگیری کنید ، برای راهنمایی بیشتر به تصویر مراجعه کنید.

مرحله 4: NTP چیست؟

NTP چیست؟
NTP چیست؟

NTP یکی از قدیمی ترین پروتکل های شبکه شبکه (IP) برای همگام سازی ساعت بین شبکه های کامپیوتری است. این برنامه توسط دیوید ال میلز از دانشگاه دلاور در سال 1981 طراحی شده است. این پروتکل می تواند برای همگام سازی بسیاری از شبکه ها با زمان جهانی هماهنگ (UTC) در عرض چند میلی ثانیه استفاده شود. UTC استاندارد اولیه زمان است که بر اساس آن جهان ساعت و زمان را تنظیم می کند. UTC تغییر نمی کند و برای مکان های مختلف جغرافیایی متفاوت است. NTP از UTC به عنوان مرجع زمان استفاده می کند و زمان دقیق و همزمان را در اینترنت ارائه می دهد.

NTP بر روی مدل سلسله مراتبی سرویس گیرنده-سرور کار می کند. مدل برتر دارای ساعتهای مرجع معروف به "stratum0" مانند ساعتهای اتمی ، امواج رادیویی ، 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 و گذرواژه خود را در کد وارد کنید و زمان offset را در کد وارد کنید و سپس آن را در بردهای esp8266 خود بارگذاری کنید.:

#شامل "NTPClient.h" #شامل "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 ، و سیم ، OLED_RESET) ؛

constchar *ssid = "yourwifissid"؛

const char *رمز عبور = "yourwifipass"؛

WiFiUDP ntpUDP ؛

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

String arr_days = {"یکشنبه" ، "دوشنبه" ، "سه شنبه" ، "چهارشنبه" ، "پنجشنبه" ، "جمعه" ، "شنبه"}؛

رشته تاریخ_زمان ؛ // شما می توانید مجموعه سرور زمان و offset را مشخص کنید (در ثانیه ، می توان // بعداً با setTimeOffset () تغییر داد). علاوه بر این ، می توانید فاصله به روز رسانی // را مشخص کنید (در میلی ثانیه ، با استفاده از setUpdateInterval () قابل تغییر است).

void setup ()

{

Serial.begin (115200) ؛

WiFi.begin (ssid ، رمز عبور) ؛

while (WiFi.status ()! = WL_CONNECTED)

{

تأخیر (500) ؛

Serial.print (".")؛

}

if (! 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 (آبی) ؛

display.setCursor (0 ، 2) ؛

int hh = timeClient.getHours ()؛

int mm = timeClient.getMinutes ()؛

int ss = timeClient.getSeconds ()؛

اگر (ساعت> 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 [day]+"'")؛

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 ببینید. لطفاً برای خروجی تصویر را ارجاع دهید.

توصیه شده: