0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何向Arduino添加实时时钟

454398 来源:网络整理 作者:网络整理 2019-12-05 08:49 次阅读

保持Arduino项目的时间并不像您想的那么容易:一旦计算机连接不存在,您没电的Arduino就会停止运行,包括内部代码。

在为了使Arduino与周围世界保持同步,您将需要所谓的“实时时钟模块”。

实时时钟(RTC)的意义是什么?

您的计算机最有可能与互联网同步时间,但它的内部时钟仍然可以即使没有互联网连接或电源关闭也能继续工作。当您使用Arduino插入计算机时,它可以访问系统时钟提供的准确时间。这非常有用,但是大多数Arduino项目都设计为不在计算机上使用–到那时,无论何时拔掉电源或Arduino重新启动,它绝对不知道现在几点。内部时钟将被重置,并在下一次启动时从零开始重新计数。

如果您的项目与需要时间有关,例如我的夜灯和日出闹钟,那么这很明显成为一个问题。在该项目中,我们通过以一种相当粗略的方式手动设置每晚的时间来解决该问题-用户在上床睡觉之前将按下重置按钮,从而提供了手动时间同步。显然,这不是一个理想的长期解决方案。

RTC模块是额外的电路,需要一块小的纽扣电池,即使关闭Arduino,它也可以继续计时。设置一次–它将使电池的寿命(通常是一年左右)有效。

TinyRTC

Arduino最受欢迎的RTC称为TinyRTC,可以购买在eBay上大约需要5至10美元。您最有可能需要提供自己的电池(将这些电池运到国外很多地方是违法的)和一些接头(插入孔中的销,您需要自己焊接在这些孔中)。

这是我拥有的模块:

它甚至具有内置的温度传感器,但是如果您使用以下电池,则电池可以使用更长的时间不使用它。

在那个东西上的孔的数量看起来很吓人,但是您只需要四个即可。 GND,VCC,SCL和SDA –您可以使用RTC模块两侧的相关引脚。您使用I2C协议与时钟对话,这意味着仅使用了两个引脚-一个用于“时钟”(串行通信数据时钟,与时间无关),另一个用于数据。实际上,您甚至可以在相同的两个引脚上链接多达121个I2C设备-请访问Adafruit页面以选择可以添加的其他I2C设备,因为还有很多!

入门 strong》

根据下图连接TinyRTC模块–不需要粉红色的DS线,因为它是用于温度传感器的。

下一步,下载Time和DS1307RTC库,并将生成的文件夹放在您的/libraries 文件夹中。

退出并重新启动Arduino环境以加载到库和示例中。

您将在DS1307RTC菜单中找到两个示例:首先上传并运行 SetTime 示例-这会将RTC设置为正确的时间。实际的代码不值得详细介绍,只是知道您需要运行一次才能执行初始时间同步。

接下来,请使用 ReadTest 查看示例用法

#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);

}

。请注意,我们还包括了核心 Wire.h 库–该库随Arduino一起提供,用于通过I2C进行通信。上载代码,以9600波特打开串口控制台,然后观察,您的Arduino将每秒输出当前时间。

该示例中最重要的代码是创建一个 tmElements_t tm –一种我们将在当前时间填充的结构;和 RTC.read(tm)函数,该函数从RTC模块获取当前时间,并将其放入我们的 tm 结构,如果一切顺利,则返回true。在该“ if”语句中添加调试或逻辑代码,例如打印时间或对其作出反应。

现在,您知道如何使用Arduino获得正确的时间,您可以尝试重写日出报警项目或创建一个LED字时钟–无限的可能性!你会做什么?

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟
    +关注

    关注

    10

    文章

    1479

    浏览量

    130295
  • Arduino
    +关注

    关注

    184

    文章

    6425

    浏览量

    184768
收藏 人收藏

    评论

    相关推荐

    RX-4571LC、NB、SA实时时钟模块

    RX-4571LC实时时钟模块是EPSON推出的一求款额定频率32.768KHz,接口为SPI(3-wire),月偏差为±60 s的实时时钟模块,12脚贴片,具有小尺寸,高稳定性。该款实时时钟模块
    发表于 01-31 11:46 0次下载

    基于51单片机的实时时钟设计

    电子发烧友网站提供《基于51单片机的实时时钟设计.rar》资料免费下载
    发表于 01-12 10:43 8次下载

    基于51单片机的实时时钟+温度应用设计

    电子发烧友网站提供《基于51单片机的实时时钟+温度应用设计.rar》资料免费下载
    发表于 01-12 10:20 0次下载

    基于51单片机的实时时钟设计

    电子发烧友网站提供《基于51单片机的实时时钟设计.rar》资料免费下载
    发表于 01-02 10:15 40次下载

    基于51单片机的实时时钟+温度应用设计

    基于51单片机的实时时钟+温度应用设计(仿真)
    发表于 01-02 09:55 0次下载

    单片机系统时钟实时时钟有什么不同?

    单片机系统时钟实时时钟有什么不同
    发表于 11-06 08:18

    Arduino篇—实时时钟

    DS1307时钟模块:** DS1307串行实时时钟(RTC)是低功耗,全二进制编码的十进制(BCD)时钟/日历以及56字节的NV SRAM。
    的头像 发表于 11-01 16:49 894次阅读
    <b class='flag-5'>Arduino</b>篇—<b class='flag-5'>实时时钟</b>

    CW32实时时钟(RTC)介绍

    CW32实时时钟(RTC)介绍
    的头像 发表于 10-24 15:36 498次阅读
    CW32<b class='flag-5'>实时时钟</b>(RTC)介绍

    实时时钟芯片DS1302应用资料

    u3000对于一个完善的单片机系统,经常需要对时间进行操作。例如,记录当前采集数据的时间、显示当前时间、设定关机时间等等。为了能够对时间进行控制,通常需要在硬件电路中集成实时时钟芯片。实时时钟芯片
    发表于 09-26 08:27

    DS1302实时时钟资料包分享

    电子发烧友网站提供《DS1302实时时钟资料包分享.zip》资料免费下载
    发表于 09-15 16:01 3次下载
    DS1302<b class='flag-5'>实时时钟</b>资料包分享

    STM32 RTC实时时钟(二)

    上次实验完成了对实时时钟的基本功能——计时的实验,这次在计时的基础上对RTC的可编程闹钟的功能进行测试。
    的头像 发表于 07-22 15:43 1112次阅读
    STM32 RTC<b class='flag-5'>实时时钟</b>(二)

    STM32 RTC实时时钟(一)

    STM32处理器内部集成了实时时钟控制器(RTC),因此在实现实时时钟功能时,无须外扩时钟芯片即可构建实时时钟系统。
    的头像 发表于 07-22 15:41 2799次阅读
    STM32 RTC<b class='flag-5'>实时时钟</b>(一)

    实时时钟RTC:32.768kHz晶振

    实时时钟(RTC: Real-Time Clock)是集成电路,通常称为时钟芯片。目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。
    的头像 发表于 05-08 10:45 1839次阅读
    <b class='flag-5'>实时时钟</b>RTC:32.768kHz晶振

    实时时钟 USB 评估板用户指南

    实时时钟 USB 评估板用户指南
    发表于 04-27 19:59 0次下载
    <b class='flag-5'>实时时钟</b> USB 评估板用户指南

    基于STM32单片机RTC实时时钟使用库文件设计

    基于STM32单片机RTC实时时钟使用库文件设计源代码
    发表于 04-26 14:28 1次下载