Satura rādītājs:

Netērējiet laiku: izmantojiet NTP !: 8 soļi
Netērējiet laiku: izmantojiet NTP !: 8 soļi

Video: Netērējiet laiku: izmantojiet NTP !: 8 soļi

Video: Netērējiet laiku: izmantojiet NTP !: 8 soļi
Video: Active Directory Essentials: Navigating the Object Database for IT Pros 2024, Novembris
Anonim
Image
Image

Novērtējiet savu laiku! Šī ir mana abonentu bieži apspriesta tēma, un kāda iemesla dēļ? Sakarā ar vienkāršo un neaizstājamo faktu, ka, veidojot datu reģistratoru, un visam, kas saistīts ar automatizāciju, jums ir nepieciešams pareizais laiks! Ir arī vairāki laika mērīšanas veidi: pulkstenis ar akumulatoru, RTC (reālā laika pulkstenis). Bet tas, ko es vēlos jums parādīt šodien (kas informē par datumu, nedēļas dienu un laiku), ir NTP (tīkla laika protokols), kas ir tiešsaistē. Šajā videoklipā mēs izgūsim informāciju par datumu un laiku tiešsaistē un parādīsim informāciju displejā.

1. solis: demonstrācija

Montāža
Montāža

2. solis: montāža

3. solis: salikšana - tabula

Montāža - galds
Montāža - galds

4. darbība. Adafruit GFX bibliotēka

Adafruit GFX bibliotēka
Adafruit GFX bibliotēka

Arduino IDE dodieties uz Skice-> Iekļaut bibliotēku-> Pārvaldīt bibliotēkas …

Instalējiet Adafruit GFX bibliotēku

5. darbība: bibliotēka Adafruit ST7735

Adafruit ST7735 bibliotēka
Adafruit ST7735 bibliotēka

Arduino IDE dodieties uz Skice-> Iekļaut bibliotēku-> Pārvaldīt bibliotēkas …

Instalējiet Adafruit ST7735

6. darbība: NTPClient bibliotēka

NTPClient bibliotēka
NTPClient bibliotēka

Dodieties uz vietni https://github.com/taranais/NTPClient un lejupielādējiet taranais modificēto NTPClient bibliotēku.

Izsaiņojiet un ievietojiet mapi bibliotēkās C: / Users / Documents / Arduino

7. darbība: ESP32_NTP.ino

Ietver un definē

#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; // Struktūra com os dados do dia e hora structure Datums {int dayOfWeek; int dienā; int mēnesī; int gads; int stundas; int minūtes; int sekundes; }; // Socket UDP que a lib utiliza para recuperar dados sobre o horário WiFiUDP udp; // Objektīva atbilde uz rekuperatoru, piemēram, horrorio 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 = {"svētdiena", "pirmdiena", "otrdiena", "trešdiena", "ceturtdiena", "piektdiena", "sestdiena"}; // Objeto atbildes līmeņa pelo displejs Adafruit_ST7735 displejs = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Uzstādīt

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 varo pass, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}

SetupNTP

void setupNTP () {// Inicializa vai klienta NTP ntpClient.begin (); // Espera pelo primeiro update online Serial.println ("Gaida pirmo atjauninājumu"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); kavēšanās (500); } Sērijas.println (); Serial.println ("Pirmais atjauninājums pabeigts"); }

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 (); } // Kavēšanās ar 100 ērcēm vTaskDelay (100); }}

Savienojiet Wi -Fi

void connectWiFi () {Serial.println ("Savienojums"); // 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 ("."); kavēšanās (500); } Sērijas.println (); Serial.print ("Savienots ar"); 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 vai kursors no começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}

Cilpa

void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Reset vai kursora displejs.setCursor (0, 0); // Exibe os dados nav displeja displeja.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); kavēšanās (100); }

GetDate

Datums getDate () {// Atgūstiet datus, izmantojot datus un lietojiet klienta NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a structure Datuma datums; 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 (); atgriešanās datums; }

8. darbība: faili

Lejupielādējiet failus

ES NĒ

PDF

Ieteicams: