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

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

    关注

    11

    文章

    2000

    浏览量

    135320
  • Arduino
    +关注

    关注

    190

    文章

    6527

    浏览量

    197541
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MAX31342:低功耗实时时钟的理想之选

    MAX31342:低功耗实时时钟的理想之选 在电子设备的设计中,实时时钟(RTC)是一个至关重要的组件,它为设备提供精确的时间信息,确保系统的正常运行。今天,我们要介绍的是 Maxim 公司
    的头像 发表于 03-26 16:25 183次阅读

    深度剖析DS17285/DS17287等实时时钟芯片:功能、特性与应用

    深度剖析DS17285/DS17287等实时时钟芯片:功能、特性与应用 在电子设计领域,实时时钟(RTC)芯片是确保系统时间准确性和稳定性的关键组件。今天我们将深入探讨Maxim
    的头像 发表于 03-24 17:15 402次阅读

    DS3234:高精度SPI总线实时时钟的卓越之选

    DS3234:高精度SPI总线实时时钟的卓越之选 在电子设备中,实时时钟(RTC)是确保设备准确计时的关键组件。DS3234作为一款低功耗、高精度的SPI总线实时时钟,集成了温度补偿晶体振荡器
    的头像 发表于 03-24 16:00 252次阅读

    深入剖析DS2417:实时时钟芯片的技术奥秘

    深入剖析DS2417:实时时钟芯片的技术奥秘 在电子设备的设计中,实时时钟(RTC)芯片扮演着至关重要的角色,它能为设备提供精确的时间信息。DS2417就是这样一款功能强大的实时时钟芯片,下面将为
    的头像 发表于 03-24 15:40 242次阅读

    深入剖析DS1347:低功耗SPI实时时钟的卓越之选

    深入剖析DS1347:低功耗SPI实时时钟的卓越之选 在电子设备的设计中,实时时钟(RTC)是一个至关重要的组件,它能够为系统提供精确的时间信息。今天,我们将深入探讨Maxim Integrated
    的头像 发表于 03-24 10:00 188次阅读

    RTC实时时钟芯片的作用

    在物联网、工业控制、车载、医疗与消费电子中,精确、连续、掉电不丢失的真实时间是系统运行的基础。RTC(Real-TimeClock)实时时钟芯片是一种独立专用计时芯片,负责提供稳定日历时钟、断电续航、定时中断与高精度时间戳。
    的头像 发表于 03-20 15:36 986次阅读
    RTC<b class='flag-5'>实时时钟</b>芯片的作用

    实时时钟(RTC)

    在电子设备的精密世界里,实时时钟(RTC)如同一位永不疲倦的守夜人,默默维持着系统的时间秩序。无论主电源中断还是设备进入低功耗休眠,RTC都能依靠备用电源(如锂电池或超级电容)持续运行,确保时间信息
    的头像 发表于 03-12 08:21 266次阅读
    <b class='flag-5'>实时时钟</b>(RTC)

    RTC实时时钟芯片和时钟晶振在本质、功能和角色完全不同

    RTC实时时钟芯片(Real-Time Clock)和时钟晶振(Crystal Oscillator)在电子系统中协同工作,但本质、功能和角色完全不同。
    的头像 发表于 03-11 17:13 710次阅读
    RTC<b class='flag-5'>实时时钟</b>芯片和<b class='flag-5'>时钟</b>晶振在本质、功能和角色完全不同

    深入解析bq32000实时时钟:特性、应用与设计要点

    深入解析bq32000实时时钟:特性、应用与设计要点 在电子设备的设计中,实时时钟(RTC)是一个关键组件,它为系统提供精确的时间和日期信息。TI的bq32000实时时钟以其丰富的特性和可靠的性能
    的头像 发表于 02-09 11:25 441次阅读

    BQ32002实时时钟芯片:特性、应用与设计要点

    BQ32002实时时钟芯片:特性、应用与设计要点 引言 在电子设备的设计中,实时时钟(RTC)起着至关重要的作用,它能够为系统提供精确的时间和日期信息。BQ32002作为一款性能出色的实时时钟芯片
    的头像 发表于 02-09 11:10 305次阅读

    EPSON RX-4571LC实时时钟模块,满足紧凑型设备的精准计时

    如今可穿戴产品越来越普及功能不断增加,对设备紧凑度的要求越来越高,传统的分立式实时时钟电路已经难以满足主流设计需要,高效、小巧的RTC实时时钟模块应运而生。爱普生/EPSON是一家为应用客户提供时钟
    的头像 发表于 01-29 16:46 405次阅读
    EPSON RX-4571LC<b class='flag-5'>实时时钟</b>模块,满足紧凑型设备的精准计时

    爱普生RTC实时时钟模块解析与选型指南

    32.768kHz晶振广泛应用于各类时钟电路中,虽然价格较低的音叉晶振用得多,但如果对稳定性要求更高、在一些更精密的电子设备中往往就得需要更精准的32.768kHz有源晶振或者实时时钟模块(RTC
    的头像 发表于 01-05 16:40 1110次阅读
    爱普生RTC<b class='flag-5'>实时时钟</b>模块解析与选型指南

    芯伯乐PCF8563:0.25µA低功耗实时时钟解决方案

    在各类需要精准计时、日历功能的嵌入式系统中,实时时钟芯片(RTC)是不可或缺的核心元件。芯伯乐PCF8563作为一款基于IIC接口的超低功耗实时时钟/日历芯片,以其高精度、小封装、强抗干扰能力
    的头像 发表于 11-28 18:34 755次阅读
    芯伯乐PCF8563:0.25µA低功耗<b class='flag-5'>实时时钟</b>解决方案

    实时时钟芯片与晶振的不同之处

    实时时钟芯片和晶振在电子设备中都扮演着提供时钟信号的重要角色,但它们的本质、功能和复杂程度却大相径庭。简单来说,晶振是产生稳定频率的“心脏”,而实时时钟芯片则是管理和分配这些“心跳”的“大脑”。
    的头像 发表于 07-24 17:04 1924次阅读
    <b class='flag-5'>实时时钟</b>芯片与晶振的不同之处

    内置晶振、小封装的实时时钟IC-SD

    鸿合智远|兴威帆电子:内置晶振、小封装的实时时钟IC-SD
    的头像 发表于 05-28 10:01 1159次阅读
    内置晶振、小封装的<b class='flag-5'>实时时钟</b>IC-SD