Tartalomjegyzék:
- 1. lépés: A szükséges dolgok
- 2. lépés: Kapcsolatok
- 3. lépés: Töltse le a könyvtárakat
- 4. lépés: Mi az NTP?
- 5. lépés: Kódolási rész
- 6. lépés: Dátum és idő lekérése
Videó: Internet óra: Dátum és idő megjelenítése OLED -en ESP8266 NodeMCU használatával NTP protokollal: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
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
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
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
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?
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
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
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:
ESP8266 OLED - Idő és dátum lekérése az internetről: 8 lépés
ESP8266 OLED - Idő és dátum lekérése az internetről: Ebben az oktatóanyagban megtanuljuk, hogyan lehet lekérni a dátumot és az időt a NIST TIME szerverről az ESP8266 OLED és Visuino segítségével. Nézzen meg egy bemutató videót
Idő megszerzése az Internetről az ESP8266 használatával - NTP Clock Project ESP8266 Nodemcu segítségével: 5 lépés
Idő megszerzése az Internetről az ESP8266 használatával | NTP Clock Project ESP8266 Nodemcu segítségével: Ebben az oktatóanyagban megtudjuk, hogyan juthat időhöz az ESP8266/nodemcu használatával az Arduino IDE segítségével. Az idő megszerzése különösen hasznos az adatok naplózásában, hogy időbélyegezze a mért értékeket. Ha az ESP8266 projektje rendelkezik internet -hozzáféréssel, időt nyerhet a Network T
ESP8266 Hálózati óra RTC nélkül - Nodemcu NTP óra Nem RTC - INTERNET ÓRA PROJEKT: 4 lépés
ESP8266 Hálózati óra RTC nélkül | Nodemcu NTP óra Nem RTC | INTERNET ÓRA PROJEKT: A projektben óra projektet készítenek RTC nélkül, időbe telik az internet az wifi használatával, és megjeleníti az st7735 kijelzőn
Arduino dátum/idő ábrázolása/naplózása Millis () és PfodApp használatával: 11 lépés
Arduino dátum/idő ábrázolása/naplózása Millis () és PfodApp használatával: Nincs szükség Arduino vagy Android programozásra. RTC és GPS modulok is támogatottak. Automatikus korrekció az időzónákhoz, az RTC sodródás és a hiányzó szökő másodpercek GPS Bevezetés Ez az oktatóanyag bemutatja, hogyan kell használni az Arduino millis ( ) időbélyegek az adatok ábrázolásához
Óra infravörös távirányítóval az idő/dátum beállításához: 5 lépés
Óra infravörös távirányítóval az idő/dátum beállításához: Ez egy egyszerű óra, amely könnyen elérhető összetevőkből készül. A használt mikrokontroller egy olcsó STM32F030F4P6. A kijelző egy 16x2 méretű LCD, I2C hátizsákkal (PCF8574). Az óra áramkör kis prototípus -táblák és TSSOP segítségével építhető fel