3.28. 即時時鐘¶
微控制器的毫秒時鐘 -- 也就是 time.ticks_ms() 與計時器子系統背後的那個 -- 計算自開機以來經過的時間。即時時鐘(RTC)則是獨立的硬體,用來追蹤牆上時鐘時間 -- 年、月、日、時、分、秒 -- 並在重置與韌體更新過程中持續運行。在 RTC 電源接有備援電池的相機上,它甚至能在完全斷電時存活下來。
已部署的相機會用 RTC 來:
為日誌條目與儲存的影像加上真實日期的時間戳記。
為不應在數週或數月內產生漂移的長時間運行任務調控節奏。
3.28.1. machine.RTC 類別¶
machine.RTC 是一個單例 -- 每台相機一個 RTC,不需要 id:
from machine import RTC
rtc = RTC()
目前的日期與時間存放在 datetime() 中。不帶參數呼叫它會回傳一個 8 元組:
>>> rtc.datetime()
(2026, 5, 27, 4, 14, 30, 15, 0)
各欄位為 (year, month, day, weekday, hour, minute, second, subseconds)。若要設定時鐘,請傳回一個相同形狀的 8 元組:
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
相機會從該時間點繼續計時。在軟重置時,時間會不間斷地延續下去;在完全電源循環後,除非有備援電池維持供電,否則 RTC 會回到它的預設時間。
3.28.2. 何時設定 RTC¶
RTC 沒有內建方法可以在開機時得知目前時間。有三種常見模式可以設定它:
從網路時間來源。 能連上 WiFi 的相機可以用
ntptime取得時間,並在啟動時將其寫入 RTC。從透過 USB 連接的主機。 筆記型電腦上的伴隨指令碼會在相機插上時推送目前時間。
從電池備援的外部 RTC 晶片。 專用的 RTC IC(通常位於擴充板上,具備自己的鈕扣電池)比晶片內建的 RTC 能更準確地長期計時,可在開機時讀取以初始化
datetime()。
有些應用程式根本不需要設定 RTC。一個工作週期化的「每 60 秒喚醒一次並讀取一次」迴圈只在意經過的時間間隔,而這由 time.ticks_ms() 與 低功耗與睡眠模式 中的定時睡眠模式即可處理,完全不需要查詢 RTC 的牆上時鐘值。