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的時間