Tabla de contenido:

No pierda su tiempo: ¡use NTP !: 8 pasos
No pierda su tiempo: ¡use NTP !: 8 pasos

Video: No pierda su tiempo: ¡use NTP !: 8 pasos

Video: No pierda su tiempo: ¡use NTP !: 8 pasos
Video: NetTime: Sincronizando el reloj de Sistemas Windows con un Servidor NTP 2024, Noviembre
Anonim
Image
Image

¡Haz que tu tiempo cuente! Este es un tema que se discute con frecuencia entre mis suscriptores, ¿y por qué motivo? ¡Debido al hecho simple e indispensable de que cuando se hace un registrador de datos, y para todo lo relacionado con la automatización, se necesita la hora correcta! Y hay varias formas de medir el tiempo: reloj con batería, RTC (Real Time Clock), entre otras. Pero el que quiero mostrarles hoy (que informa la fecha, el día de la semana y la hora) es el NTP (Network Time Protocol), que está en línea. En este video, recuperaremos la información de fecha y hora en línea y mostraremos la información en la pantalla.

Paso 1: demostración

Montaje
Montaje

Paso 2: Montaje

Paso 3: Montaje - Mesa

Montaje - Mesa
Montaje - Mesa

Paso 4: Biblioteca Adafruit GFX

Biblioteca Adafruit GFX
Biblioteca Adafruit GFX

En el IDE de Arduino, vaya a Sketch-> Incluir biblioteca-> Administrar bibliotecas …

Instalar la biblioteca Adafruit GFX

Paso 5: Biblioteca Adafruit ST7735

Biblioteca Adafruit ST7735
Biblioteca Adafruit ST7735

En el IDE de Arduino, vaya a Sketch-> Incluir biblioteca-> Administrar bibliotecas …

Instalar Adafruit ST7735

Paso 6: Biblioteca NTPClient

Biblioteca NTPClient
Biblioteca NTPClient

Vaya a https://github.com/taranais/NTPClient y descargue la biblioteca NTPClient modificada por taranais.

Descomprima y coloque la carpeta en C: / Users / Documents / Arduino / libraries

Paso 7: ESP32_NTP.ino

Incluye y define

#include #include // Biblioteca NTPClient modificada #include // Socket UDP #include // Display #include // Display #include // Los pinos muestran #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 año; int horas; int minutos; int segundos; }; // Socket UDP que una lib utiliza para recuperar datos sobre el horário WiFiUDP udp; // Objeto responsável para recuperar datos sobre horário NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL del servidor 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 = {"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"}; // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Configuración

configuración vacía () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Função que será ejecutada "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULL, // No vamos a passar nenhum parametro 2, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número del núcleo}

ConfiguraciónNTP

void setupNTP () {// Inicializa o cliente NTP ntpClient.begin (); // Espera pelo primeiro update online Serial.println ("Espera primera actualización"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); retraso (500); } Serial.println (); Serial.println ("Primera actualización completa"); }

WifiConnectionTask

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

ConectarWiFi

void connectWiFi () {Serial.println ("Conectando"); // 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 ("."); retraso (500); } Serial.println (); Serial.print ("Conectado a"); Serial.println (WiFi. SSID ()); }

Configuración Pantalla

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 o cursor no começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automáticamente}

Círculo

void loop () {// Recupera los datos sobre los datos y el horário Date date = getDate (); // Restaure o 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); retraso (100); }

Obtener la fecha

Date getDate () {// Recupera los datos de los datos y el horário usando el cliente NTP char * strDate = (char *) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para una estructura 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 (); Fecha de regreso; }

Paso 8: archivos

Descarga los archivos

INO

PDF

Recomendado: