O NTP (Network Time Protocol) é o protocolo que permite a sincronização do relógio do circuito com a internet. Mantendo
a data e a hora sempre atualizadas em tempo real.
Um circuito com a data e a hora sempre atualizadas, principalmente para projetos IoT (Internet das Coisas), é muito importante.
No ESP32 utilizaremos uma atualização da biblioteca NTPClient, que inclui a função getFormattedDate(), com a conversão do Epoch Time para Data e Hora atuais.
O exemplo mostra através da comunicação serial o retorno dos valores de data e hora atualizados via internet.
Referências:
https://ntp.br/ntp.php
https://pt.wikipedia.org/wiki/Network_Time_Protocol
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | /*--------------------------------------------------------- Programa : DATA/HORA - NTP Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 25/04/2021 ---------------------------------------------------------*/ #include <NTPClient.h> //https://github.com/taranais/NTPClient #include <WiFi.h> const char ssid[] = "REDE_WIFI"; const char password[] = "PASSWORD"; WiFiUDP ntpUDP; NTPClient ntp(ntpUDP); void setup() { Serial.begin(115200); WiFi.begin(ssid, password); Serial.print("Conectando no WiFi.."); while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.print("."); } Serial.println("\nConectado!\n"); ntp.begin(); //GMT em segundos // +1 = 3600 // +8 = 28800 // -1 = -3600 // -3 = -10800 (BRASIL) ntp.setTimeOffset(-10800); } void loop() { if (ntp.update()) { Serial.print("DATA/HORA: "); Serial.println(ntp.getFormattedDate()); Serial.print("HORARIO: "); Serial.println(ntp.getFormattedTime()); Serial.print("HORA: "); Serial.println(ntp.getHours()); Serial.print("MINUTOS: "); Serial.println(ntp.getMinutes()); Serial.print("SEGUNDOS: "); Serial.println(ntp.getSeconds()); Serial.print("DIA DA SEMANA (0=domingo): "); Serial.println(ntp.getDay()); Serial.print("EPOCH TIME (Segundos desde 01/01/1970): "); Serial.println(ntp.getEpochTime()); Serial.println(); } else { Serial.println("!Erro ao atualizar NTP!\n"); } delay(10000); } |
ntp.getFormattedDate() está dando erro
ResponderExcluirBom dia! A biblioteca NTPClient padrão não possui a getFormattedDate(). Conforme escrevi na postagem, utilizei a NTPClient modificada [ https://github.com/taranais/NTPClient ].
ExcluirA diferença entre elas é somente a inclusão da getFormattedDate().
Abraços!