<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    Real time clock (RTC)

    概要

    RTC是獨立的時鐘,可以跟蹤日期和時間。本節內容為大家介紹RTC的使用以及時間的校準方法。

    RTC的API文檔

    構造

    RTC類的構造不接受任何參數,你按照下面的代碼來實例化一個RTC對象

    >>> from machine import RTC
    >>> rtc = RTC()
    

    初始化時間

    RTC對象的初始化使用init()函數, 傳入參數為一個元組,包含8個數值。

    rtc.init((2018, 11, 18, 6, 12, 15, 5, 607409))
    

    這8個數值分別對應著:

    星期 毫秒部分
    2018 11 18 6 12 15 5 607409

    注意: 星期一到星期天分別對應的是 [0-6] 而不是 [1-7]

    注意:毫秒部分的數值其實是秒數的小數點位后的數值,并不是實際的607409毫秒,而是5.607409秒

    查看當前時間

    我們可以使用datetime()函數來查看時間

    >>> rtc.datetime()
    (2018, 11, 18, 6, 12, 15, 8, 142409)
    

    同時,datetime()函數也可以像init()一樣進行初始化

    >>> rtc.datetime((2018, 11, 18, 6, 12, 15, 5, 607409))
    (2018, 11, 18, 6, 12, 15, 8, 142409)
    

    RTC的不足之處

    精度

    雖然RTC能夠為我們進行時間和日期的跟蹤,但是在MicroPython 8266上,RTC的精度存在一定的缺陷,每過7:45h便會有秒級別的誤差溢出,所以8266上,官方建議每隔7小時進行一次時間的校準。

    既然在MicroPython8266的文檔中指出了RTC的缺陷,那么很可能ESP32和ESP8266可能存在同樣的問題,因此建議大家也每7小時對時間進行一次校準。

    掉電后無法繼續計時

    因為沒有板載電池之類的措施,所以ESP32的計時器無法在掉電后進行計時工作,這就會導致你的設備在下次開機前進入初始的時間2000年1月1號。所以如果要對時間進行精準的掌控,我們需要在開機時進行時間的校準, 這一點,EMP項目可以幫助你完成。

    通過網絡校準時間

    針對以上的不足之處,解決辦法似乎也只剩下通過網絡來校準時間了。

    正如我之前所說,EMP項目是為了讓事情變得簡單。所以我們在emp-1zlab包中,就加入了RTC網絡時間校準的接口,你只需要簡單的調用,即可完成時間的校準。

    >>> from emp_utils import sync_time
    >>> sync_time()
    before sync:  (2000, 1, 1, 5, 0, 3, 19, 182131)
    after sync:  (2018, 11, 27, 1, 11, 8, 42, 175)
    

    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人