DS3231高精度时钟模块怎么接线?Arduino断电不掉时间的对时和读取方法

2026-10-19 20:34:39 37阅读

做记录仪、气象站、门禁或任何需要知道“现在几点”又不想一直连着电脑的项目,都得靠一颗RTC实时时钟芯片。DS3231是目前精度高又便宜的选择,它内部有温度补偿晶振,号称一年误差只有几分钟,还带一颗钮扣电池,断电后时间照样走。这篇讲它怎么接、怎么对时、怎么读时间。

DS3231模块引脚和I2C接线

模块走的是I2C总线,真正要用就四根线:VCC接电源(3.3V或5V都行)、GND接地、SDA接Arduino的A4、SCL接A5。它默认I2C地址是0x68。模块上通常带一颗CR2032钮扣电池和电池座,主电源断了靠它维持走时,主电源来了会自动切回,不用担心时间被断电清掉。

图上这个接法很直观——四根线把VCC/GND/SDA/SCL接好,再插上钮扣电池。因为SDA/SCL上已经有板载上拉电阻,不用自己另加上拉。它背后还有32K(32kHz方波输出)和SQW(方波/闹钟中断输出)两个可选脚,用不到就空着。

这块模块实物把芯片和背面的钮扣电池看得更清楚——出货默认不装电池的话得自己塞一颗CR2032进去,不然断电解质时间就丢了。它比普通DS1307模块省事的地方就是内置温补晶振,时钟不会因为温度变化跑偏,这是它贵一点但值得的原因。

对时和读取时间的代码思路

库直接用RTClib,初始化后第一次需要调用一次“对时”操作,把当前编译时刻写进RTC(一般是先设一次,之后注释掉,防止每次重启都重置)。对完时就能随时读了:在循环里读rtc.now(),得到年、月、日、时、分、秒和星期。要显示就在OLED、LCD或串口上把它们按“2026/10/19 20:30”这样格式化输出。

几点提醒

一是IO接线认准I2C:Uno上是A4/A5,别插到普通数字脚上去。二是首次对时一定要做,不然读出来的是出厂默认时间。三是DS3231还内带一颗温度传感器(可以读环境温度,精度约±3℃),配SQW还能做闹钟和定时唤醒,都是往后扩展的方向。做需要长期记录时间的项目,DS3231是稳定可靠的底座。


作者:云台四足控
链接:https://www.aiddithome.com/p/10d0b07867b3ce.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
隔壁工位的好奇宝
1楼 · 2026-10-19 20:34:41

塞颗CR2032进去断电时间也不丢,这就是RTC存在的意义

修啥都行二哥
2楼 · 2026-10-19 20:34:41

它温补晶振精度高,配表做气象站记录时间很稳

下班才有空
3楼 · 2026-10-19 20:34:40

I2C认准A4/A5,接普通数字脚上时间读不出来

刷视频进来围观
4楼 · 2026-10-19 20:34:40

首次用一定要先对一次时,不然读出来是出厂默认时间