Indholdsfortegnelse:

Spild ikke din tid: Brug NTP !: 8 trin
Spild ikke din tid: Brug NTP !: 8 trin

Video: Spild ikke din tid: Brug NTP !: 8 trin

Video: Spild ikke din tid: Brug NTP !: 8 trin
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, November
Anonim
Image
Image

Få din tid til at tælle! Dette er et ofte diskuteret emne blandt mine abonnenter, og af hvilken grund? På grund af den enkle og uundværlige kendsgerning, at når du laver en datalogger og for alt, der involverer automatisering, har du brug for det korrekte tidspunkt! Og der er flere måder at måle tid på: ur med batteri, RTC (Real Time Clock), blandt andre. Men den, jeg vil vise dig i dag (som oplyser dato, ugedag og tid) er NTP (Network Time Protocol), som er online. I denne video henter vi oplysninger om dato og klokkeslæt online og viser oplysningerne på displayet.

Trin 1: Demonstration

montage
montage

Trin 2: Montering

Trin 3: Montering - tabel

Montering - Bord
Montering - Bord

Trin 4: Adafruit GFX -bibliotek

Adafruit GFX -bibliotek
Adafruit GFX -bibliotek

I Arduino IDE skal du gå til Skitse-> Inkluder bibliotek-> Administrer biblioteker …

Installer Adafruit GFX -bibliotek

Trin 5: Adafruit ST7735 bibliotek

Adafruit ST7735 bibliotek
Adafruit ST7735 bibliotek

I Arduino IDE skal du gå til Skitse-> Inkluder bibliotek-> Administrer biblioteker …

Installer Adafruit ST7735

Trin 6: NTPClient -bibliotek

NTPClient -bibliotek
NTPClient -bibliotek

Gå til https://github.com/taranais/NTPClient, og download det taranais-modificerede NTPClient-bibliotek.

Pak den ud, og læg den i C: / Users / Documents / Arduino / biblioteker

Trin 7: ESP32_NTP.ino

Inkluderer og definerer

#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; int dag; int måned; int år; int timer; int minutter; int sekunder; }; // Socket UDP kan bruges til at genoprette en ny version af WiFiUDP udp; // Ansvarlig for genoprettelse af en ny NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL til server 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 = {"søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"}; // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Opsætning

ugyldig opsætning () {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 (em WORDs) NULL, // Não vamos passer nenhum param, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}

OpsætningNTP

void setupNTP () {// Initiativ til klient NTP ntpClient.begin (); // Espera pelo primeiro opdatering online Serial.println ("Venter på første opdatering"); mens (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); forsinkelse (500); } Serial.println (); Serial.println ("Første opdatering fuldført"); }

WifiConnectionTask

// Tarefa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask (void* param) {while (true) {// Se en WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Delay de 100 ticks vTaskDelay (100); }}

ConnectWiFi

void connectWiFi () {Serial.println ("Connecting"); // 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 ("."); forsinkelse (500); } Serial.println (); Serial.print ("Tilsluttet"); Serial.println (WiFi. SSID ()); }

SetupDisplay

void setupDisplay () {display.initR (INITR_BLACKTAB); // Inicializa o display display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho gør teksto 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 automaticamente}

Sløjfe

void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Nulstil o markør display.setCursor (0, 0); // Vis os ikke noget 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); forsinkelse (100); }

GetDate

Dato getDate () {// Recupera os dados de data e horário usando o client NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passas os dados da string para a struct Dato dato; 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 (); Retur dato; }

Trin 8: Filer

Download filerne

INO

PDF

Anbefalede: