Índice:
- Etapa 1: Demonstração
- Etapa 2: Montagem
- Etapa 3: Montagem - Mesa
- Etapa 4: Biblioteca Adafruit GFX
- Etapa 5: Biblioteca Adafruit ST7735
- Etapa 6: Biblioteca NTPClient
- Etapa 7: ESP32_NTP.ino
- Etapa 8: Arquivos
Vídeo: Não perca seu tempo: use o NTP !: 8 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
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
Etapa 2: Montagem
Etapa 3: Montagem - Mesa
Etapa 4: Biblioteca Adafruit GFX
No IDE Arduino, vá para Sketch-> Incluir Biblioteca-> Gerenciar Bibliotecas …
Instale a biblioteca Adafruit GFX
Etapa 5: Biblioteca Adafruit ST7735
No IDE Arduino, vá para Sketch-> Incluir Biblioteca-> Gerenciar Bibliotecas …
Instale Adafruit ST7735
Etapa 6: 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
Recomendado:
Use botões de pressão no seu Magicbit [Magicblocks]: 5 etapas
Use botões de pressão no seu Magicbit [Magicblocks]: Este tutorial irá ensiná-lo a usar os botões de pressão no seu Magicbit usando Magicblocks. Estamos usando o magicbit como placa de desenvolvimento neste projeto que é baseado no ESP32. Portanto, qualquer placa de desenvolvimento ESP32 pode ser usada neste projeto
Use seu telefone como um segundo monitor: 5 etapas
Use seu telefone como um segundo monitor: todos nós já tivemos a experiência de trabalhar em casa. Isso nos dá o luxo de concluir trabalhos ou atribuições no conforto de nossas próprias casas. No entanto, todos nós queremos concluir essas tarefas da forma mais eficiente e produtiva possível, para que
Use a força e faça seu próprio sabre de luz (lâmina): 9 etapas (com fotos)
Use a força e faça seu próprio sabre de luz (lâmina): esta instrução é especificamente para fazer uma lâmina para um sabre de luz legado Ben Solo adquirido na Disneyland's Galaxy's Edge em Anaheim, CA, no entanto, etapas semelhantes podem ser executadas para fazer sua própria lâmina para um diferente sabre de luz. Acompanhe para
Não compre um módulo GSM, use o seu telefone antigo !: 6 etapas
Não compre um módulo GSM, use seu telefone antigo !: Recentemente, tenho feito muitos projetos sem fio, principalmente baseados em um módulo Bluetooth, mas desde então quero seguir em frente e começar a fazer meus projetos SMS ou Controle de chamada telefônica que é quase tão fácil com a ajuda de um módulo GSM
Use seu Mac OSX como um adaptador Wirelss para seu XBOX 360: 6 etapas
Use seu Mac OSX como um adaptador Wirelss para seu XBOX 360: Eu vi outro guia sobre como fazer isso aqui, mas estava terrivelmente errado e deixei de fora tantas coisas, então decidi fazer o meu próprio