Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Võtke oma aeg arvesse! See on minu tellijate seas sageli arutatud teema ja mis põhjusel? Tänu lihtsale ja hädavajalikule tõsiasjale, et kui teete andmekogujat ja kõike, mis hõlmab automatiseerimist, vajate õiget aega! Ja aja mõõtmiseks on mitmeid viise: muuhulgas akuga kell, RTC (reaalajas kell). Kuid see, mida ma tahan teile täna näidata (mis teavitab kuupäeva, nädalapäeva ja kellaaega), on võrgus olev NTP (Network Time Protocol). Selles videos toome veebist välja kuupäeva ja kellaaja teabe ning kuvame selle teabe ekraanil.
1. samm: demonstratsioon
2. samm: kokkupanek
3. samm: kokkupanek - tabel
Samm: Adafruit GFX raamatukogu
Avage Arduino IDE-s visand-> Kaasa raamatukogu-> Halda raamatukogusid…
Installige Adafruit GFX raamatukogu
Samm: raamatukogu Adafruit ST7735
Avage Arduino IDE-s visand-> Kaasa raamatukogu-> Halda raamatukogusid…
Installige Adafruit ST7735
6. samm: NTPClient Library
Minge aadressile https://github.com/taranais/NTPClient ja laadige alla taranais-modifitseeritud NTPClient raamatukogu.
Pakkige lahti ja pange kaust C: / Users / Documents / Arduino / teekidesse
Samm 7: ESP32_NTP.ino
Sisaldab ja määratleb
#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; // Struktuurikomponendid do dia e hora structure Kuupäev {int dayOfWeek; int päev; int kuu; int aasta; int tundi; int minutit; int sekundit; }; // Socket UDP que a lib utiliza para recuperar dados sobre o horário WiFiUDP udp; // Objekti vastus rekuperaatori jaoks, mis sobib horrorio 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 = {"pühapäev", "esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev"}; // Objekti vastus tasapinnalisele ekraanile Adafruit_ST7735 kuva = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);
Seadistamine
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 või kliendi NTP ntpClient.begin (); // Espera pelo primeiro update online Serial.println ("Ootan esimest värskendust"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); viivitus (500); } Serial.println (); Serial.println ("Esimene värskendus on lõpule viidud"); }
WifiConnectionTask
// Tarefa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask (void* param) {while (true) {// Se a WiFi não está conactada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // viivitus 100 puugiga vTaskDelay (100); }}
Ühendage WiFi
void connectWiFi () {Serial.println ("Ühendamine"); // 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 ("."); viivitus (500); } Serial.println (); Serial.print ("Ühendatud"); Serial.println (WiFi. SSID ()); }
SetupDisplay
void setupDisplay () {display.initR (INITR_BLACKTAB); // Inicializa või kuva display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho do texto display.fillScreen (ST77XX_BLACK); // Preenche on korrektne ekraan.setCursor (0, 0); // Coloca või kursor ei tule ekraanile.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}
Loop
void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Reset või kursori kuva.setCursor (0, 0); // Exibe os dados ei kuva kuvarit.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); viivitus (100); }
GetDate
Kuupäev getDate () {// Andmete taastamine ja horisontaalne kasutamine või kliendi NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a structure Kuupäeva kuupäev; 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 (); tagastamise kuupäev; }
8. samm: failid
Laadige failid alla
INO