Como e por que adicionar um relógio em tempo real ao Arduino

Como e por que adicionar um relógio em tempo real ao Arduino

Manter o tempo nos projetos do Arduino não é tão fácil quanto você pode pensar: uma vez que a conexão do computador não esteja lá, seu Arduino sem energia simplesmente para de funcionar, incluindo seu relógio interno.





como obter confete na mensagem

Para manter seu Arduino em sincronia com o mundo ao seu redor, você precisará do que é chamado de 'módulo Relógio em tempo real'. Veja como usar um.





Qual é o objetivo de um Real Time Clock (RTC)?

O seu computador provavelmente sincroniza a hora com a Internet, mas ainda tem um relógio interno que continua funcionando mesmo sem uma conexão com a Internet ou sem a alimentação desligada. Quando você usa um Arduino conectado a um computador, ele tem acesso ao horário preciso fornecido pelo relógio do sistema. Isso é muito útil, mas a maioria dos projetos do Arduino são projetados para serem usados ​​longe de um computador - nesse ponto, sempre que a energia for desligada ou o Arduino reiniciado, ele não terá absolutamente nenhuma ideia de que horas são. O relógio interno será zerado e começará a contar do zero novamente na próxima vez que for ligado.





Se o seu projeto tem algo a ver com a necessidade de tempo - como minha luz noturna e meu despertador ao nascer do sol - isso certamente será um problema. Nesse projeto, contornamos o problema definindo manualmente a hora todas as noites de uma forma bastante rudimentar - o usuário pressionava o botão de reinicialização antes de ir para a cama, fornecendo uma sincronização manual da hora. Claramente, essa não é uma solução ideal de longa data.

Um módulo RTC é um bit adicional de circuito, exigindo uma pequena bateria de célula tipo moeda, que continua a contar o tempo mesmo quando o Arduino está desligado. Depois de ser configurado uma vez, ele manterá esse tempo durante a vida útil da bateria, geralmente um ano ou mais.



TinyRTC

O RTC mais popular para Arduino é chamado TinyRTC e pode ser comprado por cerca de US $ 5 a US $ 10 no eBay. Provavelmente, você precisará fornecer sua própria bateria (é ilegal enviá-la para o exterior para muitos lugares) e alguns conectores (os pinos que se encaixam nos orifícios, que você mesmo precisará soldar).

Este é o módulo que tenho:





Ele ainda possui um sensor de temperatura embutido, embora a bateria durará mais se você não a estiver usando.

O número de buracos naquela coisa parece bastante assustador, mas você só precisa de quatro deles; GND, VCC, SCL e SDA - você pode usar os pinos relevantes em qualquer um dos lados do módulo RTC. Você fala com o relógio usando Protocolo I2C , o que significa que apenas dois pinos são usados ​​- um para o 'relógio' (um relógio de dados de comunicação serial, nada a ver com o tempo) e um para os dados. Na verdade, você até encadeia até 121 dispositivos I2C nos mesmos dois pinos - verifique esta página Adafruit para uma seleção de outros dispositivos I2C, você pode adicionar, porque há muitos!





Começando

Conecte seu módulo TinyRTC de acordo com o diagrama abaixo - a linha rosa DS não é necessária, pois é para o sensor de temperatura.

Em seguida, baixe o Tempo e DS1307RTC bibliotecas e coloque as pastas resultantes em seu / bibliotecas pasta.

Saia e reinicie o ambiente Arduino para carregar nas bibliotecas e exemplos.

Você encontrará dois exemplos no menu DS1307RTC: carregue e execute o Definir tempo exemplo primeiro - isso definirá o RTC para a hora correta. Não vale a pena entrar em detalhes com o código real, apenas saiba que você precisa executá-lo uma vez para realizar a sincronização de tempo inicial.

A seguir, veja o exemplo de uso com ReadTest .

como obter o Google Play no Kindle Fire

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Observe que também incluímos o núcleo Wire.h biblioteca - vem com o Arduino e é usada para comunicação em I2C. Faça upload do código, abra o console serial em 9600 baud e observe e seu Arduino exibe a hora atual a cada segundo. Maravilhoso!

O código mais importante no exemplo é a criação de um tmElements_t tm - este é um estrutura que preencheremos com a hora atual; e a RTC.read (tm) função, que obtém a hora atual do módulo RTC, coloca-a em nosso tm estrutura e retorna verdadeiro se tudo correr bem. Adicione seu código de depuração ou lógica dentro dessa instrução 'if', como imprimir a hora ou reagir a ela.

xbox live free games setembro 2016

Agora que você sabe como chegar na hora certa com o Arduino, pode tentar reescrever o projeto de alarme do nascer do sol ou criar um wordclock de LED - as possibilidades são infinitas! O que você vai fazer?

Créditos de imagem: Snootlab Via Flickr

Compartilhado Compartilhado Tweet O email Como alterar a aparência da área de trabalho do Windows 10

Quer saber como melhorar a aparência do Windows 10? Use essas personalizações simples para tornar o Windows 10 seu.

Leia a seguir
Tópicos relacionados
  • faça você mesmo
  • Arduino
Sobre o autor James Bruce(707 artigos publicados)

James é bacharel em Inteligência Artificial e certificado pela CompTIA A + e Network +. Quando não está ocupado como Editor de Avaliações de Hardware, ele gosta de LEGO, VR e jogos de tabuleiro. Antes de ingressar na MakeUseOf, ele foi técnico de iluminação, professor de inglês e engenheiro de data center.

Mais de James Bruce

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever