树莓派如何添加使用实时时钟模块?

在此树莓派 RTC 教程中,我们将向您展示如何向树莓派添加 PCF8523 ,DSL1307 或 DS3231 实时时钟 (RTC) 模块。

我们将通过提供引脚号和有用的 GPIO 指南。

您还将在本教程中学习需要对树莓派的配置进行的更改以及在 Raspbian 上修改包的过程,因此它将从您的实时时钟模块中读取时间,而不会利用它依赖默认。

我们还将向您展示在需要时如何在实时时钟模块上设置时间。

设备清单

以下是本树莓派 RTC 教程中使用的所有细节。

推荐的

  • 树莓派 2 或 3

  • Micro SD 卡

  • 电源

  • PCF8523,DSL1307 或 DS3231 RTC 模块

可选的

  • 树莓派外壳

  • GPIO Breakout Kit

  • 面包板

  • Breadboard Wire

将 RTC 模块连接到树莓派

在您的”RTC 模块” 上,您应该至少找到四个连接。某些 RTC 电路可能附带更多功能,但我们只需要以下四个即可与树莓派配合使用:** VCC / 5V / Vin (IC 电源引脚),* * SDA **(串行数据线), SCL (串行时钟线) 和 GND **(接地电源引脚)

您既可以将这些线路直接连接到树莓派,也可以将其 * 连接到面包板,然后再连接到树莓派。在本教程中,我们使用了 Adafruit 的 Pi Pi RTC PCF8523,它直接插入了前六个引脚,从而大大简化了 RTC (实时时钟) 模块的设置过程。

但是,连接普通的 ** PCF8523 DSL1307 DS3231 ** 并不是一个复杂的过程,按照下面的指南,您应该立即连接所有设备。

DS3231 和 PCF8523

  • ** Vin 连接至 Pin 1 **
  • ** SDA 连接到 Pin 3 **
  • ** SCL 连接到 Pin 5 **
  • ** GND 连接到引脚 6 **

DS1307

  • ** Vin 连接至 Pin 4 **
  • ** SDA 连接到 Pin 3 **
  • ** SCL 连接到 Pin 5 **
  • ** GND 连接到引脚 6 **

为 I2C 配置树莓派

在我们开始在树莓派上设置和使用 RTC 之前,我们首先必须使用 ** raspi-config ** 工具来配置树莓派与 I2C 一起使用。

1 首先,请确保我们的树莓派完全是最新的;这样可以确保我们将利用所有可用的最新软件。

sudo apt-get update
sudo apt-get upgrade

2 随着树莓派的全面更新,我们现在可以运行其配置工具开始启动 I2C 的过程。运行以下命令以启动配置工具。

sudo raspi-config

3 该命令将调出配置工具;此工具是进行更改树莓派配置的各种方法的简便方法。但是,今天,我们将仅探讨如何启用 I2C 接口。

使用箭头向下并选择”** 5 接口选项 **”。选择此选项后,您可以按 ** Enter **。

4 在下一个屏幕上,您将需要使用箭头键选择” P5 I2C “,一旦突出显示,请按 Enter ** 以选择此选项。

5 现在,系统将询问您是否要启用”ARM I2C 接口 **”,用” 箭头键” 选择” 是”,然后按”Enter” 继续。 。

6 raspi-config 工具进行所需的更改后,以下文本应出现在屏幕上:” 已启用 ARM I2C 接口 “。

但是,在真正启用 I2C 之前,我们必须首先重新启动树莓派。为此,请先按 ** Enter ,然后按 ESC ** 返回终端。

在树莓派的终端上键入以下命令以重新启动它。

sudo reboot

7 树莓派完成重启后,我们需要安装另外两个软件包,这些软件包将帮助我们判断我们是否已经成功设置了 I2C ,并且它是否按预期工作。

在树莓派上运行以下命令以安装 ** python-smbus i2c-tools :sudo apt-get install python-smbus i2c-tools
**8
安装了这些工具后,请在树莓派上运行以下命令,以检测您是否已正确连接 RTC 设备。

sudo i2cdetect -y 1

如果您已成功连接 RTC 电路,则应该看到 ** ID#68 。该 ID 是 DS1307 DS3231 PCF85231 ** RTC 芯片的地址。

一旦我们启动了内核驱动程序并运行,该工具将开始显示 ** UU **,这表明它正在按预期工作。

设置树莓派 RTC 时间

通过成功地设置和验证 I2C ,我们可以看到我们的 RTC 电路,然后就可以开始配置树莓派使其在其时间范围内使用 RTC 芯片的过程。

1 为此,我们首先必须修改树莓派的启动配置文件,以便成功为我们的 RTC 电路加载正确的内核驱动程序。

在 Raspberry PI 上运行以下命令以开始编辑 **/boot/config.txt ** 文件。

sudovim/boot/config.txt

2 在此文件中,您将需要在文件底部添加以下几行之一,请确保对要使用的 RTC 芯片使用正确的一行。在我们的情况下,我们使用的是 ** PCF8523 **。

** DS1307 **

dtoverlay = i2c-rtc,ds1307

** PCF8523 **

dtoverlay = i2c-rtc,pcf8523

** DS3231 **

dtoverlay = i2c-rtc,ds3231

将设备的正确行添加到文件底部后,您可以保存并退出,方法是依次按 ** Ctrl + X ,然后按 Y **,然后按 Enter 。

3 所做的更改后,我们需要重新启动树莓派,以便它加载最新的配置更改。

在树莓派上运行以下命令以重新启动它。

sudo reboot

4 一旦您的树莓派完成重启,我们现在可以运行以下命令,这样做是为了确保可以加载 RTC Chip 的内核驱动程序。

sudo i2cdetect -y 1

您应该会看到一面文字墙,如果显示 ** UU 而不是 68 **,则说明我们已成功为 RTC 电路加载了内核驱动程序。

5 现在,我们已经成功激活了 RTC 芯片的内核驱动程序,并且知道它正在与树莓派通信,因此,我们需要删除 ** fake hwclock ** 软件包。当您没有时钟时,此软件包可充当实际硬件时钟的占位符。

在树莓派的终端上键入以下两个命令以删除 fake -hwclock 软件包。我们还将从任何启动脚本中删除 hwclock ,因为我们将不再需要它。

sudo apt-get -y删除假 Hwclock 
sudo update-rc.d -f fake-hwclock删除

6 现在,我们已经禁用了 ** fake-hwclock ** 包,我们可以继续运行 Raspbian 中包含的原始硬件时钟脚本,并通过注释掉一段代码来再次运行它。

运行以下命令以开始编辑原始 RTC 脚本。

sudo vim /lib/udev/hwclock-set

7 通过在其前面放置 **#** 来查找并注释掉以下三行,如下所示。

如果[-e/run/systemd/system];然后
    出口 0 
科幻

用。。。来代替

#if [-e/run/systemd/system];然后
#退出 0 
#fi

进行更改后,依次按 ** Ctrl + X Y Enter ** 保存文件。

从 Pi 到 RTC 模块的同步时间

现在我们已经连接了所有 RTC 模块,并且 Raspbian 和树莓派的配置正确,我们需要将时间与 RTC 模块同步。原因是新的 RTC 模块提供的时间不正确。

1 如果您现在尝试运行以下命令,则可以通过运行以下命令直接从 RTC 模块中读取时间,您会注意到它当前偏离了我们当前的实时性。

sudo hwclock -D -r

2 现在,在继续将树莓派的正确时间同步到 RTC 模块之前,我们需要运行以下命令以确保树莓派上的时间实际上是正确的。如果时间不正确,请确保您已连接到 Wi -Fi 或以太网连接。

日期

3 如果 date 命令显示的时间正确,我们可以继续在树莓派上运行以下命令。该命令将写入从树莓派到 RTC 模块的时间。

sudo hwclock -w

4 现在,如果您再次直接从 RTC 模块读取时间,您会注意到它已更改为与树莓派设置的时间相同的时间。如果将电池放在 RTC 模块中,则永远不必重新运行前面的命令。

sudo hwclock -r

希望您现在应该拥有一个完全可运行的 RTC 模块,即使树莓派断电或失去互联网连接,它也可以保持正确的时间。希望您喜欢这个有趣的 Pi 项目,并将其充分利用。如果您对此树莓派 RTC 教程有任何疑问,疑问,想法或其他问题,请务必在我们的论坛上发表评论。

分享到