1. 模块参数

  1.1. 工作电压:3.3–5.5V

  1.2. 时钟芯片:高精度时钟芯片DS3231

  1.3. 时钟精度:0-40℃范围内,精度2ppm,年误差约1分钟

  1.4. 带2个日历闹钟

  1.5. 可编程方波输出

  1.6. 实时时钟产生秒、分、时、星期、日期、月和年计时,并提供有效期到2100年的闰年补偿

  1.7. 芯片内部自带温度传感器,精度为±3℃

  1.8. 存储芯片:AT24C32(存储容量32K)

  1.9. IIC总线接口,最高传输速度400KHz(工作电压为5V时)

  1.10. 可级联其它IIC设备,24C32地址可通过短路A0/A1/A2修改,默认地址为0x57

  1.11. 带电池CR2032,保证系统断电后,时钟任然正常走动

 

2. 接线

  DS3231 | Arduino

  SCL    A5

  SDA    A4

  VCC   5V

  GND   GND

  

 

3. Arduino 供电方式

  3.1. VIN引脚为Arduino开发板供电时,直流电源电压必须为7V ~ 12V。

  3.2. 5V 引脚不仅可以用于为外部电子元件提供+5V电源,也可以用于为Arduino开发板供电使用。

  注:为Arduino供电电压要合适,电压过低,板子工作会不稳定,电压过高容易烧坏板子。

 

/**
 * DS1307, DS3231 and DS3232 RTCs basic library
 *
 * Really tiny library to basic RTC functionality on Arduino.
 *
 * Supported features:
 *     * SQuare Wave Generator
 *     * Fixed output pin for DS1307
 *     * RAM for DS1307 and DS3232
 *     * temperature sensor for DS3231 and DS3232
 *     * Alarms (1 and 2) for DS3231 and DS3232
 *     * Power failure check for DS3231 and DS3232
 *
 * See uEEPROMLib for EEPROM support.
 *
 * @copyright Naguissa
 * @author Naguissa
 * @url https://github.com/Naguissa/uRTCLib
 * @url https://www.foroelectro.net/librerias-arduino-ide-f29/rtclib-arduino-libreria-simple-y-eficaz-para-rtc-y-t95.html
 * @email naguissa@foroelectro.net
 */
#include "Arduino.h"
#include "uRTCLib.h"


// uRTCLib rtc;
uRTCLib rtc(0x68);


void setup() {
delay (2000);
	Serial.begin(9600);
	Serial.println("Serial OK");

	#ifdef ARDUINO_ARCH_ESP8266
		URTCLIB_WIRE.begin(0, 2); // D3 and D4 on ESP8266
	#else
		URTCLIB_WIRE.begin();
	#endif

	rtc.set(0, 21, 0, 1, 17, 1, 21);
	//  RTCLib::set(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
}

void loop() {
	rtc.refresh();

	Serial.print("RTC DateTime: ");
	Serial.print(rtc.year());
	Serial.print('/');
	Serial.print(rtc.month());
	Serial.print('/');
	Serial.print(rtc.day());

	Serial.print(' ');

	Serial.print(rtc.hour());
	Serial.print(':');
	Serial.print(rtc.minute());
	Serial.print(':');
	Serial.print(rtc.second());

	Serial.print(" DOW: ");
	Serial.print(rtc.dayOfWeek());

	Serial.print(" - Temp: ");
	Serial.print(rtc.temp()  / 100);

	Serial.println();

	delay(1000);
}

  

 

参照

https://blog.csdn.net/acktomas/article/details/88359239

https://github.com/Naguissa/uRTCLib

https://blog.csdn.net/daybreak___/article/details/82824321