Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Vaxtınızı sayın! Abunəçilərim arasında tez -tez müzakirə olunan bir mövzudur və hansı səbəbdən? Datalogger hazırladığınızda və avtomatlaşdırma ilə əlaqəli hər şey üçün düzgün vaxta ehtiyacınız olduğuna görə sadə və əvəzolunmaz faktlara görə! Zamanı ölçməyin bir neçə yolu var: batareyalı saat, RTC (Real Time Clock) və digərləri. Ancaq bu gün sizə göstərmək istədiyim (tarix, həftənin günü və saatı bildirən) onlayn olan NTP (Şəbəkə Saatı Protokolu). Bu videoda tarix və vaxt məlumatlarını onlayn olaraq alacağıq və məlumatları ekranda göstərəcəyik.
Addım 1: nümayiş
Addım 2: Quraşdırma
Addım 3: Montaj - Cədvəl
Addım 4: Adafruit GFX Kitabxanası
Arduino IDE-də, Sketch-> Kitabxanaya daxil et-> Kitabxanaları İdarə et-ə gedin.
Adafruit GFX Kitabxanasını quraşdırın
Addım 5: Adafruit ST7735 Kitabxanası
Arduino IDE-də, Sketch-> Kitabxanaya daxil et-> Kitabxanaları İdarə et-ə gedin.
Adafruit ST7735 quraşdırın
Addım 6: NTPClient Kitabxanası
Https://github.com/taranais/NTPClient saytına daxil olun və taranais tərəfindən dəyişdirilmiş NTPClient kitabxanasını yükləyin.
Qovluğu açın və C: / İstifadəçilər / Sənədlər / Arduino / kitabxanalarına qoyun
Addım 7: ESP32_NTP.ino
Daxildir və müəyyən edir
#include #include // Biblioteca NTPClient modificada #include // Socket UDP #include // Display #include // Display #include // Pinos do display #define DISPLAY_DC 12 // A0 #define DISPLAY_CS 13 // CS #define DISPLAY_MOSI 14 // SDA #define DISPLAY_CLK 27 // SCK #define DISPLAY_RST 0 // Fuso Horário, heç vaxt Braziliyada int timeZone = -2; // Struktur əlaqələr qurmaq Tarix {int dayOfWeek; int gün; int ay; int il; int saat; int dəqiqə; int saniyə; }; // Yuva UDP istifadə etmək üçün WiFiUDP istifadə etmək; // NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // NTP timeZone*3600 xidmət göstərən URL, // GMT 0 ilə əlaqə qurun) 60000); // İntervalo entre verificações online // Nomes dos dias da semana char* dayOfWeekNames = {"Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"}}; // Objeto cavab üçün pelo ekran Adafruit_ST7735 ekran = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);
Qurmaq
void setup () {Serial.begin (115200); setupDisplay (); əlaqəWiFi (); quraşdırmaNTP (); // Cria uma nova tarefa yoxdur 0 xTaskCreatePinnedToCore (wifiConnectionTask, // "wifiConnectionTask" funksiyası, // 10000, // Tamanho da memória disponível (em SÖZLƏR) NULL parametri, // Não v2, // prioritet NULL, // Təfərrüatlar üçün dəqiq məlumat yoxdur 0); // Nümer etmək əsas}
NNT qurmaq
boş quraşdırmaNTP () {// Müştəri NTP ntpClient.begin (); // Espera pelo primeiro onlayn yeniləmə Serial.println ("İlk yeniləməni gözləyir"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); gecikmə (500); } Serial.println (); Serial.println ("İlk Yeniləmə Tamamlandı"); }
WifiConnectionTask
// wifiConnectionTask (void* parametri) {bir vaxt (doğru) {// bir WiFi bağlantısı varsa (WiFi.status ()! WL_CONNECTED) {// əlaqə qurmaqWiFi (); } // Gecikmə 100 gənə vTaskDelay (100); }}
Wi -Fi bağlantısı
etibarsız connectWiFi () {Serial.println ("Bağlanır"); // WiFi WiFi.begin ("SSID", "12345678"); // Espera enquanto não estiver conectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); gecikmə (500); } Serial.println (); Serial.print ("Bağlandı"); Serial.println (WiFi. SSID ()); }
Quraşdırma Ekranı
void setupDisplay () {display.initR (INITR_BLACKTAB); // Display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho texto display.fillScreen (ST77XX_BLACK); // Preenche ilə əvvəlcədən display.setCursor (0, 0); // Coloca və ya imleci yox, ekran.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo əvvəldən display.setTextWrap (yanlış); // Não pula linha avtomatlaşdırma}
Döngə
void loop () {// Recupera os dados sobre a data and horário Tarix tarixi = getDate (); // Reset o kursor 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], date.day, date.month, date.year, date.hours, date.minutes, date.seconds); gecikmə (100); }
GetDate
Tarix getDate () {// Müştəri NTP -dən istifadə etmək üçün məlumatların geri qaytarılması char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Tarix tarixi; sscanf (strDate, "%d-%d-%dT%d:%d:%dZ", & date.year, & date.month, & date.day, & date.hours, & date.minutes, & date.seconds); // Dia da semana 0 a 6, sendo 0 o domingo date.dayOfWeek = ntpClient.getDay (); qaytarılma tarixi; }
Addım 8: Fayllar
Faylları yükləyin
MƏN YOX