Gravity I2C SD2405 RTC 实时时钟模块

简介

Gravity家族又迎来了一位新成员:Gravity I2C SD2405 RTC module。这是一块高精度实时时钟模块。支持I2C串行通信,具有低功耗,宽电压,易使用等特点。
SD2405 RTC模块内置晶振、兼容Gravity接口,不需要额外的钮扣电池供电,内含一次性工业级电池,可保证外部掉电的情况下,持续工作5~8年时间, 超低功耗,超长待机。
Gravity SD2405 RTC模块可以用于数据记录, 定时闹钟, 时钟计时等基于时间基础的应用。做一个独特的时钟不再是难题。你只需将模块接在我们标准的Gravity I2C接口上即可。
本Gravity RTC模块可实现定时/报警中断输出, 年、月、日、星期、时、分、秒的功能显示, 和时间相关的作品如定时小闹钟这种应用绝对是你的最好选择。

产品特性

  • 低功耗: 1.0μA 典型值(时钟电路部分, Ta=25℃)。
  • 工作电压:3.3V~5.5V, 工作温度:-40℃~85℃。
  • 标准I2C总线接口方式, 时钟电路最高速度400KHZ(4.5V~5.5V)。
  • 年、月、日、星期、时、分、秒的BCD码输入/输出,并可通过独立的地址访问各时间寄存器
  • 闰年自动调整功能(从2000年~2099年)。
  • 可选择12/24小时制式.
  • 内置年、月、日、星期、时、分、秒共7字节的报警数据寄存器及1字节的报警允许寄存器。
  • 内置12字节通用SRAM寄存器可用于存储用户的一般数据。
  • 三种中断均可选择从INT脚输出,并具有两个中断标志位.
  • 可设定并自动重置的单路报警中断功能(时间范围最长设至100年),年、月、日、星期、时、分、秒报警共有96种组合方式, 并有单事件报警和周期性报警两种中断输出模式.
  • 周期性频率中断输出:从32768Hz~1/16Hz……1秒共十五种方波脉冲.
  • 自动重置的8位倒计时定时器,可选的4种时钟源(4096HZ、64HZ、1HZ、1/60HZ)。
  • 内置晶振, 出厂前已对时钟进行校准, 时钟精度为±5ppm(在25℃±1℃下), 即年误差小于2.5 分钟。
  • 内置时钟精度数字调整功能, 可通过程序来调整走时的快慢。用户采用外置或内置的温度传感器, 设定适应温度变化的调整值, 可实现在宽温范围内高精度的计时功能(在-10℃~50℃小于5 ppm, 在-40℃~85℃小于10ppm)。
  • 内置备电自动切换功能 , 芯片依据不同的电压自动从VDD切换到VBAT或从VBAT切换到VDD。
  • 在VBAT模式下, 芯片具有中断输出允许或禁止的功能,可满足在备用电池供电时输出中断的需要。
  • 内置I2C总线0.5秒自动复位功能(从Start命令开始计时),保证时钟数据的有效性及可靠性,避免总线挂死问题。
  • 内置三个时钟数据写保护位, 避免对数据的误写操作, 可更好地保护时钟数据。
  • 内置VBAT模式I2C总线通信禁止功能, 从而避免在电池供电时CPU对时钟操作所消耗的电池电量, 也可避免在主电源上、下电的过程中因CPU的I/O端口所输出的不受控的杂波信号对时钟芯片的误写操作, 进一步提高时钟芯片的可靠性。
  • 内置上电复位电路及指示位;内置电源稳压,内部计时电压可低至1.5V。
  • 芯片管脚抗静电(ESD)>4KV。

技术规格

  • 工作电压:3.3V~5V
  • 工作电流:1uA(内置电池)
  • 计时范围:至2099年(带闰年补偿)
  • 接口方式:I2C接口
  • I2C地址:0x32
  • 工作温度:-40℃~+85℃
  • 模块尺寸:35.50 * 22.00(mm)
  • 重量:6g

引脚说明

20170207133718.png

  • 连接arduino平台接口(Gravity接口):
  1. SDA:I2C数据输入引脚
  2. SCL:I2C时钟输入引脚
  3. GND:电源负
  4. VCC:电源正
  • 预留排针引脚
  1. SDA:I2C数据输入引脚
  2. SCL:I2C时钟输入引脚
  3. GND:电源负
  4. VCC:电源正
  5. INT:中断引脚

使用教程

  • 目标:设置初始时间,串口每秒读取当前时间

准备

  • 硬件
    • 1 x Arduino UNO控制板
    • 1 x SD2405 RTC Module
    • 若干 杜邦线
  • 软件

接线图

  • 按图把传感器和模块相连接,线序如下:(注意:这是UNO的线序,其他主控器,请连接至对应的I2C管脚)
模块 ————  UNO板子
VCC  ————  5V
GND  ————  GND
SDA  ————  A4(SDA)
SCL  ————  A5(SCL)

20170207133957.png

样例代码

GitHub库文件链接Gravity-I2C-SD2405-RTC-Module。下载并安装GravityRtc库文件。不会安装?看这边

rtc.adjustRtc(F(__DATE__), F(__TIME__));  //自动设置RTC时钟:通过获取电脑时间校准RTC模块,首先需要保证电脑时间正确,在设置完时间后,需要添加“//”注注释此行,以保证下次启动时,不会重置时间!!!!!!

rtc.adjustRtc(2017,6,19,1,12,7,0);    //手动设置RTC时钟:2017/6/19,周一,12点07分0秒。在设置完时间后,需要添加“//”注注释此行,以保证下次启动时,不会重置时间!!!!!!


    #include "GravityRtc.h"
    #include "Wire.h"

    GravityRtc rtc;     //RTC Initialization

    void setup() {
      Serial.begin(9600);
      rtc.setup();
      //自动设置RTC时钟:通过获取电脑时间校准RTC模块,首先需要保证电脑时间正确
      rtc.adjustRtc(F(__DATE__), F(__TIME__));

      //手动设置RTC时钟
      //rtc.adjustRtc(2017,6,19,1,12,7,0);  //设置时间:2017/6/19,周一,12点07分0秒
    }

    void loop() {
      rtc.read();
      //*************************Time********************************
      Serial.print("   Year = ");//year
      Serial.print(rtc.year);
      Serial.print("   Month = ");//month
      Serial.print(rtc.month);
      Serial.print("   Day = ");//day
      Serial.print(rtc.day);
      Serial.print("   Week = ");//week
      Serial.print(rtc.week);
      Serial.print("   Hour = ");//hour
      Serial.print(rtc.hour);
      Serial.print("   Minute = ");//minute
      Serial.print(rtc.minute);
      Serial.print("   Second = ");//second
      Serial.println(rtc.second);
      delay(1000);

    }


结果

  • 在Ardunio串口查看时间信息

DFR0469_Time_Setting.png

注意事项

注意:

关于实时时钟寄存器中,地址为02H的小时设置:

实时时钟寄存器

1.最高位为时制12/24设置,0为12小时制,1为24小时制

2.高四位的后三位为24小时制的十位设置位,第四位为24小时制的个位设置位

3.24小时制设置 eg:

hour:04:00(24-hour format) 10000004B 84H Wire.write(0x84);

hour:12:00(24-hour format) 10010002B 92H Wire.write(0x92);

hour:23:00(24-hour format) 10100003B A2H Wire.write(0xA2);

4.读取时需要屏蔽最高位,示例程序中已经处理 |

Mind+ 上传模式编程(图形化)

1、下载及安装软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装

2、切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程

3、“扩展”中选择“主控板”中的“Arduino Uno”,“传感器”中加载“实时时钟sd2405”。 详细教程:Mind+基础wiki教程-加载扩展库流程

4、进行编程,程序如下图:

初次使用,首先上传第一段代码手动写入时间。之后上传第二段代码获取时间数据。<br>

5、菜单“连接设备”,“上传到设备”

6、程序上传完毕后,打开串口即可看到数据输出。详细教程:Mind+基础wiki教程-串口打印


结果

打开串口监视器,将波特率调整到9600,可以读取到时间值。

Mind+ Python模式编程(行空板)

Mind+Python模式为完整Python编程,因此需要能运行完整Python的主控板,此处以行空板为例说明

连接图

操作步骤

1、下载及安装官网最新软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装

2、切换到“Python模式”。“扩展”中选择“pinpong库”中的“pinpong初始化”和“实时时钟SD2405”。切换模式和加载库的详细操作链接

3、进行编程

4、连接行空板,程序点击运行后,可在终端查看数据。行空板官方文档-行空板快速上手教程 (unihiker.com)

示例代码1-时间校准

图形化编程

代码编程


#  -*- coding: UTF-8 -*-

# MindPlus
# Python
from pinpong.libs.dfrobot_ds0469 import DS0469
from pinpong.board import Board


Board().begin()
p_sd2405 = DS0469()
p_sd2405.adjust_aotu()
p_sd2405.adjust_rtc(2021, 1, 4, 1, 13, 30, 0)

示例代码2-时间获取

图形化编程

代码编程

以pinpong库为例,行空板官方文档-行空板快速上手教程 (unihiker.com)

#  -*- coding: UTF-8 -*-

# MindPlus
# Python
from pinpong.libs.dfrobot_ds0469 import DS0469
from pinpong.board import Board


Board().begin()
p_sd2405 = DS0469()
p_sd2405.adjust_aotu()

while True:
    p_sd2405.read()
    print((str(p_ds1307now.hours) + str((str(":") + str((str(p_ds1307now.minute) + str((str(":") + str(p_ds1307now.second)))))))))
    time.sleep(1)

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多资料

DFshopping_car1.png DFRobot商城购买链接