Bom dia pessoal,
Já estou batalhando com meu wemos mini, estou gostando da plaquinha, consegui montar um webserver, acendi um led hehe, no entanto a maioria dos meu projetos necessitam de um RTC, e a função que mais me interessou nesses esp's é o RTC interno e a capacidade de realizar conexão NTP.
No entanto os exemplos de NTP que consegui encontrar na NET sempre dão erro, eu encontrei um que é recente no GItHub é esse Lib aqui a ultima atualização é do ddia 20/08
https://github.com/gmag11/NtpClient
Mas infelizmente a minha IDE 1.6.6 não reconheceu, dando o seguinte erro abaixo, mas instalei certinho como todas as outras libs
arduino-1.6.6-windows\arduino-1.6.6\libraries\NtpClient
exit status 1
Erro compilando.
Nesse exemplo do Ivan Grokhotkov esta com uma falha no código ele mesmo removeu do GitHub dele devido a falha
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiF... Código
exit status 1
'sendNTPpacket' was not declared in this scope
Tags:
Esclarecendo:
Network Time Protocol (NTP) time server
Difícil hein ! Se o Ivan não conseguiu ainda, é porque não é facil não ! Ele que adaptou a IDE do Arduino para o ESP8266.
Jã tentou com a IDE 1.6.11 ? A mais recente ?
Murta, acho que consegui alguma coisa depois de muito apanhar, dei uma "arrumada" no código do Ivan Grokhotkov, agora esta funcionando, para imprimir a hora local.
Esse negocio de Unix time é meio chato pq ele conta o tempo a partir de 1970 em segundos, então é possivel saber o dia e hora exatos através de algumas formulas extensas considerando horario de verão fuso, ano bissexto, mas de inicio corrigi com o fuso local, o que já da para brincar com alguns futuros projetos hehe.
O problema não era IDE, mas sim uma questão de lógica, estava na sequência errada algumas funções.
Em anexo o exemplo de NTP que funcionou no meu ESP8266
Fiz uma nova catação na net, verifiquei uma erro no meu código corrigi, agora ele corrige corretamente o fuso, minha gambiarra não havia dado certo. melhorei um pouco a estrutura para ficar o mais simples possível.
Mas como faço para ele manter a contagem durante as sincronizações com o RTC interno?, considerando que este código apenas puxa a informação, pois a internet sempre oscila ou cai, não da para depender 100% da rede. Desconsiderando a falta de energia e claro.
Estou em dúvida ! Afinal o módulo ESP8266 tem um relógio interno RTC ou não?
No forum ESP8266 informa que não tem :
http://www.esp8266.com/viewtopic.php?f=8&t=4289
ESP8266 doesn't have an internal RTC.
E no forum da Espressif informa que tem um RTC :
http://bbs.espressif.com/viewtopic.php?t=107&sid=349a772d3a2bbd...
Qual a sua conclusão ?
Parece que realmente o ESP8266 tem um contador RTC interno. Mas como todos os RTC internos não são precisos.
http://bbs.espressif.com/viewtopic.php?f=65&t=2304&p=7386&a...
(RTC counter is too innacurate and drifts in time or with temperature)
Recomendo que use um RTC externo DS3231 ou outro...
Esp8266 com RTC DS3231 - é mais preciso e é compatível com os niveis lógicos de 3,3V.
(Não use DS1307 pois é impreciso)
http://www.esp8266-projects.com/2015/04/mailbag-arrival-ds3231-i2c-...
http://www.esp8266.com/viewtopic.php?f=40&t=6349&hilit=ds3231
http://bbs.espressif.com/viewtopic.php?f=65&t=2304&p=7386&a...
http://bbs.espressif.com/viewtopic.php?f=7&t=956&p=3258&...
Pretendo encomendar alguns destes em breve, eu gostei daqueles para rasberry pi parecem bem práticos.
Só para constar, não é o DS1307 que é impreciso, mas sim o cristal, notem que é o cristal que precisa ter uma boa qualidade.
Vou exemplificar, eu ganhei um relógio digital, de uma companhia de transporte rodoviário, quando estive na Espanha, eu gostava muito do relógio, mas ele adiantava, e bastante, em alguns dias já se notavam os minutos querendo correr mais do que deveria, kkk.
Depois de anos assim, pois hoje em dia, temos relógio em qualquer lugar, resolvi trocar o cristal, e retirei o cristal de uma placa mãe de computador da marca ASUS, que operava com um Pentium 4.
Como resultado, ficou perfeitamente sincronizado com o celular, já a várias semanas.
Então, antes de saírem atirando no pobre coitado do DS1307, que na verdade é só um contador com um oscilador, experimentem usar um bom cristal, como por exemplo, o cristal de uma placa mãe de computador, e de marca boa.
pois é, ja ouvi falar sobre isso, mas nunca tive oportunidade de achar uma placa para arrancar o cristal.
Então, eu não sei na sua região como é, mas por aqui as assistências técnicas de informática mandam para o lixo (reciclagem) então talvez dando uma passada em alguma oficina de manutenção de computador possa conseguir as placas.
Boa sorte!
Tem sim o RTC, e é usado para funções como SLEEP.
Mas como eu já disse, os RTCs internos não são precisos.
Se for usar um RTC externo (ou interno) , capture o Date/Time do relógio do servidor NTP e acerte o rélógio RTC com esses dados. Qual a dúvida ?
Então, não sei fazer rsrs
tentei fazer assim mas acho que não é melhor forma, mas mesmo assim da erro
fica assim na serial
Unix time = 1472563715
hora local:00:00:14
sending NTP packet...
(...) trecho do codigo
unsigned long epoch = secsSince1900 - seventyYears;// obtem valor em Unix time
Serial.println(epoch);
// imprime hora local
int h, m, s;// hora, minuto, segundos
h = (epoch % 86400L) / 3600; // converte unix em hora (86400 equals secs per day)
m = (epoch % 3600) / 60; // converte unix em minuto (3600 equals secs per minute)
s = (epoch % 60); // converte unix em segundo
int seg = h, min = m, hor = s; // recupera o valor obtido do NTP
char hora[30];// concatena a impressão da hora
static unsigned long ult_tempo = 0;
int tempo = millis();
if (tempo - ult_tempo >= 1000) {
ult_tempo = tempo;
seg++;
}
if (seg >= 60)
{
seg = 0;
min++;
}
if (min >= 60) {
min = 0;
hor++;
}
if (hor >= 24)
{
hor = 0;
min = 0;
}
// wait ten seconds before asking for the time again
sprintf( hora, "%02d:%02d:%02d", hor, min, seg);// concatena os valores h,m,s
Serial.print("hora local:");
Serial.println (hora);
delay(1000);
}
(...) trecho do codigo
segue o código completo no pastebin
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por