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

    文章

    1732

    浏览量

    131437
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186910
收藏 人收藏

    评论

    相关推荐

    LinkedSemi凌思微:DD3225TR实时时钟模块

    深圳鸿合智远|LinkedSemi凌思微:DD3225TR实时时钟模块
    的头像 发表于 12-17 10:57 32次阅读
    LinkedSemi凌思微:DD3225TR<b class='flag-5'>实时时钟</b>模块

    LinkedSemi凌思微:DD3225TS实时时钟模块

    深圳鸿合智远|LinkedSemi凌思微:DD3225TS实时时钟模块
    的头像 发表于 12-16 11:20 90次阅读
    LinkedSemi凌思微:DD3225TS<b class='flag-5'>实时时钟</b>模块

    TPS65950实时时钟时序补偿分析

    电子发烧友网站提供《TPS65950实时时钟时序补偿分析.pdf》资料免费下载
    发表于 10-29 10:01 0次下载
    TPS65950<b class='flag-5'>实时时钟</b>时序补偿分析

    使用实时时钟

    电子发烧友网站提供《使用实时时钟库.pdf》资料免费下载
    发表于 10-22 10:09 0次下载
    使用<b class='flag-5'>实时时钟</b>库

    bq32000实时时钟(RTC)数据表

    电子发烧友网站提供《bq32000实时时钟(RTC)数据表.pdf》资料免费下载
    发表于 08-23 11:23 0次下载
    bq32000<b class='flag-5'>实时时钟</b>(RTC)数据表

    BQ32002实时时钟(RTC)数据表

    电子发烧友网站提供《BQ32002实时时钟(RTC)数据表.pdf》资料免费下载
    发表于 08-23 11:23 0次下载
    BQ32002<b class='flag-5'>实时时钟</b>(RTC)数据表

    bq3285实时时钟(RTC)数据表

    电子发烧友网站提供《bq3285实时时钟(RTC)数据表.pdf》资料免费下载
    发表于 08-23 11:21 0次下载
    bq3285<b class='flag-5'>实时时钟</b>(RTC)数据表

    TCXO RTC实时时钟模块的特性

    高精度实时时钟模块内建TCXO数字式实时时钟模块的特征【序文】时间是我们日常生活中的基本概念。火车运行管理、进出场管理等各种处理系统和应用程序按照时间信息工作。在金融、股市领域中,时间操纵着巨大利益
    的头像 发表于 08-14 11:44 347次阅读
    TCXO RTC<b class='flag-5'>实时时钟</b>模块的特性

    RTC实时时钟的基本概念和工作原理

    在现代电子设备中,精确的时间管理和控制是至关重要的。为了实现这一功能,实时时钟(RTC, Real-Time Clock)模块被广泛应用于各种设备和系统中。RTC模块作为一个独立的定时器,能够提供
    的头像 发表于 05-27 15:43 3607次阅读

    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 13次下载

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

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

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

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

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

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

    带电池的实时时钟1338 数据表

    电子发烧友网站提供《带电池的实时时钟1338 数据表.pdf》资料免费下载
    发表于 12-21 10:47 0次下载
    带电池的<b class='flag-5'>实时时钟</b>1338 数据表