Sisukord:

Interneti -kell: kuvage kuupäev ja kellaaeg OLED -i abil, kasutades ESP8266 NodeMCU -d koos NTP -protokolliga: 6 sammu
Interneti -kell: kuvage kuupäev ja kellaaeg OLED -i abil, kasutades ESP8266 NodeMCU -d koos NTP -protokolliga: 6 sammu

Video: Interneti -kell: kuvage kuupäev ja kellaaeg OLED -i abil, kasutades ESP8266 NodeMCU -d koos NTP -protokolliga: 6 sammu

Video: Interneti -kell: kuvage kuupäev ja kellaaeg OLED -i abil, kasutades ESP8266 NodeMCU -d koos NTP -protokolliga: 6 sammu
Video: Võsastunud mäest unistuste kogukonnaaiaks – Siret Valge 2024, November
Anonim
Interneti -kell: kuvage kuupäev ja kellaaeg OLED -iga, kasutades ESP8266 NodeMCU -d koos NTP -protokolliga
Interneti -kell: kuvage kuupäev ja kellaaeg OLED -iga, kasutades ESP8266 NodeMCU -d koos NTP -protokolliga

Tere poisid selles juhendis, me ehitame internetikella, mis saab Internetist aega, nii et selle projekti käivitamiseks pole vaja RTC -d, vaid ainult töötavat Interneti -ühendust

Ja selle projekti jaoks vajate esp8266 -d, millel on Interneti -ühenduse saamiseks wifi ja ekraan, mis kuvab sellel olevat aega ning esp8266 tõmbab Internetist aega NTP -protokolli abil, ntp tähistab võrgu ajaprotokolli, nii et põhimõtteliselt on olemas ntp -serverid veebis, mida kasutatakse arvutikellade sünkroonimiseks, ja me kasutame nende serverite abil oma projekti jaoks aega.

Samm: asjad, mida vajate

Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate

selle projekti jaoks vajate järgmisi asju:

Esp8266/nodemcu

Oled SSD1306 0,96"

Jumper juhtmed

Leivalaud

USB kaabel

Samm 2: Ühendused

Ühendused
Ühendused

See 4-kontaktiline OLED-ekraan suhtleb ESP8266 mooduliga, kasutades I2C protokolli, allpool on skeem ja ühenduste tabel OLED I2C tihvtide ühendamiseks NodeMCU-ga Interneti-aja kuvamiseks.

Samm: laadige alla raamatukogud

Laadige alla raamatukogud
Laadige alla raamatukogud
Laadige alla raamatukogud
Laadige alla raamatukogud

Veenduge, et laadisite oma Arduino ideesse alla SD1306 raamatukogud, nagu pildil näidatud, ja veenduge, et olete ka Adafruit GFX raamatukogu, kui mitte, siis installige need kaks raamatukogu.

Minge oma Arduino IDE -s teekide haldurisse ja otsige NTP -d ning laadige allalaadimisel lihtsalt NTP -klienditeek alla, lisateabe saamiseks vaadake pilti.

Samm: mis on NTP

Mis on NTP
Mis on NTP

NTP on üks vanimaid võrguühendusega Interneti -protokolle (IP) kellade sünkroonimiseks arvutivõrkude vahel. Selle kujundas David L. Mills Delaware'i ülikoolist 1981. aastal. Seda protokolli saab kasutada paljude võrkude sünkroonimiseks universaalse ajaga (UTC) mõne millisekundi jooksul. UTC on peamine aja standard, mille järgi maailm reguleerib kella ja aega. UTC ei muutu ja varieerub erinevates geograafilistes asukohtades. NTP kasutab ajaviitena UTC -d ning pakub Internetis täpset ja sünkroonitud aega.

NTP töötab hierarhilisel kliendi-serveri mudelil. Tippmudelil on referentskellad, mida tuntakse kui “stratum0”, näiteks aatomkellad, raadiolained, GPS, GSM, mis võtab satelliidilt aega. Serverid, mis võtavad aega stratum0 -st, nimetatakse “stratum1” -ks ja serverid, mis saavad aega stratum1 -st, “stratum2” ja nii edasi. See jätkub ja aja täpsus väheneb pärast iga etappi. NTP valib sünkroonimiseks automaatselt mitme olemasoleva ajaallika hulgast parima, mis muudab selle veakindlaks. Nii et siin selles projektis saame aega NTP -serverist, kasutades ESP8266 NodeMCU -d, ja näitame seda OLED -ekraanil. Seda tüüpi Interneti -kell on loodud eelmises õpetuses ESP32 abil.

Samm: kodeeriv osa

Kodeerimise osa
Kodeerimise osa

Kuupäeva ja kellaaja küsimiseks lähtestage ajaklient NTP -serverite aadressiga. Parema täpsuse huvides valige NTP -serverite aadress, mis asuvad teie geograafilise piirkonna lähedal. Siin kasutame “pool.ntp.org”, mis annab servereid kogu maailmast. Kui soovite valida Aasiast pärit servereid, võite kasutada aadressi „asia.pool.ntp.org”. timeClient võtab ka UTC ajanihke teie ajavööndi millisekundites. Näiteks India UTC nihe on +5: 30, nii et teisendame selle nihke millisekundites, mis on võrdne 5*60*60 +30*60 = 19800.

Piirkond. UTC aja nihe (tunnid ja minutid). UTC ajanihe (sekundit)

INDIA +5: 30 19800

LONDON 0:00. 0

NEW YORK -5: 00-18000

Palun kopeerige järgmine kood ja sisestage koodi sisse oma wifi ja parool & Sisestage koodi nihe ja seejärel laadige see oma esp8266 tahvlitele üles.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // pakub ESP8266-le spetsiifilisi Wi-Fi-tavasid, mida me võrguga ühendamiseks kutsume #Include "WiFiUdp.h" // tegeleb UDP-pakettide saatmise ja vastuvõtmisega

#include "SPI.h" // SPI OLED -i liidestamiseks NodeMCu -ga

#include "Adafruit_GFX.h"

#include "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // OLED -ekraani laius pikslites

#define SCREEN_HEIGHT 64 // OLED -ekraani kõrgus pikslites

#define OLED_RESET -1

Adafruit_SSD1306 ekraan (SCREEN_WIDTH, SCREEN_HEIGHT ja traat, OLED_RESET);

constchar *ssid = "sinu wifissid";

const char *parool = "teie wifipass";

WiFiUDP ntpUDP;

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

String arr_days = {"pühapäev", "esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev"};

String date_time; // Saate määrata aja serveri kogumi ja nihke (sekundites, // saab hiljem muuta setTimeOffset () abil). Lisaks saate määrata // värskendamise intervalli (millisekundites saab seda muuta, kasutades setUpdateInterval ()).

tühine seadistus ()

{

Seriaalne algus (115200);

WiFi.begin (ssid, parool);

samas (WiFi.status ()! = WL_CONNECTED)

{

viivitus (500);

Seeria.print (".");

}

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

{

Serial.println (F ("SSD1306 eraldamine nurjus"));

(;;) jaoks; // Ärge jätkake, jätkake igavesti

}

display.clearDisplay ();

display.setTextSize (2); // Joonista 2X skaala tekst

display.setTextColor (VALGE);

display.setCursor (5, 2);

display.println ("TERE TULEMAST");

display.println ("juhised");

display.println ("Projekt");

display.display ();

viivitus (3000);

timeClient.begin ();

}

tühine tsükkel ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // Joonista 2X skaala tekst

display.setTextColor (SININE);

display.setCursor (0, 2);

int hh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

kui (hh> 12)

{

hh = hh-12;

kuva.print (hh);

display.print (":");

ekraan.print (mm);

display.print (":");

display.print (ss);

display.println ("PM");

}

muidu

{

kuva.print (hh);

display.print (":");

ekraan.print (mm);

display.print (":");

display.print (ss);

display.println ("AM");

}

int päev = timeClient.getDay ();

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

date_time = timeClient.getFormattedDate ();

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

String date = date_time.substring (0, index_date);

Serial.println (kuupäev);

display.println (kuupäev);

display.display ();

// Kuva algtekst}

6. samm: kuupäeva ja kellaaja hankimine

Kuupäeva ja kellaaja hankimine
Kuupäeva ja kellaaja hankimine

kui ühendasite kõik õigesti ja laadisite ka koodi korralikult üles, näete oma ntp -kella teie ekraanil nagu minu oma jooksvalt. Väljundi saamiseks vaadake pilti.

Soovitan: