Taula de continguts:

No perdeu el temps: utilitzeu NTP !: 8 passos
No perdeu el temps: utilitzeu NTP !: 8 passos

Vídeo: No perdeu el temps: utilitzeu NTP !: 8 passos

Vídeo: No perdeu el temps: utilitzeu NTP !: 8 passos
Vídeo: Time does not exist: Carlo Rovelli at TEDxLakeComo 2024, Setembre
Anonim
Image
Image

Feu que el vostre temps compti! Aquest és un tema que es discuteix sovint entre els meus subscriptors i per quin motiu? A causa del fet senzill i indispensable que quan feu un registre de dades i per a tot allò que impliqui automatització, necessiteu el temps correcte. I hi ha diverses maneres de mesurar el temps: rellotge amb bateria, RTC (Real Time Clock), entre d’altres. Però el que us vull mostrar avui (que informa de data, dia de la setmana i hora) és el NTP (Network Time Protocol), que està en línia. En aquest vídeo, recuperarem la informació de data i hora en línia i mostrarem la informació a la pantalla.

Pas 1: demostració

muntatge
muntatge

Pas 2: Muntatge

Pas 3: Muntatge - Taula

Muntatge - Taula
Muntatge - Taula

Pas 4: Biblioteca Adafruit GFX

Biblioteca AdFruit GFX
Biblioteca AdFruit GFX

A l'IDE Arduino, aneu a Sketch-> Inclou biblioteca-> Gestiona biblioteques …

Instal·leu la biblioteca Adafruit GFX

Pas 5: Biblioteca Adafruit ST7735

Biblioteca Adafruit ST7735
Biblioteca Adafruit ST7735

A l'IDE Arduino, aneu a Sketch-> Inclou biblioteca-> Gestiona biblioteques …

Instal·leu Adafruit ST7735

Pas 6: Biblioteca NTPClient

Biblioteca NTPClient
Biblioteca NTPClient

Aneu a https://github.com/taranais/NTPClient i descarregueu la biblioteca NTPClient modificada per taranais.

Descomprimiu i poseu la carpeta a les biblioteques C: / Users / Documents / Arduino

Pas 7: ESP32_NTP.ino

Inclou i defineix

#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 dia; int mes; int any; hores int; minuts int; segons segons; }; // Socket UDP que a lib utiliza para recuperar dados sobre o horario WiFiUDP udp; // Objeto responsável por recuperar dados sobre horario NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL del servei NTP timeZone * 3600, // Deslocamento do horário em relacão ao GMT 0 60000); // Intervalo entre verificações online // Nomes dos dias da week 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);

Configuració

configuració nul·la () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Funció que serà executada "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memòria disponível (em WORDs) NULL, // Não vamos passar nenhum parametro 2, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}

Configuració de NTP

void setupNTP () {// Inicialització del client NTP ntpClient.begin (); // Espera pelo primer update online Serial.println ("Esperant la primera actualització"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); retard (500); } Serial.println (); Serial.println ("Primera actualització completa"); }

WifiConnectionTask

// Tarefa que verification is a connection caiu e tenta reconectarvoid wifiConnectionTask (void * param) {while (true) {// Se a WiFi no està conectado if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Retard de 100 paparres vTaskDelay (100); }}

ConnectWiFi

void connectWiFi () {Serial.println ("Connexió"); // Troque pelo nome e senha da sua rede WiFi WiFi.begin ("SSID", "12345678"); // Espera enquanto no estiver connectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); retard (500); } Serial.println (); Serial.print ("Connectat a"); Serial.println (WiFi. SSID ()); }

Configuració de visualització

void setupDisplay () {display.initR (INITR_BLACKTAB); // Inicialitzar o mostrar display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho do text 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}

Bucle

void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Restableix el cursor 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); retard (100); }

GetDate

Data getDate () {// Recupera els dades de dades i horari usant el client NTP char * strDate = (char *) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string per 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 setmana de 0 a 6, sendo 0 o domingo date.dayOfWeek = ntpClient.getDay (); data de retorn; }

Pas 8: fitxers

Descarregueu els fitxers

INO

PDF

Recomanat: