Cuprins:

Nu vă pierdeți timpul: folosiți NTP !: 8 pași
Nu vă pierdeți timpul: folosiți NTP !: 8 pași

Video: Nu vă pierdeți timpul: folosiți NTP !: 8 pași

Video: Nu vă pierdeți timpul: folosiți NTP !: 8 pași
Video: Player_audio_si_mp3_gratuit_foarte_bun_media_monkey.flv 2024, Noiembrie
Anonim
Image
Image

Faceți-vă timpul să conteze! Acesta este un subiect frecvent discutat în rândul abonaților mei și din ce motiv? Datorită faptului simplu și indispensabil că atunci când creați un datalogger și pentru tot ceea ce implică automatizarea, aveți nevoie de ora corectă! Și există mai multe moduri de măsurare a timpului: ceas cu baterie, RTC (Real Time Clock), printre altele. Dar cel pe care vreau să vi-l arăt astăzi (care informează data, ziua săptămânii și ora) este NTP (Network Time Protocol), care este online. În acest videoclip, vom prelua informațiile despre dată și oră online și vom afișa informațiile pe ecran.

Pasul 1: demonstrație

Asamblare
Asamblare

Pasul 2: Asamblare

Pasul 3: Asamblare - Tabel

Asamblare - Masă
Asamblare - Masă

Pasul 4: Biblioteca Adafruit GFX

Biblioteca Adafruit GFX
Biblioteca Adafruit GFX

În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …

Instalați Biblioteca Adafruit GFX

Pasul 5: Biblioteca Adafruit ST7735

Biblioteca Adafruit ST7735
Biblioteca Adafruit ST7735

În IDE-ul Arduino, accesați Schiță-> Includeți bibliotecă-> Gestionați bibliotecile …

Instalați Adafruit ST7735

Pasul 6: Biblioteca NTPClient

Biblioteca NTPClient
Biblioteca NTPClient

Accesați https://github.com/taranais/NTPClient și descărcați biblioteca NTPClient modificată de taranais.

Dezarhivați și puneți folderul în bibliotecile C: / Users / Documents / Arduino

Pasul 7: ESP32_NTP.ino

Include și definește

#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; // Struct com os dados do dia e hora struct Date {int dayOfWeek; zi int; int luna; int an; orele int; minute int; secunde int; }; // Socket UDP care a lib utilizează pentru a recupera date despre orar WiFiUDP udp; // Obiecțiunea de recuperare a datelor recuperate asupra orarului NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL servire NTP timeZone * 3600, // Deslocamento do horario in relacão ao GMT 0 60000); // Intervalo între verificări online // Nomes dos dias da semana char * dayOfWeekNames = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Înființat

void setup () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Funcția care va fi executată "wifiConnectionTask", // Numele da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULL, // Não vamos passar nenhum parametro 2, // prioritate NULL, // Não precisamos de referência para a tarefa 0); // Número do core}

SetupNTP

void setupNTP () {// Inicializa o client NTP ntpClient.begin (); // Espera pelo primul update online Serial.println ("Se așteaptă prima actualizare"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); întârziere (500); } Serial.println (); Serial.println („Prima actualizare finalizată”); }

WifiConnectionTask

// Tarefa care verifica se a conexiune caiu e tenta reconectarvoid wifiConnectionTask (void * param) {while (true) {// Se a WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Întârziere de 100 de căpușe vTaskDelay (100); }}

ConnectWiFi

void connectWiFi () {Serial.println ("Conectare"); // 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 ("."); întârziere (500); } Serial.println (); Serial.print („Conectat la”); 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 o cursor no começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automat}

Buclă

void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Resetați cursorul display.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); întârziere (100); }

GetDate

Date getDate () {// Recupera os dados de data e horario folosind clientul NTP char * strDate = (char *) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a struct Date date; 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 (); data returului; }

Pasul 8: Fișiere

Descărcați fișierele

EU NU

PDF

Recomandat: