Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
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
2 -qadam: yig'ish
3 -qadam: O'rnatish - Jadval
4 -qadam: 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
Arduino IDE-da Sketch-> Kutubxonani qo'shish-> Kutubxonalarni boshqarish-ga o'ting.
Adafruit ST7735 -ni o'rnating
6 -qadam: 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