Este relógio de tempo real baseado em Arduino é um relógio digital para exibir o tempo real usando um RTC IC DS1307 que funciona no protocolo I2C. Relógio em tempo real significa que funciona mesmo após queda de energia. Quando a alimentação é reconectada, ele exibe o tempo real independentemente da hora e da duração em que esteve desligado. Neste projeto de despertador Arduino, usamos um módulo LCD 16x2 para exibir a hora no formato - "horas, minutos, segundos, data, mês e ano". Uma opção de alarme também é adicionada e podemos definir a hora do alarme. Uma vez que o tempo do alarme é salvo na EEPROM interna do Arduino, ele permanece salvo mesmo após o reset ou falha elétrica. Relógios de tempo real são comumente usados em nossos computadores, casas, escritórios e dispositivos eletrônicos para mantê-los atualizados com tempo real.
O protocolo I2C é um método para conectar dois ou mais dispositivos usando dois fios a um único sistema e, portanto, esse protocolo também é chamado de protocolo de dois fios. Ele pode ser usado para comunicar 127 dispositivos a um único dispositivo ou processador. A maioria dos dispositivos I2C funciona na frequência de 100 KHz.
Etapas para gravação de dados mestre em escravo (modo de recebimento escravo)
- Envia a condição START para o escravo.
- Envia o endereço do escravo para o escravo.
- Envie o bit de gravação (0) para o escravo.
- Recebido bit ACK do escravo
- Envia o endereço das palavras para o escravo.
- Recebido bit ACK do escravo
- Envia dados para o escravo.
- Recebido bit ACK do escravo.
- E por último envia a condição STOP para o escravo.
Etapas para leitura de dados do escravo ao mestre (modo de transmissão escravo)
- Envia a condição START para o escravo.
- Envia o endereço do escravo para o escravo.
- Envie o bit de leitura (1) para o escravo.
- Recebido bit ACK do escravo
- Dados recebidos do escravo
- Recebido bit ACK do escravo.
- Envia a condição STOP para o escravo.
Para construir este relógio digital baseado em IC RTC DS1307 , usamos aqui o Arduino Pro Mini, mas você também pode usar qualquer outro modelo de Arduino, como Arduino Uno ou Arduino Nano. Junto com a placa Arduino, DS1307 RTC IC, usamos o módulo LCD 16x2 para exibir a hora e a data, um oscilador de cristal, regulador de tensão 7805, um buzzer e alguns transistores e resistores.
Diagrama de Circuito e Descrição
Neste circuito de relógio digital baseado em Arduino, usamos três componentes principais que são IC DS1307, Arduino Pro Mini Board e módulo LCD 16x2.
Aqui, o arduino é usado para ler o tempo de ds1307 e exibi-lo no LCD 16x2. O DS1307 envia hora / data usando 2 linhas para o Arduino. Uma campainha também é usada para indicação de alarme, que emite um bipe quando o alarme é ativado. Um diagrama de blocos é mostrado abaixo para entender o funcionamento deste relógio em tempo real.
Como você pode ver no diagrama de circuito, os pinos SDA e SCL do chip DS1307 são conectados aos pinos SDA e SCL do Arduino com resistor pull up que mantém o valor padrão ALTO nas linhas de dados e clock. 32.768KHz oscilador de cristal está ligado com chip de DS1307 de geração exacta espera de 1 segundo, e uma bateria de 3 volts está também ligado ao pino 3 rd (MTD) de DS1307 que mantém tempo de funcionamento após a falha de energia elétrica. O LCD 16x2 está conectado ao arduino no modo de 4 bits. Os pinos de controle RS, RW e En são conectados diretamente aos pinos 2, GND e 3 do arduino. E o pino de dados D0-D7 está conectado a 4, 5, 6, 7 do arduino. Uma campainha é conectada ao pino arduino número 13 por meio de um transistor NPN BC547 com um resistor de 1 k em sua base.
Três botões definidos, INC e Next são usados para definir o alarme para os pinos 12, 11 e 10 do Arduino no modo ativo baixo. Quando pressionamos definir, o modo de definição de alarme é ativado e agora precisamos definir o alarme usando o botão INC e o botão Avançar é usado para mover para o dígito. A configuração completa do breadboard deste relógio em tempo real com alarme é mostrada na imagem abaixo. Você também pode verificar um tutorial detalhado sobre despertador digital com microcontrolador AVR.
Descrição do Programa
Para programar para este relógio de tempo real, usamos algumas bibliotecas para extrair hora / data do DS1307 e para exibir no LCD, que são fornecidas abaixo:
E a inicialização do RTC, LCD e saída de entrada são realizadas no loop de configuração.
Resto de coisas como tempo de leitura, configuração de alarme é executado na seção de loop vazio.