Índice:
- Etapa 1: Componentes necessários
- Etapa 2: Conexão do Relógio Arduino
- Etapa 3: Código para Arduino Clock com RTC
Vídeo: Relógio em tempo real com Arduino: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Neste projeto, faremos um relógio com a ajuda do módulo Arduino e RTC. Como sabemos, o Arduino não pode exibir a hora real, então usaremos o módulo RTC para exibir a hora certa no LCD. Leia todas as etapas com atenção, pois irá ajudá-lo muito a fazer o seu relógio funcionar.
O código DS3231 Arduino é como o código DS1307 e funciona com ambos os chips RTC.
O código do Arduino abaixo não utiliza nenhuma biblioteca para o DS3231 RTC, a biblioteca Wire é para a correspondência entre o Arduino e o DS3231 utilizando a convenção I2C.
Isso! Muitos engenheiros eletrônicos dependem dele para seus projetos baseados no tempo, mas o RTC não é totalmente confiável. É operado por bateria e deve ser substituído mais cedo ou mais tarde. Chegando aos projetos de IoT, ele ocupa valiosos pinos SPI (Interface Periférica Serial) e fica bagunçado com fios emaranhados. Solução…. Aqui vem nosso herói NTP (Network time protocol). O NTP é tão preciso, pois obtém o tempo da Internet. Vamos operar este protocolo usando um modo cliente-servidor. o processo é tão simples que nosso Nodemcu atua como um cliente e solicita um pacote NTP do servidor usando UDP. Em troca, o servidor envia um pacote ao cliente que analisa os dados. NTP é o protocolo de sincronização de horário universal. Agora vamos iluminar nossa estação de trabalho de laboratórios
Etapa 1: Componentes necessários
- Placa Arduino
- Placa DS3231 RTC
- Tela LCD 16x2
- 2 x botão de pressão
- Resistor variável de 10K ohm (ou potenciômetro)
- Resistor de 330 ohms
- Bateria de célula tipo moeda 3V
- Tábua de pão
- Fios de ligação
RTC mocule DS3231
O tempo é um sentido essencial exigido neste mundo acelerado de seres humanos. Em projeto em tempo real
Usamos RTC (relógio em tempo real A. K. A)
RTC Real-time-clock (RTC) é um circuito integrado (IC) que mantém o controle da hora atual. O RTC cuida do tempo em modo real. O RTC é geralmente encontrado em placas-mãe de computador e sistemas embarcados para exigir acesso oportuno.
Etapa 2: Conexão do Relógio Arduino
- Conecte o pino SCL ao módulo RTC ao Arduino A5
- Conecte o pino SDA ao módulo RTC ao Arduino A4
- Conecte VCC A 5v e GND A GND
- Conecte um botão de pressão ao pino 8
- Conecte outro botão de pressão ao pino 9
- Conecte o RS do LCD ao pino 2 do Arduino
- Conecte E do LCD ao pino 3 do Arduino
- Conecte o D7 do LCD ao pino 7 do Arduino
- Conecte o D6 do LCD ao pino 6 do Arduino
- Conecte o D5 do LCD ao pino 5 do Arduino
- Conecte o D4 do LCD ao pino 4 do Arduino
- Conecte VSS e K ao GND
- Conecte VDD e A ao 5v
- Conecte vo ao pino de saída do potenciômetro
Etapa 3: Código para Arduino Clock com RTC
O DS3231 funciona apenas com o formato BCD e para converter o BCD em decimal e vice-versa, usei as 2 linhas abaixo (exemplo para minuto): // Converter BCD para decimalminuto = (minuto >> 4) * 10 + (minuto & 0x0F);
// Converte decimal em BCDminute = ((minuto / 10) << 4) + (minuto% 10); void DS3231_display (): exibe a hora e o calendário, antes de exibir a hora e os dados do calendário são convertidos de BCD para o formato decimal.void blink_parameter ():
// Relógio e calendário em tempo real com botões definidos usando DS3231 e Arduino // inclui o código da biblioteca LCD #include // inclui o código da biblioteca Wire (necessário para dispositivos de protocolo I2C) #include // Conexões do módulo LCD (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // button1 está conectado ao pino 8 pinMode (9, INPUT_PULLUP); // o botão2 está conectado ao pino 9 // configura o número de colunas e linhas do LCD lcd.begin (16, 2); Wire.begin (); // Ingressar no barramento i2c} char Time = "TIME:::"; Calendário char = "DATA: / / 20"; byte i, segundo, minuto, hora, data, mês, ano; void DS3231_display () {// Converter BCD em segundo decimal = (segundo >> 4) * 10 + (segundo & 0x0F); minuto = (minuto >> 4) * 10 + (minuto & 0x0F); hora = (hora >> 4) * 10 + (hora & 0x0F); data = (data >> 4) * 10 + (data & 0x0F); mês = (mês >> 4) * 10 + (mês & 0x0F); ano = (ano >> 4) * 10 + (ano & 0x0F); // Tempo de conversão final [12] = segundo% 10 + 48; Tempo [11] = segundo / 10 + 48; Tempo [9] = minuto% 10 + 48; Tempo [8] = minuto / 10 + 48; Tempo [6] = hora% 10 + 48; Tempo [5] = hora / 10 + 48; Calendário [14] = ano% 10 + 48; Calendário [13] = ano / 10 + 48; Calendário [9] = mês% 10 + 48; Calendário [8] = mês / 10 + 48; Calendário [6] = data% 10 + 48; Calendário [5] = data / 10 + 48; lcd.setCursor (0, 0); lcd.print (Tempo); // Tempo de exibição lcd.setCursor (0, 1); lcd.print (calendário); // Exibir calendário} void blink_parameter () {byte j = 0; while (j 23) // Se horas> 23 ==> horas = 0 parâmetro = 0; if (i == 1 && parâmetro> 59) // Se minutos> 59 ==> minutos = 0 parâmetro = 0; if (i == 2 && parâmetro> 31) // Se data> 31 ==> data = 1 parâmetro = 1; if (i == 3 && parâmetro> 12) // Se mês> 12 ==> mês = 1 parâmetro = 1; if (i == 4 && parâmetro> 99) // Se ano> 99 ==> ano = 0 parâmetro = 0; sprintf (texto, "% 02u", parâmetro); lcd.setCursor (x, y); lcd.print (texto); atraso (200); // Aguarde 200ms} lcd.setCursor (x, y); lcd.print (""); // Mostra dois espaços blink_parameter (); sprintf (texto, "% 02u", parâmetro); lcd.setCursor (x, y); lcd.print (texto); blink_parameter (); if (! digitalRead (8)) {// Se o botão (pino # 8) for pressionado i ++; // Aumento 'i' para o próximo parâmetro parâmetro de retorno; // Retorna o valor do parâmetro e sai}}} void loop () {if (! DigitalRead (8)) {// Se o botão (pino # 8) for pressionado i = 0; hora = editar (5, 0, hora); minuto = editar (8, 0, minuto); data = editar (5, 1, data); mês = editar (8, 1, mês); ano = editar (13, 1, ano); // Converter decimal em minuto BCD = ((minuto / 10) << 4) + (minuto% 10); hora = ((hora / 10) << 4) + (hora% 10); data = ((data / 10) << 4) + (data% 10); mês = ((mês / 10) << 4) + (mês% 10); ano = ((ano / 10) << 4) + (ano% 10); // Fim da conversão // Grava dados no DS3231 RTC Wire.beginTransmission (0x68); // Inicia o protocolo I2C com o endereço DS3231 Wire.write (0); // Enviar endereço de registro Wire.write (0); // Reinicia os segundos e inicia o oscilador Wire.write (minuto); // Grava o minuto Wire.write (hora); // Grava a hora Wire.write (1); // Escreve o dia (não usado) Wire.write (date); // Grava a data Wire.write (mês); // Escreve o mês Wire.write (ano); // Grava o ano Wire.endTransmission (); // Pare a transmissão e libere o atraso do barramento I2C (200); // Aguarde 200ms} Wire.beginTransmission (0x68); // Inicia o protocolo I2C com o endereço DS3231 Wire.write (0); // Enviar endereço de registro Wire.endTransmission (false); // Reiniciar I2C Wire.requestFrom (0x68, 7); // Solicita 7 bytes do DS3231 e libera o barramento I2C no final da leitura second = Wire.read (); // Lê os segundos do registro 0 minuto = Wire.read (); // Lê minutos do registro 1 hora = Wire.read (); // Lê a hora do registro 2 Wire.read (); // Lê o dia do registro 3 (não usado) date = Wire.read (); // Lê a data do registro 4 meses = Wire.read (); // Lê o mês do registro 5 year = Wire.read (); // Lê o ano do registro 6 DS3231_display (); // Tempo de exibição e atraso de calendário (50); // Aguarde 50ms}
Recomendado:
Como usar um módulo de relógio em tempo real (DS3231): 5 etapas
Como usar um módulo de relógio em tempo real (DS3231): O DS3231 é um relógio em tempo real I2C (RTC) extremamente preciso e de baixo custo com um oscilador de cristal com compensação de temperatura (TCXO) e cristal integrados. O dispositivo incorpora uma entrada de bateria e mantém uma cronometragem precisa quando a alimentação principal do
Usando os módulos de relógio em tempo real DS1307 e DS3231 com o Arduino: 3 etapas
Usando os módulos de relógio em tempo real DS1307 e DS3231 com o Arduino: Continuamos recebendo solicitações sobre como usar os módulos de relógio em tempo real DS1307 e DS3231 com o Arduino de várias fontes - portanto, este é o primeiro de um tutorial de duas partes sobre como usá-los. Para este tutorial do Arduino, temos dois módulos de relógio em tempo real para nós
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
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
Como fazer relógio em tempo real usando Arduino e display TFT - Arduino Mega RTC com display TFT de 3,5 polegadas: 4 etapas
Como fazer relógio em tempo real usando Arduino e display TFT | Arduino Mega RTC com display TFT de 3,5 polegadas: Visite meu canal no Youtube. Introdução: - Neste post vou fazer “Relógio em tempo real“usando LCD touch TFT de 3,5 polegadas, Arduino Mega Módulo 2560 e DS3231 RTC… .Antes de começar… verifique o vídeo do meu canal no YouTube… Nota: - Se você estiver usando Arduin