24 abril 2016

Como usar o módulo RTC DS3231 no Raspberry Pi

Por padrão o Raspberry Pi não tem um relógio de tempo real (RTC) integrado, e ele usa a rede ou internet para atualizar suas informações de data e hora através do protocolo NTP (Network Time Protocol). 

Assim, em projetos que dependem do relógio e não tem conexão de rede, ou ela está indisponível, pode ser utilizado um módulo RTC DS3231, como esse mostrado abaixo, conectado em um Raspberry Pi 2:

Como usar o módulo RTC DS3231 com Raspberry Pi

O módulo tem o CI DS3231 (datasheet), de baixo custo e alta precisão, e uma bateria que mantém os dados do CI mesmo quando o módulo está sem alimentação.

Para utilizar o módulo com o Raspberry Pi, vamos habilitar a interface I2C da placa, e depois partir para a conexão do módulo e configuração do Raspbian para utilizar o novo hardware.

Habilitando a interface I2C no Raspberry Pi


Atualize o Raspbian com os comandos

sudo apt-get update
sudo apt-get upgrade

Após a atualização (que pode demorar alguns minutos), entre no raspi-config utilizando o comando

sudo raspi-config

Na tela principal, selecione a opção 9 - Advanced Options:

Tela Principal raspi-config

Em seguida, entre na opção A7 I2c:

Interface I2C raspi-config

Na tela seguinte, confirme que você deseja habilitar a interface I2C:

RPI I2C Enable

Confirme também que a interface I2C deve ser carregada quando o Raspbian for iniciado:

RPI I2C Kernel

Após confirmar as opções, reinicie o Raspbian para que as alterações tenham efeito.

Instale agora os módulos para que a interface I2C funcione com o Python e também ferramentas de diagnóstico:

sudo apt-get install python-smbus i2c-tools

Execute o comando abaixo para desligar o Raspbian:

sudo shutdown now

Aguarde alguns instantes para que o sistema operacional seja corretamente desligado e retire o conector de força do Raspberry.

Ligação do RTC DS3231 no Raspberry Pi


Com a placa desligada, vamos realizar a conexão do módulo na GPIO, O módulo RTC DS3231 utiliza a interface I2C para comunicação por meio dos pinos 1 (3.3V), 3 (SDA), 5 (SCL) e 9 (GND) da GPIO do Raspberry.

Conexão RTC DS3231 GPIO RPi


Ligue o Raspberry e execute o comando abaixo para se certificar de que a comunicação entre a placa e o módulo está ok:

sudo i2cdetect -y 1

O comando retorna uma tela como essa:

Raspoberry Pi I2CDetect

Ela mostra que um dispositivo I2C foi detectado no endereço 0x68. No caso, o nosso módulo RTC DS3231.

Configurando o Raspbian para usar o RTC


Agora vamos modificar alguns arquivos do sistema e configurar o Raspbian para que pegue as informações de data e hora via hardware. Edite o arquivo modules:

sudo nano /etc/modules

Dentro dele, insira as linhas i2c-bcm2835 e rtc-ds1307. O arquivo ficará mais ou menos assim:

I2C - Modules

Salve o arquivo e agora edite o arquivo rc.local:

sudo nano /etc/rc.local

Adicione as informações abaixo antes da linha exit 0, no final do arquivo:

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -s

O arquivo rc.local deve ficar assim:

RPi I2C rc.local

Essa modificação no arquivo indica ao Raspbian que a sincronização de data e hora deve ser feita com o módulo RTC. Salve o arquivo e reinicie o Raspbian usando o comando sudo reboot. 

Verifique a data e a hora do sistema utilizando o comando

date

Talvez seja necessário ajustar a timezone (fuso horário) do Raspbian. Isso pode ser feito também no raspi-config.

Para setar a data e a hora, utilize:

sudo date -s "13 APR 2016 13:06:00"

Isso atualiza o relógio do sistema operacional. Para gravar esses dados no módulo RTC, use:

sudo hwclock -w

E para verificar a data e hora que estão gravados no RTC DS3231, utilize o mesmo comando, mas com o -r no final:

sudo hwclock -r

Para testar se tudo está funcionando corretamente, desligue o Raspbian por alguns minutos, desconecte o cabo de força e o adaptador de rede, e verifique, com o comando date, se as informações do relógio continuam atualizadas.

Nenhum comentário:

Postar um comentário