Índice:

Não perca seu tempo: use o NTP !: 8 etapas
Não perca seu tempo: use o NTP !: 8 etapas

Vídeo: Não perca seu tempo: use o NTP !: 8 etapas

Vídeo: Não perca seu tempo: use o NTP !: 8 etapas
Vídeo: Gestão de tempo e planejamento 2024, Julho
Anonim
Image
Image

Faça o seu tempo contar! Este é um tópico frequentemente discutido entre meus assinantes, e por que motivo? Pelo simples e imprescindível fato de que quando você faz um datalogger, e para tudo que envolve automação, você precisa da hora certa! E existem várias formas de medir o tempo: relógio com bateria, RTC (Real Time Clock), entre outros. Mas o que eu quero mostrar hoje (que informa data, dia da semana e hora) é o NTP (Network Time Protocol), que está online. Neste vídeo, recuperaremos as informações de data e hora online e mostraremos as informações na tela.

Etapa 1: Demonstração

conjunto
conjunto

Etapa 2: Montagem

Etapa 3: Montagem - Mesa

Montagem - Mesa
Montagem - Mesa

Etapa 4: Biblioteca Adafruit GFX

Biblioteca Adafruit GFX
Biblioteca Adafruit GFX

No IDE Arduino, vá para Sketch-> Incluir Biblioteca-> Gerenciar Bibliotecas …

Instale a biblioteca Adafruit GFX

Etapa 5: Biblioteca Adafruit ST7735

Biblioteca Adafruit ST7735
Biblioteca Adafruit ST7735

No IDE Arduino, vá para Sketch-> Incluir Biblioteca-> Gerenciar Bibliotecas …

Instale Adafruit ST7735

Etapa 6: Biblioteca NTPClient

Biblioteca NTPClient
Biblioteca NTPClient

Acesse https://github.com/taranais/NTPClient e baixe a biblioteca NTPClient modificada por taranais.

Descompacte e coloque a pasta em C: / Usuários / Documentos / Arduino / bibliotecas

Etapa 7: ESP32_NTP.ino

Inclui e define

#include #include // Biblioteca NTPClient modificada #include // Socket UDP #include // Exibir #include // Exibir #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 de verão de Brasília int timeZone = -2; // Struct com os dados do dia e hora struct Date {int dayOfWeek; dia interno; mês int; ano int; horas int; minutos int; segundos inteiros; }; // Socket UDP que a lib utiliza para recuperar dados sobre o horário WiFiUDP udp; // Objeto responsável por recuperar dados sobre horário 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 = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"}; // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Configurar

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

SetupNTP

void setupNTP () {// Inicializa o cliente NTP ntpClient.begin (); // Espera pelo primeiro atualização online Serial.println ("Aguardando a primeira atualização"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); atraso (500); } Serial.println (); Serial.println ("Primeira atualização concluída"); }

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 (); } // Atraso de 100 ticks vTaskDelay (100); }}

ConnectWiFi

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 ("."); atraso (500); } Serial.println (); Serial.print ("Conectado a"); 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 o cursor no começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}

Ciclo

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

GetDate

Date getDate () {// Recupera os dados de dados e horário usando o cliente NTP char * strDate = (char *) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para 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 semana de 0 a 6, sendo 0 o domingo date.dayOfWeek = ntpClient.getDay (); data de retorno; }

Etapa 8: Arquivos

Baixe os arquivos

EU NÃO

PDF

Recomendado: