Mundarija:

Vaqtni behuda sarflamang: NTPdan foydalaning !: 8 qadam
Vaqtni behuda sarflamang: NTPdan foydalaning !: 8 qadam

Video: Vaqtni behuda sarflamang: NTPdan foydalaning !: 8 qadam

Video: Vaqtni behuda sarflamang: NTPdan foydalaning !: 8 qadam
Video: НЕ ПОЗВОЛЯЙТЕ ЭТОМУ СЛУЧИТЬСЯ... ОТКРОЙТЕСЬ, ПОКА НЕ ПОЗДНО! 2024, Noyabr
Anonim
Image
Image

Vaqtingizni hisoblang! Bu mening obunachilarim orasida tez -tez muhokama qilinadigan mavzu va nima uchun? Oddiy va ajralmas haqiqat tufayli, agar siz ma'lumot yozuvchini yaratganingizda va avtomatlashtirishni o'z ichiga oladigan hamma narsaga to'g'ri vaqt kerak! Vaqtni o'lchashning bir necha yo'li bor: batareyali soat, RTC (Real Time Clock) va boshqalar. Lekin men bugun sizga ko'rsatmoqchi bo'lganim (sana, haftaning kuni va vaqti haqida ma'lumot beradi) - bu Internetda joylashgan NTP (Tarmoq vaqti protokoli). Ushbu videoda biz sana va vaqt ma'lumotlarini Internetda olamiz va ma'lumotlarni displeyda ko'rsatamiz.

1 -qadam: Namoyish

O'rnatish
O'rnatish

2 -qadam: yig'ish

3 -qadam: O'rnatish - Jadval

O'rnatish - Jadval
O'rnatish - Jadval

4 -qadam: Adafruit GFX kutubxonasi

Adafruit GFX kutubxonasi
Adafruit GFX kutubxonasi

Arduino IDE-da Sketch-> Kutubxonani qo'shish-> Kutubxonalarni boshqarish-ga o'ting.

Adafruit GFX kutubxonasini o'rnating

5 -qadam: Adafruit ST7735 kutubxonasi

Adafruit ST7735 kutubxonasi
Adafruit ST7735 kutubxonasi

Arduino IDE-da Sketch-> Kutubxonani qo'shish-> Kutubxonalarni boshqarish-ga o'ting.

Adafruit ST7735 -ni o'rnating

6 -qadam: NTPClient kutubxonasi

NTPClient kutubxonasi
NTPClient kutubxonasi

Https://github.com/taranais/NTPClient-ga o'ting va taranais tomonidan o'zgartirilgan NTPClient kutubxonasini yuklab oling.

Jildni oching va C: / Users / Documents / Arduino / kutubxonalariga qo'ying

7 -qadam: ESP32_NTP.ino

O'z ichiga oladi va aniqlanadi

#include #include // Biblioteca NTPClient modificada #include // Socket UDP #include // Display #include // Display #include // Pinos do display #deine DISPLAY_DC 12 // A0 #define DISPLAY_CS 13 // CS #DISPLAY_MOSI 14 ni aniqlang // SDA #define DISPLAY_CLK 27 // SCK #define DISPLAY_RST 0 // Fuso Horário, hech qanday vaqtni ko'rmayapman, Braziliya int timeZone = -2; // Strukturaviy tizimning tuzilishi Sana {int dayOfWeek; int kuni; int oy; int yil; int soatlari; int daqiqa; int soniyalar; }; // UDP ulagichi Wi -Fi ulanishi uchun javobgardir; // NTPClient ntpClient (udp, // soket udp "0.br.pool.ntp.org", // URL manzili NTP vaqt zonasi*3600, // GMT 0 uchun javob beradi). 60000); // Intervalo entre verificações online // Nomes dos dias da semana char* dayOfWeekNames = {"Yakshanba", "Dushanba", "Seshanba", "Chorshanba", "Payshanba", "Juma", "Shanba"}}; // Aloqa javoblari Alofruit_ST7735 displeyi = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Sozlash

void setup () {Serial.begin (115200); setupDisplay (); ulanish Wi -Fi (); o'rnatishNTP (); // 0 ta xTaskCreatePinnedToCore (wifiConnectionTask, // "wifiConnectionTask", // 10000 nomlari, // TAMANHO da xotira disponível (so'zlar bilan) NULL parametri, 2 -sonli parametrlar nol emas, balki 2 -sonli parametrlar uchun emas., // Priorityade NULL, // Ta'rif uchun hech qanday aniqlik yo'q)); // asosiy yadro}

NNT ni sozlash

void setupNTP () {// NTP mijozining ntpClient.begin () ma'lumotlari; // Espera pelo primeiro onlayn yangilanishi Serial.println ("Birinchi yangilanish kutilmoqda"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); kechikish (500); } Serial.println (); Serial.println ("Birinchi yangilash yakunlandi"); }

WifiConnectionTask

// wifiConnectionTask (void* parametri) {bir vaqtda (rost) {// Wi -Fi tarmog'iga ulanish, agar (WiFi.status ()! WL_CONNECTED) {// konvektorli aloqa Wi -Fi (); } // 100 ta Shomilni kechiktirish vTaskDelay (100); }}

Wi -Fi ulanish

void connectWiFi () {Serial.println ("Ulanish"); // Wi -Fi WiFi.begin ("SSID", "12345678") ni tanlang; // Espera enquanto não estiver conectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kechikish (500); } Serial.println (); Serial.print ("Ulangan"); Serial.println (WiFi. SSID ()); }

O'rnatish Displeyi

void setupDisplay () {display.initR (INITR_BLACKTAB); // Displeyni ko'rsatish.setRotation (3); // Rotaciona display.setTextSize (2); // Matnni ko'rsatish.fillScreen (ST77XX_BLACK); // Oldindan ko'rsatish.setCursor (0, 0); // Coloca yoki kursor kelmaydi ekran.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (noto'g'ri); // Nau pula linha avtomatlashtirilgan}

Loop

void loop () {// Recupera os dados sobre a data a horário Sana sana = getDate (); // Reset yoki kursorni display.setCursor (0, 0); // Exibe os dados display display.printf (" %s / n / n %s / n / n %02d/ %02d/ %d / n / n %02d: %02d: %02d", WiFi. SSID ().c_str (), dayOfWeekNames [date.dayOfWeek], sana.day, sana.oy, sana.yil, sana.soatlar, sana.minutlar, sana.sekundlar); kechikish (100); }

GetDate

Sana getDate () {// Ma'lumotlarni qayta tiklash mijozning NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a struct Sana sanasi; sscanf (strDate, "%d-%d-%dT%d:%d:%dZ", & date.year, & date.month, & date.day, & date.hours, & date.minutes, & date.seconds); // 0 dan 6 gacha, domingo date.dayOfWeek = ntpClient.getDay (); qaytish sanasi; }

8 -qadam: fayllar

Fayllarni yuklab oling

INO

PDF

Tavsiya: