Turinys:

Negaiškite laiko: naudokite NTP !: 8 žingsniai
Negaiškite laiko: naudokite NTP !: 8 žingsniai

Video: Negaiškite laiko: naudokite NTP !: 8 žingsniai

Video: Negaiškite laiko: naudokite NTP !: 8 žingsniai
Video: Active Directory Essentials: Navigating the Object Database for IT Pros 2024, Lapkritis
Anonim
Image
Image

Skaičiuok savo laiką! Tai dažnai aptariama tema tarp mano prenumeratorių ir dėl kokios priežasties? Dėl paprasto ir būtino fakto, kad kurdami duomenų registratorių ir viską, kas susiję su automatizavimu, jums reikia tinkamo laiko! Ir yra keli laiko matavimo būdai: laikrodis su baterija, RTC (realaus laiko laikrodis) ir kt. Tačiau tą, kurį šiandien noriu jums parodyti (nurodo datą, savaitės dieną ir laiką), yra NTP (tinklo laiko protokolas), kuris yra internete. Šiame vaizdo įraše mes nuskaitysime datos ir laiko informaciją internete ir parodysime informaciją ekrane.

1 žingsnis: demonstracija

Surinkimas
Surinkimas

2 žingsnis: Surinkimas

3 žingsnis: Surinkimas - stalas

Surinkimas - stalas
Surinkimas - stalas

4 žingsnis: „Adafruit GFX“biblioteka

„Adafruit GFX“biblioteka
„Adafruit GFX“biblioteka

„Arduino IDE“eikite į Eskizas-> Įtraukti biblioteką-> Tvarkyti bibliotekas …

Įdiekite „Adafruit GFX“biblioteką

5 veiksmas: „Adafruit ST7735“biblioteka

Adafruit ST7735 biblioteka
Adafruit ST7735 biblioteka

„Arduino IDE“eikite į Eskizas-> Įtraukti biblioteką-> Tvarkyti bibliotekas …

Įdiekite „Adafruit ST7735“

6 veiksmas: NTPClient biblioteka

NTPClient biblioteka
NTPClient biblioteka

Eikite į https://github.com/taranais/NTPClient ir atsisiųskite taranais pakeistą NTPClient biblioteką.

Išpakuokite ir įdėkite aplanką į C: / Users / Documents / Arduino / bibliotekas

7 veiksmas: ESP32_NTP.ino

Apima ir apibrėžia

#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 structure“Data {int dayOfWeek; int diena; int mėnuo; int metai; int valandos; int minutes; int sekundės; }; // Socket UDP que a lib utiliza para recuperar dados sobre o horário WiFiUDP udp; // Objekto atsakas į rekuperatorių, kad būtų galima valdyti NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL serverio 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 = {"Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"}; // Objektinis atsakas į pelės ekraną Adafruit_ST7735 ekranas = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Sąranka

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}

SąrankaNTP

void setupNTP () {// Inicializa arba kliento NTP ntpClient.begin (); // Espera pelo primeiro update online Serial.println ("Laukiama pirmojo atnaujinimo"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); vėlavimas (500); } Serial.println (); Serial.println („Pirmasis atnaujinimas baigtas“); }

„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 (); } // Delay de 100 erkių vTaskDelay (100); }}

„ConnectWiFi“

void connectWiFi () {Serial.println („Prisijungimas“); // 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 ("."); vėlavimas (500); } Serial.println (); Serial.print ("Prisijungta"); 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); // Spalva arba žymeklis be ekrano. SetTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}

Kilpa

void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Atstatyti arba žymeklio rodymą.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); vėlavimas (100); }

„GetDate“

Data getDate () {// Atkurti duomenis iš duomenų ir išnaudoti kliento NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a structure 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 (); grįžimo data; }

8 žingsnis: failai

Atsisiųskite failus

AŠ NE

PDF

Rekomenduojamas: