INHOUDSOPGAWE:

Moenie u tyd mors nie: gebruik NTP !: 8 stappe
Moenie u tyd mors nie: gebruik NTP !: 8 stappe

Video: Moenie u tyd mors nie: gebruik NTP !: 8 stappe

Video: Moenie u tyd mors nie: gebruik NTP !: 8 stappe
Video: dit sal kak wees 2024, Julie
Anonim
Image
Image

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

Vergadering
Vergadering

Stap 2: Montering

Stap 3: Samestelling - Tabel

Vergadering - Tabel
Vergadering - Tabel

Stap 4: Adafruit GFX -biblioteek

Adafruit GFX -biblioteek
Adafruit GFX -biblioteek

Gaan in die Arduino IDE na Skets-> Sluit biblioteek in-> Beheer biblioteke …

Installeer Adafruit GFX Library

Stap 5: Adafruit ST7735 -biblioteek

Adafruit ST7735 Biblioteek
Adafruit ST7735 Biblioteek

Gaan in die Arduino IDE na Skets-> Sluit biblioteek in-> Beheer biblioteke …

Installeer Adafruit ST7735

Stap 6: NTPClient -biblioteek

NTPClient -biblioteek
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

PDF

Aanbeveel: