3.28. Relógio de tempo real

O relógio de milissegundos do microcontrolador – aquele por trás de time.ticks_ms() e do subsistema de timers – conta o tempo decorrido desde a inicialização. O relógio de tempo real (RTC) é um hardware separado que rastreia o tempo de relógio de parede – ano, mês, dia, hora, minuto, segundo – e continua funcionando através de resets e atualizações de firmware. Em câmeras com uma bateria de backup ligada à alimentação do RTC, ele sobrevive também a uma perda total de energia.

O RTC é o que uma câmera implantada usa para:

  • Carimbar com a data e hora reais as entradas de log e as imagens salvas.

  • Cadenciar tarefas de longa duração que não devem desviar ao longo de semanas ou meses.

3.28.1. A classe machine.RTC

machine.RTC é um singleton – um RTC por câmera, sem necessidade de id:

from machine import RTC

rtc = RTC()

A data e a hora atuais ficam em datetime(). Chamá-lo sem argumentos retorna uma tupla de 8 elementos:

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

Os campos são (year, month, day, weekday, hour, minute, second, subseconds). Para acertar o relógio, passe de volta uma tupla de 8 elementos com o mesmo formato:

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

A câmera continua contando a partir daquele ponto. Em um soft reset o tempo continua ininterrupto; em um ciclo completo de energia o RTC volta ao seu horário padrão, a menos que uma bateria de backup o mantenha alimentado.

3.28.2. Quando acertar o RTC

O RTC não tem nenhuma forma embutida de saber que horas são na inicialização. Três padrões comuns o acertam:

  • A partir de uma fonte de tempo de rede. Câmeras que sobem com WiFi podem buscar a hora com ntptime e gravá-la no RTC na inicialização.

  • A partir de um host via USB. Um script complementar em um laptop envia a hora atual quando a câmera é conectada.

  • A partir de um chip de RTC externo com bateria de backup. Um CI de RTC dedicado (frequentemente em um shield, com sua própria bateria de moeda) mantém o tempo de longo prazo melhor que o RTC no chip e pode ser lido na inicialização para semear datetime().

Algumas aplicações nunca precisam acertar o RTC. Um laço com ciclo de trabalho do tipo “despertar a cada 60 segundos e fazer uma leitura” só se importa com os intervalos decorridos, que time.ticks_ms() e os padrões de suspensão temporizada em Modos de baixo consumo e de suspensão tratam sem nunca consultar o valor de relógio de parede do RTC.