Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03
Obter a hora correta é essencial se você deseja manter um registro de dados. Existem várias maneiras de obter o tempo de fontes na Internet.
Você pode perguntar por que não usar o ESP8266 para manter o tempo para você? Bem, você pode, ele tem seu próprio RTC (Real Time Clock) interno, mas o ESP8266 tem 3 frequências de clock operacionais diferentes - 52MHz quando inicializa, 80MHz durante a operação normal e 160MHz se potencializado. Se você precisa de uma cronometragem mais precisa, especialmente durante períodos mais longos, um RTC externo pode fornecer uma solução. Esses módulos também possuem uma bateria reserva em caso de perda de energia. Um RTC não é extremamente preciso, pois conta o tempo decorrido desde que foi definido e, embora possa servir para a maioria das aplicações, pode não ser bom o suficiente para manter o tempo crítico. É possível obter uma hora precisa de um servidor de hora SNTP a partir do qual o RTC pode ser atualizado em intervalos regulares, se necessário.
O Módulo DS1307 Tiny RTC I2C (acima) é um exemplo desses itens e pode ser comprado no Ebay e em outros fornecedores por menos de £ 2. Existem também outros, como o DS1302 e o DS3231, que funcionam de maneira semelhante e custam a partir de 99p.
O módulo DS1307 usa uma interface I2C e para um ESP-01 deve ser conectado como:
Vcc - 3,3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA e SCL podem ser conectados a qualquer um dos pinos de E / S nos ESP8266 maiores (altere o código de acordo). Apenas os pinos do lado esquerdo precisam ser conectados neste módulo.
Etapa 1: Google Time
Existem muitos exemplos de como obter o tempo do Google e se parecer com isso. Ao executar o programa GoogleTime.lua, você obtém um resultado como este:
dofile ("GoogleTime.lua")> Horário: Sex, 15 de dezembro de 2017 11:19:45 GMT
O problema com este método é que você obtém a hora no formato de string e tem que dividir a string em seus bits individuais para horas, minutos, segundos, etc. O RTC aceita a hora em um formato especial, ou seja, carimbo de hora UNIX. Em termos leigos, este é o número de segundos decorridos desde quinta-feira, 1 de janeiro de 1970 até os dias e horas atuais. O UNIX Epoch (1970/01/01 00:00:00) é usado pela maioria dos sistemas operacionais de computador e o tempo decorrido é armazenado como um número assinado de 32 bits. Isso significa que esse sistema funcionará até 19 de janeiro de 2038, quando o número se tornará muito grande para ser armazenado dessa forma. Uma solução é armazenar o número como 64 bits, mas por enquanto o método de 32 bits será suficiente.
Para definir a hora como 9 de julho de 2015, 18:29:49 no RTC interno, você usaria esta linha de código:
rtctime.set (1436430589, 0)
Os 2 parâmetros são segundos e micro segundos.
Você pode encontrar mais informações lendo a documentação do NodeMCU.
Etapa 2: Servidores de tempo SNTP
O SNTP (Simple Network Time Protocol) é fornecido por muitas fontes na Internet e muitos países em todo o mundo têm esse serviço.
O programa SNTPTime2.lua define a hora no RTC interno. Você precisa ter os módulos rtctime e sntp em sua construção ao atualizar seu ESP8266. O programa obtém a hora do servidor em segundos e microssegundos e define o RTC interno com rtctime.set (sec, usec).
O programa então exibe a data e a hora em diferentes formatos.
Existem muitos servidores SNTP em todo o mundo e alguns são os seguintes:
- sntp.sync ({"216.239.35.0"},
- sntp.sync ({"0.uk.pool.ntp.org", "0.uk.pool.ntp.org"},
- sntp.sync ({"3.uk.pool.ntp.org", "143.210.16.201"},
- sntp.sync ({"0.uk.pool.ntp.org", "1.uk.pool.ntp.org", "3.uk.pool.ntp.org"},
Todas as linhas de código acima podem ser substituídas no programa SNTPTime2.lua.
Existem mais servidores SNTP nos endereços abaixo que podem ser usados no programa.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
O Google também fornece servidores de horário nestes endereços:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Você precisa se lembrar de obter a hora do país em que está ou pode ter que modificá-la para os diferentes fusos horários mundiais. Além disso, alguns países têm horário de verão, então você pode ter que lidar com isso também.
Etapa 3: Obtendo a hora do módulo RTC
O programa GetRTCTime.lua lê a hora do RTC interno.
A primeira parte lê a hora e a exibe em segundos e microssegundos.
A segunda parte o converte em um formato mais legível por humanos.
ao chamar tm = rtctime.epoch2cal (rtctime.get ()), ele retorna:
- ano - 1970 ~ 2038
- mon - mês 1 ~ 12 no ano atual
- dia - dia 1 ~ 31 no mês atual
- hora
- min
- s
- dia - dia 1 ~ 366 no ano atual
- wday - dia 1 ~ 7 na semana atual (domingo é 1)
Cada item pode ser acessado como tm ["dia"], tm ["ano"] …
Você pode encontrar mais informações lendo a documentação do NodeMCU.
DisplaySNTPtime.lua é uma forma mais elaborada de mostrar a data e a hora em um display OLED LCD 128 x 64, pois é facilmente conectado e pode ser usado com esses programas.
Etapa 4: Memória de usuário RTC
Um pequeno desvio do tempo é que o RTC interno no ESP8266 tem endereços de memória de 128 x 32 bits que podem ser acessados pelo programador. Eles são especialmente úteis porque podem sobreviver ao ciclo de sono profundo do ESP8266. Cabe ao programador controlar seu uso e garantir que não sejam sobrescritos acidentalmente.
Incluí RTCmem.lua, um programa simples que demonstra seu uso. Você precisa ter o módulo rtcmem em sua construção.
Etapa 5: Módulos RTC externos
Os módulos RTC externos se conectam ao ESP8266 por meio da interface I2C, que usa apenas dois pinos de E / S e, portanto, funciona com o ESP-01 e também com a maioria dos outros dispositivos ESP8266.
O endereço do módulo RTC é 0x68 e é acessado usando os comandos I2C normais. Porém, há algo a se ter em mente, os dados nos registradores RTC são armazenados no formato BCD (base 16), portanto seus programas têm que lidar com isso. A hora e a data são armazenadas em 7 registros dentro do RTC. No RTC interno, as conversões BCD são feitas pelo módulo rtctime.
SetExtRTC.lua converte os dados em BCD e define a hora.
ReadExtRTC.lua lê os dados de tempo e os imprime. NOTA: os dados são impressos em hexadecimal.
Não gastei muito tempo formatando a exibição, pois você pode ter suas próprias ideias sobre o que deseja fazer com a data e a hora. Este é o motor básico em sua forma mais simples, para que você possa desenvolvê-lo ainda mais, se desejar.
Etapa 6: registro de dados
Se você olhar atentamente para os módulos RTC, você notará que eles têm um AT24C32 EEPROM IC ou similar embutido neles, ou você pode usar uma placa 24C256 como acima. A maioria desses CIs EEPROM tem pin out semelhantes como acima. Eles vêm com várias quantidades de armazenamento, mas todos são acessados da mesma maneira. Como o AT24C32 já está soldado na placa, ele pode ser usado diretamente do I2C do RTC externo.
Se você tiver apenas um IC 24C256 ou similar, você pode configurá-lo em uma placa de pão, conectar A1, A2 e A3 a Gnd, Vcc a 3,3V e SDA E SCL a I2C, WP pode ser deixado flutuando. Alguns CIs EEPROM operam apenas a 5 V, portanto, verifique primeiro a folha de dados relevante.
ByteWR.lua grava 1 byte de dados na localização de memória 0x00 da EEPROM e os lê de volta.
Desiderata.lua escreve algumas linhas de um texto famoso para a EEPROM.
eeRead.lua lê os dados da EEPROM e os imprime.
NOTA: Esses programas também devem funcionar com outras placas EEPROM.
Etapa 7: Conclusão
Tentei mostrar como o RTC e a EEPROM funcionam para o registro de dados. Este é apenas um ponto de partida para você desenvolver ainda mais. Você pode conectar vários dispositivos ao barramento I2C, como sensores de luz, sensores de pressão barométrica, sensores de temperatura e umidade e registrar os dados no EEPROM.
Recomendado:
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
Configurando o DS3231 RTC (Real Time Clock) com precisão, rapidez e automatização usando Java (+ -1s): 3 etapas
Configurando o DS3231 RTC (Real Time Clock) com precisão, rápido e automatizado usando Java (+ -1s): Este Instructable vai mostrar como configurar a hora em um DS3231 Real Time Clock usando um Arduino e um pequeno aplicativo Java que usa a conexão serial do Arduino. A lógica básica deste programa: 1. O Arduino envia uma solicitação serial
DS1307 RTC de relógio em tempo real com Arduino: 4 etapas
DS1307 Real Time Clock RTC com Arduino: Neste tutorial, aprenderemos sobre Real Time Clock (RTC) e como Arduino & Real Time Clock IC DS1307 são colocados juntos como um dispositivo de cronometragem. O Real Time Clock (RTC) é usado para monitorar o tempo e manter um calendário
Relógio baseado em Arduino usando o módulo DS1307 Real Time Clock (RTC) e 0,96: 5 etapas
Relógio baseado em Arduino usando o módulo DS1307 Real Time Clock (RTC) & 0.96: Oi pessoal neste tutorial, veremos como fazer um relógio de trabalho usando um módulo de relógio em tempo real DS1307 & Visores OLED. Portanto, leremos a hora no módulo de relógio DS1307. E imprima na tela OLED
Fazendo um relógio com M5stick C usando Arduino IDE - Relógio em tempo real RTC com M5stack M5stick-C: 4 etapas
Fazendo um relógio com M5stick C usando Arduino IDE | RTC Real Time Clock with M5stack M5stick-C: Olá pessoal, nestes instructables vamos aprender como fazer um relógio com a placa de desenvolvimento m5stick-C do m5stack usando Arduino IDE. Portanto, o m5stick exibirá data, hora & semana do mês na tela