Orodha ya maudhui:

Saa ya Mtandaoni: Tarehe ya Kuonyesha na Wakati na OLED Kutumia ESP8266 NodeMCU Na Itifaki ya NTP: Hatua 6
Saa ya Mtandaoni: Tarehe ya Kuonyesha na Wakati na OLED Kutumia ESP8266 NodeMCU Na Itifaki ya NTP: Hatua 6

Video: Saa ya Mtandaoni: Tarehe ya Kuonyesha na Wakati na OLED Kutumia ESP8266 NodeMCU Na Itifaki ya NTP: Hatua 6

Video: Saa ya Mtandaoni: Tarehe ya Kuonyesha na Wakati na OLED Kutumia ESP8266 NodeMCU Na Itifaki ya NTP: Hatua 6
Video: Extract GPS location in Arduino with Ublox Neo-6 and Neo 7m GPS modules 2024, Novemba
Anonim
Saa ya Mtandaoni: Tarehe ya Kuonyesha na Wakati na OLED Kutumia ESP8266 NodeMCU Na Itifaki ya NTP
Saa ya Mtandaoni: Tarehe ya Kuonyesha na Wakati na OLED Kutumia ESP8266 NodeMCU Na Itifaki ya NTP

Halo jamani katika mafunzo haya tutaunda saa ya mtandao ambayo itapata muda kutoka kwa mtandao kwa hivyo mradi huu hautahitaji RTC yoyote kuendesha, itahitaji tu muunganisho wa wavuti unaofanya kazi

Na kwa mradi huu unahitaji esp8266 ambayo itakuwa na wifi kupata ufikiaji wa mtandao na onyesho la kuonyesha wakati juu yake na esp8266 itachukua wakati kutoka kwa mtandao kwa kutumia itifaki ya NTP, ntp inasimama kwa itifaki ya wakati wa mtandao, kwa hivyo kimsingi kuna seva za ntp kwenye wavuti ambayo hutumiwa kusawazisha saa za kompyuta na tutatumia seva za bthose kupata wakati katika mradi wetu.

Hatua ya 1: Vitu Unavyohitaji

Vitu Unavyohitaji
Vitu Unavyohitaji
Vitu Unavyohitaji
Vitu Unavyohitaji
Vitu Unavyohitaji
Vitu Unavyohitaji

kwa mradi huu utahitaji mambo yafuatayo:

Esp8266 / nodemcu

Oled ssd1306 0.96"

Waya za jumper

Bodi ya mkate

Cable ya Usb

Hatua ya 2: Uunganisho

Miunganisho
Miunganisho

Onyesho hili la pini 4 la OLED linawasiliana na moduli ya ESP8266 ikitumia itifaki ya I2C, chini ni mchoro wa mzunguko na meza ya unganisho kuunganisha pini za OLED I2C na NodeMCU kuonyesha wakati wa Mtandaoni.

Hatua ya 3: Pakua Maktaba

Pakua Maktaba
Pakua Maktaba
Pakua Maktaba
Pakua Maktaba

Hakikisha umepakua maktaba za SD1306 katika maoni yako ya Arduino kama inavyoonyeshwa kwenye picha na hakikisha pia maktaba ya Adafruit GFX pia, ikiwa sio basi weka maktaba hizi mbili.

Katika IDE yako ya Arduino nenda kwa msimamizi wa Maktaba na utafute NTP na upakue tu maktaba ya mteja wa NTP kama nilivyopakua, rejelea picha kwa usaidizi zaidi.

Hatua ya 4: NTP ni nini

NTP ni nini
NTP ni nini

NTP ni mojawapo ya Itifaki ya mtandao ya zamani zaidi (IP) ya kusawazisha saa kati ya mitandao ya kompyuta. Iliundwa na David L. Mills wa Chuo Kikuu cha Delaware mnamo 1981. Itifaki hii inaweza kutumika kusawazisha mitandao mingi kwa Uratibu wa Universal Time (UTC) ndani ya milliseconds chache. UTC ni kiwango cha wakati wa msingi ambacho ulimwengu unasimamia saa na wakati. UTC haibadiliki na inatofautiana kwa maeneo tofauti ya kijiografia. NTP hutumia UTC kama rejeleo la wakati na hutoa wakati sahihi na uliosawazishwa kwenye Wavuti.

NTP inafanya kazi kwa mtindo wa safu ya mteja-seva. Mfano wa juu una saa za kumbukumbu zinazojulikana kama "stratum0" kama saa za atomiki, mawimbi ya redio, GPS, GSM ambayo hupokea wakati kutoka kwa setilaiti. Seva ambazo hupokea wakati kutoka kwa tabaka0 huitwa "stratum1" na seva ambazo hupokea wakati kutoka kwa stratum1 huitwa "stratum2" na kadhalika. Hii inaendelea na usahihi wa wakati unaendelea kupungua kila baada ya kila hatua. NTP huchagua moja kwa moja bora ya vyanzo kadhaa vya wakati ili kusawazisha ambayo inafanya itifaki inayostahimili makosa. Kwa hivyo hapa katika mradi huu, tunapata wakati kutoka kwa seva ya NTP kutumia ESP8266 NodeMCU na kuionyesha kwenye onyesho la OLED. Aina hiyo hiyo ya saa ya mtandao imejengwa kwa kutumia ESP32 katika mafunzo ya awali.

Hatua ya 5: Sehemu ya Usimbuaji

Sehemu ya Usimbuaji
Sehemu ya Usimbuaji

Kuomba tarehe na saa, anzisha mteja wa wakati na anwani ya seva za NTP. Kwa usahihi bora chagua anwani ya seva za NTP ambazo ziko karibu na eneo lako la kijiografia. Hapa tunatumia "pool.ntp.org" ambayo inatoa seva kutoka ulimwenguni kote. Ikiwa unataka kuchagua seva kutoka Asia unaweza kutumia "asia.pool.ntp.org". timeClient pia huchukua kukabiliana na wakati wa UTC katika milliseconds za eneo lako la wakati. Kwa mfano, kukabiliana kwa UTC kwa India ni +5: 30 kwa hivyo tunabadilisha malipo haya kwa milliseconds ambayo ni sawa na 5 * 60 * 60 + 30 * 60 = 19800.

Eneo. Muda wa kukabiliana na UTC (masaa na dakika). Kuweka muda wa UTC (sekunde)

INDIA +5: 30 19800

LONDON 0:00. 0

YORK MPYA -5: 00 -18000

Tafadhali nakili nambari ifuatayo na weka wifi yako & nywila katika nambari hiyo & Ingiza wakati uliowekwa katika nambari kisha uipakie kwenye bodi zako za esp8266.:

# pamoja na "Mteja wa NTP.h" # pamoja na "ESP8266WiFi.h" // hutoa ESP8266 njia maalum za Wi-Fi tunazopigia kuungana na mtandao # pamoja na "WiFiUdp.h" // hushughulikia kutuma na kupokea vifurushi vya UDP

# pamoja na "SPI.h" // SPI ya kuingiliana na OLED na NodeMCu

# pamoja na "Adafruit_GFX.h"

# pamoja na "Adafruit_SSD1306.h"

#fafanua SCREEN_WIDTH 128 // OLED upana wa kuonyesha, kwa saizi

#fafanua SCREEN_HEIGHT 64 // Urefu wa kuonyesha OLED, kwa saizi

#fafanua OLED_RESET -1

Maonyesho ya Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);

constchar * ssid = "yourwifissid";

const char * password = "yourwifipass";

WiFiUDP ntpUDP;

Mteja wa wakati wa NTP (ntpUDP, "pool.ntp.org", 19800, 60000);

Kamba arr_days = {"Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi"};

Wakati wa tarehe ya kamba; // Unaweza kutaja dimbwi la seva ya wakati na kukabiliana (kwa sekunde, inaweza // kubadilishwa baadaye na setTimeOffset ()). Nyongeza unaweza kutaja // // muda wa sasisho (kwa milliseconds, inaweza kubadilishwa kwa kutumia setUpdateInterval ()).

kuanzisha batili ()

{

Serial. Kuanza (115200);

Kuanza kwa WiFi (ssid, password);

wakati (WiFi.status ()! = WL_CONNECTED)

{

kuchelewesha (500);

Printa ya serial (".");

}

ikiwa (! onyesha. anza (SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println (F ("mgawanyo wa SSD1306 umeshindwa"));

kwa (;;); // Usiendelee, kitanzi milele

}

onyesha wazi Cleplay ();

onyesha.setTextSize (2); // Chora maandishi ya kiwango cha 2X

onyesha.setTextColor (NYEUPE);

Onyesha Mshale (5, 2);

onyesha.println ("KARIBU KWA");

kuonyesha.println ("maelekezo");

kuonyesha.println ("Mradi");

onyesha.display ();

kuchelewesha (3000);

mudaMteja.anza ();

}

kitanzi batili ()

{

wakatiMteja.update ();

onyesha wazi Cleplay ();

Serial.println (timeClient.getFormattedTime ());

onyesha.setTextSize (2); // Chora maandishi ya kiwango cha 2X

onyesha.setTextColor (BLUE);

Kuweka Mshale (0, 2);

inthh = timeClient.getHours ();

int mm = mudaMteja.getMinutes ();

int ss = timeClient.getSeconds ();

ikiwa (hh> 12)

{

hh = hh-12;

onyesho.print (hh);

onyesho.print (":");

onyesho.print (mm);

onyesho.print (":");

onyesho.print (ss);

onyesha.println ("PM");

}

mwingine

{

onyesho.print (hh);

onyesho.print (":");

onyesho.print (mm);

onyesho.print (":");

onyesho.print (ss);

onyesha.println ("AM");

}

siku ya siku = timeClient.getDay ();

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

date_time = timeClient.getFormattedDate ();

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

Tarehe ya kamba = date_time.substring (0, index_date);

Serial.println (tarehe);

onyesha.println (tarehe);

onyesha.display ();

// Onyesha maandishi ya asili}

Hatua ya 6: Kupata Tarehe na Wakati

Kupata Tarehe na Wakati
Kupata Tarehe na Wakati

ikiwa umeunganisha kila kitu vizuri na Kupakia nambari vizuri pia basi utaweza kuona saa yako ya ntp ikiendesha kwenye onyesho la oled kama yangu katika kuendesha onyesho la oled. Tafadhali rejelea picha kwa pato.

Ilipendekeza: