Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Bëni kohën tuaj të llogarisë! Kjo është një temë e diskutuar shpesh midis pajtimtarëve të mi, dhe për çfarë arsye? Për shkak të faktit të thjeshtë dhe të domosdoshëm që kur bëni një regjistrues të të dhënave, dhe për gjithçka që përfshin automatizimin, keni nevojë për kohën e duhur! Dhe ka disa mënyra për të matur kohën: ora me bateri, RTC (Ora në kohë reale), ndër të tjera. Por ai që dua t'ju tregoj sot (i cili informon datën, ditën e javës dhe orën) është NTP (Protokolli i Kohes së Rrjetit), i cili është online. Në këtë video, ne do të marrim informacionin e datës dhe orës në internet dhe do të tregojmë informacionin në ekran.
Hapi 1: Demonstrim
Hapi 2: Montimi
Hapi 3: Kuvendi - Tabela
Hapi 4: Biblioteka Adafruit GFX
Në Arduino IDE, shkoni te Sketch-> Include Library-> Manage Bibliotekat …
Instaloni Bibliotekën Adafruit GFX
Hapi 5: Biblioteka Adafruit ST7735
Në Arduino IDE, shkoni te Sketch-> Include Library-> Manage Bibliotekat …
Instaloni Adafruit ST7735
Hapi 6: Biblioteka NTPClient
Shkoni te https://github.com/taranais/NTPClient dhe shkarkoni bibliotekën NTPClient të modifikuar nga taranais.
Zbërtheni dhe vendoseni dosjen në bibliotekat C: / Users / Documents / Arduino
Hapi 7: ESP32_NTP.ino
Përfshin dhe përcaktojnë
#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, nuk ka hororio de verão de Brasilia int timeZone = -2; // Struct com os dados do dia e hora struct Data {int dayOfWeek; int ditë; muaji int; viti int; orë int; int minuta; sekonda int; }; // Foleja e UDP -së që përdor një libër për rikuperimin e një sistemi të ri WiFiUDP udp; // Përgjigja e objektivit për rikuperimin e dosjeve në NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL për shërbimin e NTP timeZone*3600, // Deslocamento do horário em relacão ao GMT 0 60000); // Intervalo entre verificações online // Nomes dos dias da semana char* dayOfWeekNames = {"E Diel", "E Hënë", "E Martë", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"}; // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);
Konfigurimi
void setup () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Funksioni që do të kryejë "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULam parametër, N22, // 2, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}
SetupNTP
void setupNTP () {// Inicializa ose klienti NTP ntpClient.begin (); // Espera pelo Primeiro përditësim online Serial.println ("Duke pritur përditësimin e parë"); ndërsa (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); vonesë (500); } Serial.println (); Serial.println ("Përditësimi i parë i plotë"); }
WifiConnectionTask
// Tarefa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask (pavlefshme* param) {ndërsa (e vërtetë) {// Shiko një WiFi që nuk ka lidhje nëse (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Vonesa e 100 rriqrave vTaskDelay (100); }}
ConnectWiFi
void connectWiFi () {Serial.println ("Lidhja"); // Troque pelo nome e senha da sua rede WiFi WiFi.begin ("SSID", "12345678"); // Espera enquanto não estiver conectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vonesë (500); } Serial.println (); Serial.print ("I lidhur me"); Serial.println (WiFi. SSID ()); }
SetupDisplay
void setupDisplay () {display.initR (INITR_BLACKTAB); // Inicializa o display display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho do texto display.fillScreen (ST77XX_BLACK); // Preenche com a cor preta display.setCursor (0, 0); // Coloca ose kursori pa ekran.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}
Lak
void loop () {// Recupera os dados sobre a data e horário Data data = getDate (); // Reseta ose shfaqja e kursorit.setCursor (0, 0); // Exibe os dados pa ekran.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); vonesa (100); }
GetDate
Data getDate () {// Recupera os dados de data dhe hororio usando ose klientit NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a struct Data e datës; sscanf (strDate, "%d-%d-%dT%d:%d:%dZ", & date.year, & date.month, & date.day, & date.hours, & date.minutes, & date.seconds); // Dia da semana nga 0 në 6, dërgo 0 në datën.dayOfWeek = ntpClient.getDay (); data e kthimit; }
Hapi 8: Skedarët
Shkarkoni skedarët
INO