Talaan ng mga Nilalaman:

Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang
Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang

Video: Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang

Video: Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang
Video: Extract GPS location in Arduino with NEO-6m module 2024, Nobyembre
Anonim
Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol
Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol

Kumusta mga tao sa mga itinuturo na ito na magtatayo kami ng isang orasan sa internet na kukuha ng oras mula sa internet kaya't ang proyektong ito ay hindi mangangailangan ng anumang RTC upang tumakbo, kakailanganin lamang nito ang isang gumaganang koneksyon sa internet

At para sa proyektong ito kailangan mo ng isang esp8266 na magkakaroon ng wifi upang makakuha ng access sa internet at isang display upang maipakita ang oras dito at ang esp8266 ay kukuha ng oras mula sa internet gamit ang NTP protocol, ang ntp ay nangangahulugang network time protocol, kaya karaniwang may mga server ng NTP sa web na ginagamit upang pagsabayin ang mga orasan ng computer at gagamit kami ng mga server ng bthose upang makakuha ng oras sa aming proyekto.

Hakbang 1: Mga Bagay na Kailangan mo

Mga Bagay na Kailangan Mo
Mga Bagay na Kailangan Mo
Mga Bagay na Kailangan Mo
Mga Bagay na Kailangan Mo
Mga Bagay na Kailangan Mo
Mga Bagay na Kailangan Mo

para sa proyektong ito kakailanganin mo ang mga sumusunod na bagay:

Esp8266 / nodemcu

Oled ssd1306 0.96"

Jumper wires

Breadboard

Kable ng USB

Hakbang 2: Mga Koneksyon

Mga koneksyon
Mga koneksyon

Ang 4-pin na OLED display na ito ay nakikipag-usap sa module na ESP8266 gamit ang I2C protocol, sa ibaba ay ang diagram ng circuit at talahanayan ng mga koneksyon upang ikonekta ang mga pin ng OLED I2C sa NodeMCU upang ipakita ang oras ng Internet.

Hakbang 3: Mag-download ng Mga Aklatan

Mag-download ng Mga Aklatan
Mag-download ng Mga Aklatan
Mag-download ng Mga Aklatan
Mag-download ng Mga Aklatan

Tiyaking na-download mo ang mga aklatan ng SD1306 sa Iyong Arduino id tulad ng ipinakita sa imahe at tiyaking Adafruit GFX library din, kung hindi pagkatapos mai-install ang dalawang aklatan na ito.

Sa iyong Arduino IDE pumunta sa manager ng Mga Aklatan at maghanap para sa NTP at i-download lamang ang library ng client ng NTP habang na-download ko, mag-refer ng imahe para sa karagdagang tulong.

Hakbang 4: Ano ang NTP

Ano ang NTP
Ano ang NTP

Ang NTP ay isa sa pinakalumang networking Internet Protocol (IP) para sa pag-syncing ng mga orasan sa pagitan ng mga network ng computer. Dinisenyo ito ni David L. Mills ng Unibersidad ng Delaware noong 1981. Ang protokol na ito ay maaaring magamit upang mai-synchronize ang maraming mga network sa Coordinated Universal Time (UTC) sa loob ng ilang milliseconds. Ang UTC ay ang pangunahing pamantayan sa oras kung saan kinokontrol ng mundo ang orasan at oras. Ang UTC ay hindi nagbabago at nag-iiba para sa iba't ibang mga lokasyon ng heograpiya. Gumagamit ang NTP ng UTC bilang sanggunian ng oras at nagbibigay ng tumpak at nasabay na oras sa buong Internet.

Gumagana ang NTP sa isang hierarchical na modelo ng client-server. Nangungunang modelo ay may mga sanggunian na orasan na kilala bilang "stratum0" tulad ng mga atomic na orasan, radio wave, GPS, GSM na tumatanggap ng oras mula sa satellite. Ang mga server na tumatanggap ng oras mula sa stratum0 ay tinawag bilang "stratum1" at ang mga server na tumatanggap ng oras mula sa stratum1 ay tinawag na "stratum2" at iba pa. Nagpapatuloy ito at ang kawastuhan ng oras ay patuloy na bumababa pagkatapos ng bawat yugto. Awtomatikong pipiliin ng NTP ang pinakamahusay sa maraming magagamit na mga mapagkukunan ng oras upang mai-synchronize na ginagawang mapagparaya sa kasalanan na may kakayahang protokol. Kaya dito sa proyektong ito, nakakakuha kami ng oras mula sa NTP server gamit ang ESP8266 NodeMCU at ipinapakita ito sa OLED display. Ang parehong uri ng orasan sa Internet ay binuo sa pamamagitan ng paggamit ng ESP32 sa nakaraang tutorial.

Hakbang 5: Bahagi ng Coding

Coding Part
Coding Part

Upang humiling ng petsa at oras, simulan ang client ng oras sa address ng mga NTP server. Para sa mas mahusay na kawastuhan piliin ang address ng mga NTP server na malapit sa iyong lugar na pangheograpiya. Dito ginagamit namin ang "pool.ntp.org" na nagbibigay sa mga server mula sa buong mundo. Kung nais mong pumili ng mga server mula sa Asya maaari mong gamitin ang "asia.pool.ntp.org". Ang TimeClient ay tumatagal din ng offset ng oras ng UTC sa milliseconds ng iyong timezone. Halimbawa, ang offset ng UTC para sa India ay +5: 30 kaya't binago namin ang offset na ito sa milliseconds na katumbas ng 5 * 60 * 60 + 30 * 60 = 19800.

Lugar. Oras ng offset ng oras (oras at minuto). Oras ng offset ng oras (segundo)

INDIA +5: 30 19800

LONDON 0:00. 0

BAGONG YORK -5: 00 -18000

Mangyaring kopyahin ang sumusunod na code at ipasok ang iyong wifi at password sa code at Ipasok ang oras na offset sa code pagkatapos ay i-upload ito sa iyong mga esp8266 board.:

# isama ang "NTPClient.h" #include "ESP8266WiFi.h" // ay nagbibigay ng ESP8266 tiyak na mga gawain sa Wi-Fi na tinatawagan namin upang kumonekta sa network # isama ang "WiFiUdp.h" // humahawak sa pagpapadala at pagtanggap ng mga package ng UDP

# isama ang "SPI.h" // SPI para sa interfaced OLED sa NodeMCu

# isama ang "Adafruit_GFX.h"

# isama ang "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // OLED display width, sa mga pixel

#define SCREEN_HEIGHT 64 // OLED taas ng display, sa mga pixel

# tukuyin ang OLED_RESET -1

Display ng Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);

constchar * ssid = "yourwifissid";

const char * password = "yourwifipass";

WiFiUDP ntpUDP;

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

Mga string arr_day = {"Linggo", "Lunes", "Martes", "Miyerkules", "Huwebes", "Biyernes", "Sabado"};

String date_time; // Maaari mong tukuyin ang time server pool at ang offset (sa mga segundo, maaaring // mabago sa paglaon gamit ang setTimeOffset ()). Additionaly maaari mong tukuyin ang // interval ng pag-update (sa milliseconds, maaaring mabago gamit ang setUpdateInterval ()).

walang bisa ang pag-setup ()

{

Serial.begin (115200);

WiFi.begin (ssid, password);

habang (WiFi.status ()! = WL_CONNected)

{

pagkaantala (500);

Serial.print (".");

}

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

{

Serial.println (F ("Nabigo ang paglalaan ng SSD1306"));

para sa (;;); // Huwag magpatuloy, mag-loop magpakailanman

}

display.clearDisplay ();

display.setTextSize (2); // Gumuhit ng teksto ng 2X-scale

display.setTextColor (PUTI);

display.setCursor (5, 2);

display.println ("WELCOME TO");

display.println ("itinuturo");

display.println ("Project");

display.display ();

pagkaantala (3000);

timeClient.begin ();

}

walang bisa loop ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // Gumuhit ng teksto ng 2X-scale

display.setTextColor (BLUE);

display.setCursor (0, 2);

int hh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

kung (hh> 12)

{

hh = hh-12;

display.print (hh);

display.print (":");

display.print (mm);

display.print (":");

display.print (ss);

display.println ("PM");

}

iba pa

{

display.print (hh);

display.print (":");

display.print (mm);

display.print (":");

display.print (ss);

display.println ("AM");

}

int day = timeClient.getDay ();

display.println ("'" + arr_day [araw] + "'");

date_time = timeClient.getFormattedDate ();

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

Petsa ng string = date_time.substring (0, index_date);

Serial.println (petsa);

display.println (petsa);

display.display ();

// Ipakita ang paunang teksto}

Hakbang 6: Pagkuha ng Petsa at Oras

Pagkuha ng Petsa at Oras
Pagkuha ng Petsa at Oras

kung ikinonekta mo nang maayos ang lahat at Na-upload nang maayos ang code pati na rin makikita mo ang iyong ntp na orasan na tumatakbo sa oled display bilang minahan sa pagtakbo sa oled display. Mangyaring mag-refer sa imahe para sa output.

Inirerekumendang: