Índice:
- Etapa 1: Coisas que você precisa
- Etapa 2: conexões
- Etapa 3: Baixar bibliotecas
- Etapa 4: O que é NTP
- Etapa 5: Parte de codificação
- Etapa 6: obtendo data e hora
Vídeo: Relógio da Internet: Exibir data e hora com um OLED usando ESP8266 NodeMCU com protocolo NTP: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Olá pessoal, neste instructables vamos construir um relógio de internet que vai pegar o tempo da internet então este projeto não vai precisar de nenhum RTC para rodar, só vai precisar de uma conexão de internet funcionando
E para este projeto você precisa de um esp8266 que terá um wi-fi para obter acesso à internet e um display para exibir a hora nele e esp8266 buscará o tempo da internet usando o protocolo NTP, ntp significa protocolo de tempo de rede, então basicamente existem servidores ntp na web que são usados para sincronizar os relógios dos computadores e usaremos esses servidores para obter o tempo em nosso projeto.
Etapa 1: Coisas que você precisa
para este projeto, você precisará das seguintes coisas:
Esp8266 / nodemcu
Oled ssd1306 0,96"
Fios de ligação
Tábua de pão
Cabo USB
Etapa 2: conexões
Este display OLED de 4 pinos se comunica com o módulo ESP8266 usando o protocolo I2C, abaixo estão o diagrama de circuito e a tabela de conexões para conectar os pinos I2C OLED com NodeMCU para exibir o tempo da Internet.
Etapa 3: Baixar bibliotecas
Certifique-se de ter baixado as bibliotecas SD1306 em seu ide Arduino conforme mostrado na imagem e certifique-se de que você Adafruit GFX library também, se não, então instale essas duas bibliotecas.
Em seu Arduino IDE, vá para o gerenciador de bibliotecas e pesquise NTP e apenas baixe a biblioteca cliente NTP conforme eu baixei, consulte a imagem para obter mais ajuda.
Etapa 4: O que é NTP
O NTP é um dos protocolos de rede da Internet (IP) mais antigos para a sincronização de relógios entre redes de computadores. Ele foi projetado por David L. Mills, da University of Delaware, em 1981. Este protocolo pode ser usado para sincronizar muitas redes para o Tempo Universal Coordenado (UTC) em poucos milissegundos. UTC é o principal padrão de tempo pelo qual o mundo regula o relógio e a hora. UTC não muda e varia para diferentes localizações geográficas. O NTP usa o UTC como referência de tempo e fornece tempo preciso e sincronizado na Internet.
O NTP funciona em um modelo cliente-servidor hierárquico. Top model tem relógios de referência conhecidos como “stratum0” como relógios atômicos, ondas de rádio, GPS, GSM que recebe o tempo do satélite. Os servidores que recebem a hora do stratum0 são chamados de “stratum1” e os servidores que recebem a hora do stratum1 são chamados de “stratum2” e assim por diante. Isso continua e a precisão do tempo diminui após cada estágio. O NTP seleciona automaticamente o melhor de várias fontes de tempo disponíveis para sincronizar, o que o torna um protocolo tolerante a falhas. Então, aqui neste projeto, estamos obtendo o tempo do servidor NTP usando ESP8266 NodeMCU e exibindo-o no display OLED. Este mesmo tipo de relógio de Internet é construído usando ESP32 no tutorial anterior.
Etapa 5: Parte de codificação
Para solicitar a data e a hora, inicialize o cliente de hora com o endereço dos servidores NTP. Para melhor precisão, escolha o endereço dos servidores NTP próximos à sua área geográfica. Aqui usamos “pool.ntp.org” que fornece servidores de todo o mundo. Se você deseja escolher servidores da Ásia, pode usar “asia.pool.ntp.org”. timeClient também obtém a diferença de horário UTC em milissegundos do seu fuso horário. Por exemplo, o deslocamento UTC para a Índia é +5: 30, portanto, convertemos esse deslocamento em milissegundos, que é igual a 5 * 60 * 60 + 30 * 60 = 19800.
Área. Diferença de horário UTC (horas e minutos). Ajuste de horário UTC (segundos)
ÍNDIA +5: 30 19800
LONDRES 0:00. 0
NOVA YORK -5: 00 -18000
Copie o código a seguir e insira seu wifi e senha no código e insira a diferença de horário no código e, em seguida, carregue-o em seus painéis esp8266.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // fornece rotinas Wi-Fi específicas do ESP8266 que estamos chamando para nos conectar à rede #include "WiFiUdp.h" // lida com o envio e recebimento de pacotes UDP
#include "SPI.h" // SPI para interface OLED com NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // largura do display OLED, em pixels
#define SCREEN_HEIGHT 64 // altura do display OLED, em pixels
# define OLED_RESET -1
Display Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
constchar * ssid = "yourwifissid";
const char * password = "yourwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"};
String date_time; // Você pode especificar o pool do servidor de horário e o deslocamento (em segundos, // pode ser alterado posteriormente com setTimeOffset ()). Além disso, você pode especificar o // intervalo de atualização (em milissegundos, pode ser alterado usando setUpdateInterval ()).
void setup ()
{
Serial.begin (115200);
WiFi.begin (ssid, senha);
enquanto (WiFi.status ()! = WL_CONNECTED)
{
atraso (500);
Serial.print (".");
}
if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("SSD1306 alocação falhou"));
para(;;); // Não continue, faça um loop para sempre
}
display.clearDisplay ();
display.setTextSize (2); // Desenhe texto em escala 2X
display.setTextColor (WHITE);
display.setCursor (5, 2);
display.println ("BEM-VINDO A");
display.println ("instructables");
display.println ("Projeto");
display.display ();
atraso (3000);
timeClient.begin ();
}
void loop ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Desenhe texto em escala 2X
display.setTextColor (BLUE);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
if (hh> 12)
{
hh = hh-12;
display.print (hh);
display.print (":");
display.print (mm);
display.print (":");
display.print (ss);
display.println ("PM");
}
outro
{
display.print (hh);
display.print (":");
display.print (mm);
display.print (":");
display.print (ss);
display.println ("AM");
}
dia interno = timeClient.getDay ();
display.println ("'" + arr_days [dia] + "'");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
String data = date_time.substring (0, index_date);
Serial.println (data);
display.println (data);
display.display ();
// Mostra o texto inicial}
Etapa 6: obtendo data e hora
se você conectou tudo corretamente e carregou o código corretamente, então você poderá ver seu relógio ntp rodando no display oled como o meu rodando no display oled. Consulte a imagem para saída.
Recomendado:
ESP8266 OLED - Obter data e hora da Internet: 8 etapas
ESP8266 OLED - Obter data e hora da Internet: Neste tutorial, aprenderemos como obter a data e hora do servidor NIST TIME usando ESP8266 OLED e Visuino, assista a um vídeo de demonstração
Relógio digital de hora da rede usando o ESP8266: 4 etapas (com imagens)
Relógio digital de horário de rede usando o ESP8266: Aprendemos como construir um pequeno relógio digital bonito que se comunica com servidores NTP e exibe o horário da rede ou da Internet. Usamos o WeMos D1 mini para conectar a uma rede WiFi, obter o tempo NTP e exibi-lo em um módulo OLED. O vídeo acima t
Como publicar dados ESP32 com carimbo de data / hora NTP na nuvem IoT: 5 etapas
Como publicar dados ESP32 com carimbo de data / hora NTP na nuvem IoT: Em muitos aplicativos, os usuários precisam enviar seus dados junto com o carimbo de data / hora local dos valores a serem enviados na carga útil para a nuvem IoT AskSensors. O formato do carimbo de data / hora é UNIX Epoch time: o número de milissegundos que se passaram desde Janu
ESP8266 Network Clock sem qualquer RTC - Nodemcu NTP Clock Sem RTC - PROJETO DE RELÓGIO DE INTERNET: 4 etapas
ESP8266 Network Clock sem qualquer RTC | Nodemcu NTP Clock Sem RTC | PROJETO DE RELÓGIO DE INTERNET: No projeto estarei fazendo um projeto de relógio sem RTC, será retirado um tempo de internet usando wi-fi e será exibido no display st7735
Relógio com controle remoto infravermelho para configurações de data / hora: 5 etapas
Relógio com controle remoto infravermelho para configurações de hora / data: Este é um relógio simples feito com componentes disponíveis. O microcontrolador usado é um STM32F030F4P6 barato. O display é um LCD 16x2 com mochila I2C (PCF8574). O circuito do relógio pode ser construído usando pequenas placas de prototipagem e um TSSOP