Tartalomjegyzék:

Internet óra: Dátum és idő megjelenítése OLED -en ESP8266 NodeMCU használatával NTP protokollal: 6 lépés
Internet óra: Dátum és idő megjelenítése OLED -en ESP8266 NodeMCU használatával NTP protokollal: 6 lépés

Videó: Internet óra: Dátum és idő megjelenítése OLED -en ESP8266 NodeMCU használatával NTP protokollal: 6 lépés

Videó: Internet óra: Dátum és idő megjelenítése OLED -en ESP8266 NodeMCU használatával NTP protokollal: 6 lépés
Videó: 10 Trükk, Rejtett Dolog Androidon Amit Nem Ismersz!!! #Android Tippek# 2024, November
Anonim
Internet óra: Dátum és idő megjelenítése OLED -en ESP8266 NodeMCU és NTP protokoll használatával
Internet óra: Dátum és idő megjelenítése OLED -en ESP8266 NodeMCU és NTP protokoll használatával

Sziasztok, srácok, ebben az oktatási útmutatóban olyan internetes órát fogunk építeni, amely időt nyer az internetről, így ennek a projektnek nem lesz szüksége RTC -re, csak működő internetkapcsolatra

Ehhez a projekthez szüksége van egy esp8266 -ra, amely rendelkezik wifi -vel az internet -hozzáféréshez, és egy kijelzővel, amely megjeleníti a rajta lévő időt, és az esp8266 letölti az időt az internetről NTP -protokoll használatával, az ntp a hálózati időprotokollt jelenti, tehát alapvetően vannak ntp -kiszolgálók a weben, amelyek a számítógépes órák szinkronizálására szolgálnak, és ezeket a szervereket használjuk, hogy időt nyerjünk a projektünkben.

1. lépés: A szükséges dolgok

A szükséges dolgok
A szükséges dolgok
A szükséges dolgok
A szükséges dolgok
A szükséges dolgok
A szükséges dolgok

ehhez a projekthez a következőkre lesz szüksége:

Esp8266/nodemcu

Oled SSD1306 0,96"

Jumper vezetékek

Kenyeretábla

USB kábel

2. lépés: Kapcsolatok

Kapcsolatok
Kapcsolatok

Ez a 4 tűs OLED kijelző I2C protokollt használva kommunikál az ESP8266 modullal, az alábbiakban a kapcsolási rajz és a csatlakozási táblázat található, amelyekkel az OLED I2C csapokat NodeMCU-val csatlakoztathatja az internetes idő megjelenítéséhez.

3. lépés: Töltse le a könyvtárakat

Letöltés Könyvtárak
Letöltés Könyvtárak
Letöltés Könyvtárak
Letöltés Könyvtárak

Győződjön meg róla, hogy letöltötte az SD1306 könyvtárakat az Arduino ide -ba, amint az a képen látható, és győződjön meg róla, hogy az Adafruit GFX könyvtár is, ha nem, akkor telepítse ezt a két könyvtárat.

Az Arduino IDE -ben lépjen a Könyvtárkezelőbe, és keresse meg az NTP -t, és csak töltse le az NTP -ügyfélkönyvtárat, amint letöltöttem, további segítségért tekintse meg a képet.

4. lépés: Mi az NTP?

Mi az NTP
Mi az NTP

Az NTP az egyik legrégebbi hálózati protokoll (IP), amely szinkronizálja az órákat a számítógépes hálózatok között. Ezt David L. Mills, a Delaware -i Egyetem munkatársa tervezte 1981 -ben. Ezzel a protokollal sok milliszekundumon belül számos hálózat szinkronizálható az UTC -vel. Az UTC az elsődleges időszabvány, amellyel a világ szabályozza az órát és az időt. Az UTC nem változik, és különböző földrajzi helyeken változik. Az NTP UTC -t használ időreferenciaként, és pontos és szinkronizált időt biztosít az interneten.

Az NTP hierarchikus kliens-szerver modellen működik. A csúcsmodell referenciaóráit „stratum0” néven ismerik, például atomiórákat, rádióhullámokat, GPS -t, GSM -et, amely időt vesz a műholdról. Azokat a szervereket, amelyek időt kapnak a stratum0 -ból, stratum1 -nek nevezzük, míg a stratum1 -ből időt fogadó szervereknek stratum2 -nek és így tovább. Ez megy tovább, és az idő pontossága egyre csökken minden egyes szakasz után. Az NTP automatikusan kiválasztja a szinkronizálható időforrások közül a legjobbat, ami hibatűrő protokollsá teszi. Tehát ebben a projektben időt kapunk az NTP -kiszolgálótól az ESP8266 NodeMCU használatával, és megmutatjuk azt az OLED kijelzőn. Ugyanez a fajta internetes óra az ESP32 használatával készült az előző oktatóanyagban.

5. lépés: Kódolási rész

Kódoló rész
Kódoló rész

A dátum és az idő kéréséhez inicializálja az idő klienst az NTP kiszolgálók címével. A jobb pontosság érdekében válassza ki a földrajzi területéhez közeli NTP -kiszolgálók címét. Itt a „pool.ntp.org” -t használjuk, amely világszerte szervereket szolgáltat. Ha Ázsiából származó szervereket szeretne választani, használhatja az „asia.pool.ntp.org” oldalt. A timeClient ezenkívül az UTC időeltolódást is figyelembe veszi az időzóna ezredmásodperceiben. Például az UTC -eltolás Indiában +5: 30, ezért ezt az eltolást ezredmásodpercben konvertáljuk, ami 5*60*60 +30*60 = 19800.

Terület. UTC időeltolás (óra és perc). UTC időeltolódás (másodperc)

INDIA +5: 30 19800

LONDON 0:00. 0

NEW YORK -5: 00-18000

Kérjük, másolja ki a következő kódot, és írja be a wifi -jét és jelszavát a kódba, és írja be az időeltolódást a kódba, majd töltse fel az esp8266 táblára.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // ESP8266 specifikus Wi-Fi rutinokat biztosít, amelyeket a hálózathoz való csatlakozáshoz hívunk #include "WiFiUdp.h" // kezeli az UDP csomagok küldését és fogadását

#include "SPI.h" // SPI az OLED és a NodeMCu összekapcsolásához

#include "Adafruit_GFX.h"

#include "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // OLED kijelző szélessége, pixelben

#define SCREEN_HEIGHT 64 // OLED kijelző magassága, pixelben

#define OLED_RESET -1

Adafruit_SSD1306 kijelző (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);

constchar *ssid = "a te feleséged";

const char *password = "saját wifipass";

WiFiUDP ntpUDP;

NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);

String arr_days = {"vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"};

Karakterlánc dátum_idő; // Megadhatja az időkiszolgáló készletet és az eltolást (másodpercben, // később módosítható a setTimeOffset () paranccsal). Ezenkívül megadhatja az // frissítési intervallumot (ezredmásodpercben megváltoztatható a setUpdateInterval () használatával).

üres beállítás ()

{

Sorozat.kezdet (115200);

WiFi.begin (ssid, jelszó);

míg (WiFi.status ()! = WL_CONNECTED)

{

késleltetés (500);

Soros.nyomtatás (".");

}

if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println (F ("Az SSD1306 kiosztása sikertelen"));

a (;;); // Ne folytasd, örökké hurok

}

display.clearDisplay ();

display.setTextSize (2); // Kétszeres léptékű szöveg rajzolása

display.setTextColor (FEHÉR);

display.setCursor (5, 2);

display.println ("ÜDVÖZÖLJÜK");

display.println ("utasítások");

display.println ("Projekt");

display.display ();

késleltetés (3000);

timeClient.begin ();

}

üres hurok ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // Kétszeres léptékű szöveg rajzolása

display.setTextColor (KÉK);

display.setCursor (0, 2);

int hh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

ha (hh> 12)

{

hh = hh-12;

display.print (hh);

display.print (":");

kijelző.nyomat (mm);

display.print (":");

display.print (ss);

display.println ("PM");

}

más

{

display.print (hh);

display.print (":");

kijelző.nyomat (mm);

display.print (":");

display.print (ss);

display.println ("AM");

}

int nap = timeClient.getDay ();

display.println ("" "+arr_days [day]+" '");

date_time = timeClient.getFormattedDate ();

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

Karakterlánc dátuma = date_time.substring (0, index_date);

Serial.println (dátum);

display.println (dátum);

display.display ();

// Kezdeti szöveg megjelenítése}

6. lépés: Dátum és idő lekérése

Dátum és idő lekérése
Dátum és idő lekérése

ha mindent megfelelően csatlakoztatott, és a kódot is megfelelően feltöltötte, akkor látni fogja, hogy az ntp órája az OLED kijelzőn fut, mint az enyém az OLED kijelzőn. Kérjük, nézze meg a képet a kimenethez.

Ajánlott: