简介
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
引脚说明
- 连接arduino平台接口(Gravity接口):
- SDA:I2C数据输入引脚
- SCL:I2C时钟输入引脚
- GND:电源负
- VCC:电源正
- 预留排针引脚
- SDA:I2C数据输入引脚
- SCL:I2C时钟输入引脚
- GND:电源负
- VCC:电源正
- INT:中断引脚
使用教程
- 目标:设置初始时间,串口每秒读取当前时间
准备
- 硬件
- 1 x Arduino UNO控制板
- 1 x SD2405 RTC Module
- 若干 杜邦线
- 软件
- Arduino IDE 点击下载Arduino IDE
接线图
- 按图把传感器和模块相连接,线序如下:(注意:这是UNO的线序,其他主控器,请连接至对应的I2C管脚)
模块 ———— UNO板子 |
---|
VCC ———— 5V |
GND ———— GND |
SDA ———— A4(SDA) |
SCL ———— A5(SCL) |
样例代码
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串口查看时间信息
注意事项
注意:
关于实时时钟寄存器中,地址为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或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。