INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Laat u tyd tel! Dit is 'n onderwerp wat gereeld onder my intekenare bespreek word, en om watter rede? Vanweë die eenvoudige en onontbeerlike feit dat u die regte tyd nodig het as u 'n datalogger maak, en vir alles wat outomatisering behels. En daar is verskillende maniere om tyd te meet: onder meer klok met battery, RTC (Real Time Clock). Maar die een wat ek u vandag wil wys (wat datum, dag van die week en tyd inlig) is die NTP (Network Time Protocol), wat aanlyn is. In hierdie video sal ons die datum- en tydinligting aanlyn opspoor en die inligting op die skerm wys.
Stap 1: Demonstrasie
Stap 2: Montering
Stap 3: Samestelling - Tabel
Stap 4: Adafruit GFX -biblioteek
Gaan in die Arduino IDE na Skets-> Sluit biblioteek in-> Beheer biblioteke …
Installeer Adafruit GFX Library
Stap 5: Adafruit ST7735 -biblioteek
Gaan in die Arduino IDE na Skets-> Sluit biblioteek in-> Beheer biblioteke …
Installeer Adafruit ST7735
Stap 6: NTPClient -biblioteek
Gaan na https://github.com/taranais/NTPClient en laai die taranais-aangepaste NTPClient-biblioteek af.
Pak die rits uit en plaas die vouer in C: / Users / Documents / Arduino / biblioteke
Stap 7: ESP32_NTP.ino
Sluit in en definieer
#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; // Struktureer as ons dit wil sê en dateer die datum {int dayOfWeek; int dag; int maand; int jaar; int ure; int minute; int sekondes; }; // Socket UDP kan 'n gratis gebruik maak van 'n herstel van 'n horlosie oor WiFiUDP; // Verantwoordelike terugvoer na NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL to 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 = {"Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"}; // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);
Stel op
ongeldige opstelling () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Função que será executada "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (by WORDs) NULL, // Não vamos passer nenhum param, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Nommero do core}
SetupNTP
ongeldige opstellingNTP () {// Inisieer of kliënt NTP ntpClient.begin (); // Espera pelo primeiro opdatering aanlyn Serial.println ("Wag vir eerste opdatering"); terwyl (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); vertraging (500); } Serial.println (); Serial.println ("Eerste opdatering voltooi"); }
WifiConnectionTask
// Tarifa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask (void* param) {while (true) {// Sien 'n WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Vertraging van 100 bosluise vTaskDelay (100); }}
ConnectWiFi
void connectWiFi () {Serial.println ("Verbind"); // Ons kan WiFi WiFi.begin ("SSID", "12345678") gebruik; // Espera enquanto não estiver conectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vertraging (500); } Serial.println (); Serial.print ("gekoppel aan"); Serial.println (WiFi. SSID ()); }
SetupDisplay
void setupDisplay () {display.initR (INITR_BLACKTAB); // Inisieer o display display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho kan teks vertoon.fillScreen (ST77XX_BLACK); // Preenche com a cor preta display.setCursor (0, 0); // Coloca o cursor no começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (vals); // Não pula linha automaticamente}
Lus
void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Stel die wyser vertoon.setCursor (0, 0) op; // Ons kan geen vertoning 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); vertraging (100); }
GetDate
Datum getDate () {// Herstel data wat ons kan gebruik en die kliënt NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passas os dados da string for a struct Datum datum; 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, stuur 0 of domingo date.dayOfWeek = ntpClient.getDay (); keerdatum; }
Stap 8: lêers
Laai die lêers af
EK NEE