3.28. ساعة الزمن الحقيقي

ساعة الميلي ثانية للمتحكم الدقيق -- تلك التي تقف خلف time.ticks_ms() والنظام الفرعي للمؤقتات -- تَعُدّ الزمن المنقضي منذ الإقلاع. أما ساعة الزمن الحقيقي (RTC) فهي عتاد منفصل يتتبع زمن الساعة الجدارية -- السنة والشهر واليوم والساعة والدقيقة والثانية -- ويستمر في العمل عبر عمليات إعادة التعيين وتحديثات البرنامج الثابت. وعلى الكاميرات التي يُوصَّل بها بطارية نسخ احتياطي بمصدر تغذية RTC، فإنها تصمد أمام فقدان الطاقة الكامل أيضًا.

ساعة الزمن الحقيقي هي ما تستخدمه الكاميرا المنشورة في:

  • ختم إدخالات السجل والصور المحفوظة بطابع زمني يحمل تاريخًا حقيقيًا.

  • ضبط وتيرة المهام طويلة الأمد التي ينبغي ألا تنحرف على مدى أسابيع أو أشهر.

3.28.1. الفئة machine.RTC

machine.RTC فئة مفردة (singleton) -- ساعة زمن حقيقي واحدة لكل كاميرا، ولا حاجة إلى مُعرّف id:

from machine import RTC

rtc = RTC()

يعيش التاريخ والوقت الحاليان في datetime(). واستدعاؤها بدون وسائط يُعيد صفًا ثُمانيًا (8-tuple):

>>> rtc.datetime()
(2026, 5, 27, 4, 14, 30, 15, 0)

الحقول هي (year, month, day, weekday, hour, minute, second, subseconds). ولضبط الساعة، مرّر صفًا ثُمانيًا بالشكل نفسه:

rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))

تواصل الكاميرا العدّ من تلك النقطة. عند إعادة التعيين الناعمة يستمر الوقت دون انقطاع؛ وعند دورة طاقة كاملة تعود ساعة الزمن الحقيقي إلى وقتها الافتراضي ما لم تُبقها بطارية نسخ احتياطي مُغذّاة.

3.28.2. متى تُضبط ساعة الزمن الحقيقي

لا تملك ساعة الزمن الحقيقي طريقة مدمجة لمعرفة الوقت عند الإقلاع. وثمة ثلاثة أنماط شائعة لضبطها:

  • من مصدر زمن عبر الشبكة. الكاميرات التي تُقلع متصلة بـ WiFi يمكنها جلب الوقت باستخدام ntptime وكتابته إلى ساعة الزمن الحقيقي عند بدء التشغيل.

  • من مضيف عبر USB. برنامج نصي مرافق على حاسوب محمول يدفع الوقت الحالي عند توصيل الكاميرا.

  • من شريحة RTC خارجية مدعومة ببطارية. دائرة متكاملة RTC مخصصة (غالبًا على درع، ببطارية قرصية خاصة بها) تحفظ الوقت طويل الأمد بدقة أفضل من ساعة الزمن الحقيقي المدمجة، ويمكن قراءتها عند الإقلاع لتلقيم datetime().

بعض التطبيقات لا تحتاج مطلقًا إلى ضبط ساعة الزمن الحقيقي. فحلقة ذات دورة تشغيل من نوع "استيقظ كل 60 ثانية وخذ قراءة" لا تهتم سوى بالفترات المنقضية، وهو ما تتولاه time.ticks_ms() وأنماط السكون الموقوت في أنماط الطاقة المنخفضة والسكون دون الرجوع أبدًا إلى قيمة الساعة الجدارية في RTC.