Trabalhar com o ESP32 ou qualquer outro tempo de microcontrolador é muito importante, pois o cronômetro embutido não é tão preciso para que possamos usar um Ntp Servidor para buscar tempo real e pode armazená -lo dentro de uma variável que pode ser usada posteriormente dentro do código ESP32.
O Network Time Protocol (NTP) usa o tempo universal coordenado (UTC) que sincroniza o relógio do sistema com grande precisão e precisão. Em redes menores, o NTP pode nos fornecer relógios tão precisos quanto 1 ms, enquanto redes maiores, como LAN (Rede de Área Local), pode dar precisão com dezenas de milissegundos pela Internet. O uso deste relógio preciso ESP32 pode executar instruções em um horário específico.
Este guia contém o seguinte conteúdo:
1: Introdução ao NTP (Network Time Protocol)
NTP é um acrônimo de NEtwork Time PRotocol é um padrão usado para sincronizar os dispositivos tempo com seu fuso horário. O Protocolo de Time da rede sincroniza o tempo de todos os dispositivos de rede com o UTC também conhecido como tempo universal coordenado.
O UTC é semelhante ao GMT (Greenwich Mean Time), mas não muda e permanece o mesmo em todo o mundo. A idéia principal por trás do uso do UTC é ler o tempo do Ntp Servidor e, aplicando o deslocamento do UTC, podemos obter horário local de acordo com nosso fuso horário.
2: Servidor NTP e configurações de tempo
Para ler o tempo do servidor NTP, precisamos declarar as seguintes variáveis dentro do código usando essas variáveis, podemos obter o tempo do servidor NTP.
1: servidor NTP
Vamos solicitar o tempo de piscina.ntp.org que contém dados de tempo em todo o mundo no servidor e qualquer um pode solicitar a hora local usando este pool. A seguir, alguns outros servidores que podemos acessar:
Área | Nome de anfitrião |
---|---|
Mundialmente | piscina.ntp.org |
Ásia | Ásia.piscina.ntp.org |
Europa | Europa.piscina.ntp.org |
América do Norte | América do Norte.piscina.ntp.org |
Oceânia | Oceânia.piscina.ntp.org |
América do Sul | América do Sul.piscina.ntp.org |
2: Offset GMT
O deslocamento do GMT descreve a diferença de horário nas horas entre o fuso horário que você está vivendo para o GMT. Por exemplo, se usarmos o fuso horário dos EUA, podemos defini -lo como UTC = -11: 00.
3: Offset de luz do dia
Aqui, o deslocamento da luz do dia é o tempo de economia do dia que geralmente é tomado como 1 hora. O horário de verão significa avançar o relógio 1 hora durante o verão e alterá -los novamente no inverno. Este comando geralmente é usado onde um fuso horário personalizado é usado e a regra de poupança do dia é aplicada.
Como cobrimos o básico do NTP Server agora, verificaremos como podemos enviar uma solicitação para o NTP Server e ler a hora local usando o ESP32 com o código IDE Arduino.
3: Imprimir em tempo real usando a função printlocaltime ()
O printlocaltime () função chamará o getLocalTime () função que envia a solicitação para o servidor NTP e armazena a data e hora de recebimento dentro do TimeInfo variável.
1: Código para imprimir em tempo real
Cole o código para NTP Server no Arduino IDE Editor. Conecte o ESP32 ao PC, selecione a porta COM e faça o upload do código.
#incluirO código começou incluindo a biblioteca Wi -Fi e Time. Wi-fi A biblioteca ajudará a conectar o ESP32 com uma rede enquanto tempo A biblioteca lidará com a sincronização do servidor NTP.
Depois disso, o SSID e a senha da rede à qual o ESP32 se conectará é definido. Substitua sua credencial de rede aqui. Depois disso, definimos Offset GMT como 18000 s que é (UTC+5 horas). Você pode substituir seu próprio fuso horário UTC aqui. Siga o link para obter o deslocamento do GMT para o seu fuso horário.
Além disso, o endereço do servidor NTP é especificado usando o comando:
const char* ntpServer = "Pool.ntp.org ";
Este comando seleciona automaticamente o servidor de tempo que irá pesquisar você. No entanto, também podemos definir um fuso horário usando os servidores NTP explicados no Servidor NTP seção.
No final, configuramos o ESP32 como cliente NTP e para obter data e hora. Para isso, usamos o configtime () função.
Por fim, usando o printlocaltime () Função, a data e hora atuais são impressas no monitor serial. Esta função contém uma estrutura de tempo tm que armazena todas as informações no TimeInfo variável.
Os seguintes comandos representam o TimeInfo estrutura.
Serial.println (& timeinfo, " %a, %b %d %y %h: %m: %s");
Cada estrutura de letra de tempo refere -se a uma informação específica:
Especificadores | Informação |
---|---|
%A | Dia de retorno da semana |
%B | Mês de retorno |
%d | Dia de retorno do mês |
%Y | Retornar o ano atual |
%H | Retorne a hora atual |
%M | Retorne minutos atuais |
%S | Retornar segundos atuais |
2: saída
Após o upload do código ESP32, se conectará com uma rede WiFi e enviará uma solicitação ao servidor NTP para receber a data e a hora atuais. A seguinte saída pode ser vista no monitor serial Arduino.
O horário atual no meu PC e ESP32 é correspondido.
Lemos com sucesso o tempo do servidor NTP usando o ESP32 como cliente.
Conclusão
O tempo é muito importante para aplicações como carimbo de hora e executar instruções em horários específicos para gerar saída. Os temporizadores embutidos não são tão precisos, para que possamos usar um servidor NTP para ler a hora e a data atuais. Este tempo pode ser armazenado dentro de uma variável para usar dentro do nosso código. Esta lição ajuda a obter um tempo preciso de qualquer fuso horário em todo o mundo usando o ESP32.