Adding a DS3231 Real Time Clock To 的Raspberry 体育彩票31选7

25

当您的体育彩票31选7连接到网络时,便可以对其进行设置’使用NTP正确时钟。没有网络连接,系统时间和日期几乎肯定是错误的。对于某些项目,这是一个问题,尤其是在记录时间戳或执行其他对时间敏感的操作时。

这可以使用实时时钟(RTC)模块解决。即使关闭了体育彩票31选7,这也会使用一个小的纽扣电池来节省时间。当体育彩票31选7重新启动时,可以对其进行设置’使用RTC保留的时间自己的内部时钟。

实施RTC的最简单方法是购买预制模块。幸运的是,RTC模块相对便宜且易于获得。某些模块将直接连接体育彩票31选7’的GPIO标头,但这些标头可能会妨碍其他设备,因此我更喜欢使用通用模块,这些通用模块可将GPIO清除以用于其他目的。

DS1307或DS3231?

DS1307 RTC模块基于DS1307和DS3231芯片的模块是受欢迎的设备,’会看到它们从各个零售商处出售。我购买了这两种型号,并很快意识到我的DS1307模块没有用。我的建议是选择基于DS3231的模块。它们更加准确,可以在3.3V电压下愉快地运行。我两个“Tiny RTC”DS1307模块直接进入垃圾箱。

电阻拆卸

大多数通用I2C模块在SDA和SCL引脚上都具有上拉电阻,但这些电阻不是’因为体育彩票31选7有它需要’自己的引体向上。我没有 ’不想让这些板载电阻器干扰I2C总线的运行,所以我删除了它们。

该模块还具有基本充电电路,可与可充电LIR2032币形电池一起使用。我想使用普通的不可充电电池,所以我卸下了另一个电阻以禁用该充电电路。使用烙铁和一些镊子或小钳子将电阻器从模块上卸下。电阻的位置如下图所示:

DS3231 RTC模块

上拉电阻是左侧以红色标记的块。充电电路是右侧红色标记的块。

I2C设置

与所有I2C设备一样,您必须配置I2C接口。这很容易做到,并在 Enabling 的I2C Interface On 的Raspberry 体育彩票31选7 tutorial.

DS3231模块设置

为了确保您’已经获得了最新更新,您应该运行以下命令:

sudo apt-get update
sudo apt-get -y upgrade

现在,我们需要使用来修改系统文件:

须藤nano / etc / modules

如果不是’t already there add “rtc-ds1307”到底部,所以看起来像:

snd-bcm2835
i2c-bcm2835
i2c-dev
rtc-ds1307

您可以使用CTRL-X,Y和ENTER保存并退出。

使用关闭树莓派“sudo halt”完成该过程后,请切断电源。

硬件设定

在Raspberry 体育彩票31选7关闭的情况下,您现在可以连接模块了。它’的配置非常简单,但是需要正确配置,因此请仔细检查。参考我的 通用输入输出图 以确保您在体育彩票31选7上获得正确的引脚’s header.

DS1307体育彩票31选7 通用输入输出
地线P1-06
VccP1-01(3.3V)
SDAP1-03(I2C SDA)
SCLP1-05(I2C SCL)

唐’别忘了3V电池!

DS3231 RTC模块

接口测试

给体育彩票31选7上电并运行以下命令:

sudo i2cdetect -y 1

注意 : 如果您使用的是Rev 1,则需要使用“sudo i2cdetect -y 0”.

您应该看到类似以下内容:

DS3231 RTC模块配置

在这个例子中“68”是I2C接口上RTC模块的十六进制地址。

I2C设备设置

为了确保设置DS1307设备并在体育彩票31选7启动时同步时间,我们需要编辑另一个系统文件:

sudo nano /etc/rc.local

在出口0行之前添加以下两行:

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

所以看起来像:

DS1307 RTC模块配置

注意 : 如果您使用的是Rev 1,则需要使用“/i2c-0/” instead of “/i2c-1/”.

您可以使用CTRL-X,Y和ENTER保存并退出。

现在使用以下命令重新启动体育彩票31选7:

sudo reboot

现在,当您重复i2cdetect命令(见上文)时,68将变成UU:

DS3231 RTC模块配置

时区和夏时制

默认情况下,体育彩票31选7倾向于将时间显示为GMT或UTC。对我来说,坐在布里斯托尔(Bristol)的时间比我的当地时间晚1小时。要告诉您的体育彩票31选7您所在的区域,可以使用:

sudo raspi-config

然后选择“国际化选项” followed by “Change Timezone”。然后,您可以从以下屏幕中选择您的位置。

我将位置设置为“Europe/London”这导致“date”以BST(英国夏令时)而不是UTC显示时间。然后可以将时间正确调整+1小时。

Reading 的Date And Time

您可以阅读体育彩票31选7’的系统时间使用:

日期

如果出于任何原因需要设置系统时间,则可以使用以下命令:

sudo 日期 -s "29 AUG 1997 13:00:00"

Once correct you can write the system 日期 and time to the RTC module using :

sudo hwclock -w

You should be able to read the 日期 and time back from the RTC using :

sudo hwclock -r

通过使用分号分隔命令,您可以同时读取系统时间和RTC时间。希望他们应该匹配并看起来像这样:

DS3231 RTC模块配置

的“hwclock -s” we added to “rc.local”通过RTC模块设置系统时间。

的Final Test

最终测试是确定RTC模块是否保留时间,并且体育彩票31选7在启动时将使用该时间。最好的方法是:

  • 关闭体育彩票31选7的电源
  • 拔下电源线
  • 删除网络连接
  • 将体育彩票31选7连接到显示器和键盘
  • 过夜
  • 上电并使用“date”看看体育彩票31选7认为什么时候

Hopefully your 体育彩票31选7 is now 显示ing the correct 日期 and time and will maintain it when the 体育彩票31选7 is 功率ed down.

分享。

25条留言

  1. 嗨,您说1307几乎一文不值,但是在编写脚本时,您一直在使用它。 3231是否使用与1307相同的库?还是应该将ds3231添加为模块?

  2. 感谢分享。您能否回答以下问题:1)为什么禁用CR电池的LIR充电电源? 2)为什么不使用ntp(更准确)设置系统时间/日期,然后设置hwclk? 3)您真的需要移除上拉电阻吗?

    • 1)我不能’找不到明确的信息来源,可以确认可以安全充电的标准纽扣电池是安全的’专门充电。所以我玩的很安全。
      2)您可以使用任何技术来设置时间。我只是为了本教程而学习一些基本知识。对于我自己的实验,我倾向于将体育彩票31选7连接到以太网并让时间与ntp同步,然后从中设置RTC模块。
      3)我’确保在不移除电阻的情况下仍能正常工作,但是如果您使用多个都具有自己的上拉电阻的I2C模块,则可能会导致间歇性问题。

  3. 我喜欢您描述事物的方式,尤其是您使用的传感器以及从何处购买的传感器。我不能’在本文中找不到指向eBay购买此RTC时钟的链接。

    • 如果您搜索eBay,您会发现很多。我不’t usually provide links to specific items 上 eBay because they go out of 日期 so quickly.

        • 它可能会与仍然在那里的他们一起工作。额外的上拉电路的麻烦在于与体育彩票31选7并联运行’的引体向上。当引脚被拉低时,这会降低总电阻并增加电流消耗。但是对于单个设备却没有’似乎没有多大关系。它经常在论坛上讨论,并且没有’一个明确的答案。一世’我确定我可能已经使用了该设备,但是在我的教程中,如果我倾向于安全使用’m not 100% sure.

  4. 感谢MATT,我已按照说明逐步进行操作,可以成功配置外部时钟。步骤编写精美,易于遵循。尽管我还没有删除任何寄存器,但是对我来说很好。

  5. 好人!!!此答案对我使用ubuntu 16.04服务器预装的中文Suptronics x300扩展板的使用有所帮助…只是想留下此评论,以便人们知道这是正确的答案…

    只是一个疑问,为什么我们使用ds1307模块而不是ds3231?

  6. 谢谢你的帖子,真的很好。
    我一切正常,要回答一半以上关于连接5V的问题,它并没有破坏任何东西(这是我的担心),因为我只是这样做了,所以’工作。等等。等等..在我找到这篇文章之前,有一次我穿上3V3,并按照我们的指南进行了操作。

    只是我的一个问题,既然这行之有效,我的诺基亚显示器也可以使用I2C。
    现在如何在Python中使用hwclock -r命令?或让时间回到RTC。
    我想在Python中做更多的事情。
    谢谢..很大的帮助。

    • Daah ..停… forgive me… it’这里早了一点。

      I’ll use this.. “从时间导入strftime”.
      再次感谢… back to it… we’在这里重新锁定!!!

发表评论

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.