RTC DS3231 控制Arduino定時開關

定時開關的作用是在不需要使用的時候斷電,就可以完全節省電力,在戶外的時候十分好用。

論文已經發表,open access, 有興趣可以參考。但請不要跟我要程式。最下面有簡單程式說明

https://www.mdpi.com/2227-9717/9/5/813

RTC DS3231部分電路

透過DS3231的中斷來啟動P mosfet,開始供電,任務結束,Arduino清除DS3231的flag, DS3231的INT (pin3)就會回到floating,關閉P mosfet。

簡單程式說明 (只有四步驟)

紀錄編譯的時間

RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__); 

以下是設定DS3231時間為編譯時間

    if (now < compiled) 

    {

        Serial.println("RTC is older than compile time!  (Updating DateTime)");

        Rtc.SetDateTime(compiled);

    }

Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeAlarmTwo);

這裡可以順帶說明一下,通常可以選用的設定都是定義在*.h內,也就是RtcDS3231.h

這個檔案是在,  .. Documents\Arduino\libraries\Rtc_by_Makuna\src  目錄下,你可以搜尋 DS3231SquareWavePin_ModeAlarmTwo,就會知道還有哪些mode可以選用,至於為何有這些可以選,就要去看DS3231的datasheet了

        DS3231AlarmTwo alarm2(

            0,

            0,

            0, 

            DS3231AlarmTwoControl_OncePerMinute);

        Rtc.SetAlarmTwo(alarm2);

至於Alarm2除了DS3231AlarmTwoControl_OncePerMinute外還有甚麼可以選,一樣去看 RtcDS3231.h,原理詳見datasheet

Rtc.LatchAlarmsTriggeredFlags();