树莓派下 DS3231 时钟模块的配置(I2C接口)

下面介绍基于DS3231的RTC时钟模块的使用,这个模块自带纽扣电池,可以在树莓派掉电后系统时间能继续保持。

一、启用树莓派的I2C功能

sudo apt-get install -y python-smbus
sudo apt-get install -y i2c-tools
sudo raspi-config

按照下面的步骤设置开启 I2C 功能。

重启树莓派。

sudo reboot

添加 I2C 模块

sudo nano /etc/modules

添加以下两行内容:

i2c-bcm2708
i2c-dev

将DS3231的RTC时钟模块通过GPIO连接到树莓派。

二、安装 I2C 工具

sudo apt-get update
sudo apt-get install i2c-tools python-smbus
sudo reboot

重启后通过刚才安装的i2c-tools对 I2C 设备进行探测,输入以下命令,得到如下结果,说明检测到一个地址为0x68的I2C设备就是板上的DS3231。

sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

三、测试时钟模块

下面我们通过i2c-tools来测试下DS3231的功能,并将DS3231这个掉电不丢失的时钟用于树莓派系统的时钟。
下面的测试必须在root权限下测试。

=== 如何启用 root 账户的分割线 开始===
debian里root账户默认没有密码,但账户锁定。
当需要root权限时,由默认账户经由sudo执行,Raspberry pi 系统中的Raspbian
默认用户是pi 密码为raspberry

重新开启root账号,可由pi用户登录后,在命令行下执行

sudo passwd root

执行此命令后系统会提示输入两遍的root密码,输入你想设的密码即可,然后执行

sudo passwd --unlock root

这样就可以解锁root账户了。
现在就有两个账户 pi@raspberrypi 和 root@raspberrypi 两个账户可以来回切换:
在pi@raspberrypi 输入 su 然后输入刚才设置的密码进入 root 账户
在root@raspberrypi 输入su pi 进入 pi 账户
=== 如何启用 root 账户的分割线 结束===

su
Password: 
modprobe i2c-dev
echo ds3231 0x68 > sudo tee /sys/class/i2c-adapter/i2c-1/new_device
hwclock -r
Sat Jan  1 00:00:12 2000  -0.120717 seconds

将系统时钟设定为当前时间,然后将系统时钟写入到DS3231硬件时钟里面

date 062120352014.00     备注:6月21日  20点35分 2014年
Sat Jun 21 20:35:00 UTC 2014
hwclock -w
date
Sat Jun 21 20:35:21 UTC 2014

四、设置开机自动读取时间

编辑启动文件

sudo nano /etc/rc.local

将以下内容加入“exit 0”行之前

sudo modprobe i2c-dev
echo ds3231 0x68 > sudo tee /sys/class/i2c-adapter/i2c-1/new_device
hwclock -r
hwclock -s

ctrl+x退出

过几分钟拔掉网线,重启树莓派,输入“date”看看时间是否正确。

这是一篇发布于 6年 前的文章,其中的信息可能已经有所发展或是发生改变,请了解。


3 评论

  1. 安装DS3231SN I2C模块的时候,新增的两行内容可以侦测到I2C设备但是hwclock -r无法访问。
    换成:
    i2c-bcm2835
    i2c-dev
    rtc-ds1307
    之后正常,系统是2019-07-10-raspbian-buster-lite。

  2. 系统是2019-07-10-raspbian-buster-lite
    时钟芯片是ds3231
    换成:
    i2c-bcm2835
    i2c-dev
    rtc-ds1307
    并且echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
    这里时“ds1307”,不是ds3231

发表评论

你的邮件地址不会公开


*