Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Ota aikasi huomioon! Tämä on usein keskusteltu aihe tilaajieni keskuudessa, ja mistä syystä? Koska yksinkertainen ja välttämätön tosiasia on, että kun teet dataloggeria, ja kaikkeen automaatioon liittyvään, tarvitset oikean ajan! On myös useita tapoja mitata aikaa: muun muassa akkuinen kello, RTC (Real Time Clock). Mutta se, jonka haluan näyttää teille tänään (joka ilmoittaa päivämäärän, viikonpäivän ja ajan), on NTP (Network Time Protocol), joka on verkossa. Tästä videosta haemme päivämäärän ja kellonajan tiedot verkosta ja näytämme tiedot näytöllä.
Vaihe 1: Esittely
Vaihe 2: Kokoonpano
Vaihe 3: Kokoonpano - Taulukko
Vaihe 4: Adafruit GFX -kirjasto
Siirry Arduino IDE: ssä Sketch-> Include Library-> Manage Libraries…
Asenna Adafruit GFX -kirjasto
Vaihe 5: Adafruit ST7735 -kirjasto
Siirry Arduino IDE: ssä Sketch-> Include Library-> Manage Libraries…
Asenna Adafruit ST7735
Vaihe 6: NTPClient -kirjasto
Siirry osoitteeseen https://github.com/taranais/NTPClient ja lataa taranais-muokattu NTPClient-kirjasto.
Pura ja aseta kansio C: / Users / Documents / Arduino / -kirjastoihin
Vaihe 7: ESP32_NTP.ino
Sisältää ja määrittelee
#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, no caso horário de verão de Brasília int timeZone = -2; // Rakennekomponentit do dia e hora structure Päivämäärä {int dayOfWeek; int päivä; int kuukausi; int vuosi; int tuntia; int minuuttia; int sekuntia; }; // Socket UDP que a lib utiliza para recuperar dados sobre o horário WiFiUDP udp; // Objektivastaus talteenottimen avulla NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL do servwer 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 = {"Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai"}; // Objektivastaus pelonäyttö Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);
Perustaa
void setup () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Função que será executab "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULL, // Não vamos pass, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}
SetupNTP
void setupNTP () {// Inicializa tai asiakas NTP ntpClient.begin (); // Espera pelo primeiro update online Serial.println ("Odotetaan ensimmäistä päivitystä"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); viive (500); } Sarja.println (); Serial.println ("Ensimmäinen päivitys valmis"); }
WifiConnectionTask
// Tarefa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask (void* param) {while (true) {// Se a WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Viive 100 punkista vTaskDelay (100); }}
Yhdistä Wi -Fi
void connectWiFi () {Serial.println ("Yhdistäminen"); // 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 ("."); viive (500); } Sarja.println (); Serial.print ("Yhdistetty"); Serial.println (WiFi. SSID ()); }
SetupDisplay
void setupDisplay () {display.initR (INITR_BLACKTAB); // Näyttö tai näyttö display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho do texto display.fillScreen (ST77XX_BLACK); // Preenche com a cor preta display.setCursor (0, 0); // Coloca tai kohdistin ei tule näyttöä.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}
Silmukka
void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Nollaa tai osoittimen näyttö.setCursor (0, 0); // Exibe os dados no 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); viive (100); }
GetDate
Päivämäärä getDate () {// Recupera os dados de data e horário usando o client NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a structure Päivämäärä päivämäärä; sscanf (strDate, "%d-%d-%dT%d:%d:%dZ", & date.year, & date.month, & date.day, & date.hours, & date.minutes, & date.seconds); // Dia da semana de 0 a 6, sendo 0 o domingo date.dayOfWeek = ntpClient.getDay (); palautuspäivä; }
Vaihe 8: Tiedostot
Lataa tiedostot
INO