با سلام
در این زمینه ماژول آماده ای وجود ندارد و باید با کد نویسی این مورد را بسازید.
در مرحله اول این موضوع را باید در نظر داشته باشید که قبل از خاموش شدن سیستم (آردوینو یا هر میکروکنترلی) اطلاعات را ذخیره بکنید و سپس اقدام به خاموش کردن سیستم بکنید و عدم ذخیره کردن باعث پاک شدن اطلاعات اون بازه زمانی میشود.
حال برویم بر روی پروژه کار کنیم.
اگر از برد های آردوینو برای انجام این کار میخواهید استفاده بکنید.
شما نیاز به تنظیم تایمر های داخلی ATMega دارید. تنظیم کردن این تایمر ها اکثرا کار سخت و پیچیده هستند.
یک راه مطالعه داکیومنت ها و ساخت تایمر می باشد.
راه دیگر استفاه از کتابخانه تایمر میباشد.
با استفاده از این کتابخانه و تنظیم فانکشن یک تایمر بر اساس زمان مشخص شده ایجاد میکنید.
حال یک متغییر long تعریف بکنید و در هر لوپ این مقدار را یکی زیاد بکنید.
در نهایت در زمانی که مشخص کردید که دیگر نشمارد. اطلاعات را بر روی EEPROM ذخیره بکنید. برای این موضوع نیز از این آموزش میتوانید کمک بگیرد
اگر بخواهید با برد های ESP این کار را انجام بدهید.
2 متد وجود دارد:
استفاده روشی مانند آردوینو : از این آموزش برای تنظیم تایمر می توانید استفاده بکنید
و برای ذخیره سازی نیز به جای EEPROM میتوانید از SPIFFS استفاده بکنید که از این آموزش میتوانید این مورد را اجرا بکنید.
روش دیگر به جای تایمر میتوانید از کتابخانه ESP32Time استفاده بکنید.
به این صورت که در زمان شروع زدن کلید اطلاعات زمان را از طریق دستور setTime() به بخش RTC داخلی بدهید و زمانی که کلید خاموش را زدید با دستور getEpoch() مقدار ثانیه ای زمان را دریافت کنید. و در SPIFFS بریزید.
مزیت این روش این می باشد که به صورت داخلی خودش ساعت و تاریخ را نسبت به 0 محاسبه میکند.