3.28. Годинник реального часу#

Мілісекундний лічильник мікроконтролера – той, що стоїть за time.ticks_ms() та підсистемою таймерів – відраховує час, що минув з моменту завантаження. Годинник реального часу (RTC) – це окреме апаратне забезпечення, яке відстежує астрономічний час – рік, місяць, день, годину, хвилину, секунду – і продовжує роботу між скиданнями та оновленнями мікропрограми. На камерах із резервним акумулятором, підключеним до живлення RTC, він зберігає час навіть при повному відключенні живлення.

RTC використовується розгорнутою камерою для:

  • Позначення записів журналу та збережених зображень реальною датою.

  • Планування тривалих завдань, які не повинні відхилятися протягом тижнів або місяців.

3.28.1. Клас machine.RTC#

machine.RTC є одинаком – один RTC на камеру, ідентифікатор не потрібен:

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). Щоб встановити годинник, передайте кортеж тієї ж форми назад:

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

Камера продовжує відлік з цієї точки. При м’якому скиданні час продовжується без перерви; при повному відключенні живлення RTC повертається до свого стандартного часу, якщо резервний акумулятор не підтримує його живлення.

3.28.2. Коли встановлювати RTC#

RTC не має вбудованого способу дізнатися точний час при завантаженні. Три поширені підходи для встановлення:

  • З мережевого джерела часу. Камери, що підключаються до WiFi, можуть отримати час за допомогою ntptime та записати його до RTC при запуску.

  • З хоста через USB. Супровідний скрипт на ноутбуці передає поточний час при підключенні камери.

  • Від зовнішнього RTC-чіпа з резервним акумулятором. Спеціалізована мікросхема RTC (часто на щитку з власним акумулятором у вигляді монети) забезпечує кращий довгостроковий облік часу, ніж вбудований RTC, і може зчитуватися при завантаженні для ініціалізації datetime().

Деякі застосунки взагалі не потребують встановлення RTC. Цикл із регульованим навантаженням «прокидатися кожні 60 секунд і знімати показання» дбає лише про прошлі інтервали, які time.ticks_ms() та шаблони сну з таймером у Режими низького споживання та сну забезпечують без звернення до астрономічного часу RTC.