Ameba Arduino: [RTL8195] [RTL8710] RTC – 使用 NTP 校正 DS1307/DS3231 RTC 时间

材料准备

  • Ameba x 1
  • DS1307/DS3231 RTC x 1

范例说明

这个范例里会使用NTP来对DS1307/DS3231 RTC模组做时间校正
我们需要这几个library:
DS1307RTC library:
https://github.com/Ameba8195/Arduino/raw/master/libraries/DS1307RTC-1.0.0.zip
Time library:
https://github.com/Ameba8195/Arduino/raw/master/libraries/Time-1.0.0.zip

RTL8195接线图如下:
1

RTL8710接线图如下:
1

接着打开范例 “File” -> “Examples” -> “AmebaDS1307RTC” -> “SetTimeNtp”
修改Wifi连线需要的ssid与password,编译并上传至Ameba,完成之后按下Reset按钮。接着可以在Serial Monitor看到底下的log, 代表已从NTP校正完成。
1

程式码说明

在Wifi连线上之后,我们使用NTP对Time library做时间校正

setSyncProvider(getNtpTime);

接着使用Time library得到的时间设定tmElements_t变数的值,然后传进RTC.write()里面

RTC.write(tm);

接着在loop()里面每秒读出RTC的时间