3.28. Relógio de tempo real¶
O relógio de milissegundos do microcontrolador – o que está por trás de time.ticks_ms() e do subsistema de temporizadores – conta o tempo decorrido desde o arranque. O relógio de tempo real (RTC) é hardware separado que segue o tempo de relógio de parede – ano, mês, dia, hora, minuto, segundo – e continua a funcionar entre resets e atualizações de firmware. Nas câmaras com uma bateria de backup ligada à alimentação do RTC, sobrevive também a perdas completas de energia.
O RTC é o que uma câmara em produção usa para:
Registar entradas de log e imagens guardadas com uma data real.
Cadenciar tarefas de longa duração que não devem derivar ao longo de semanas ou meses.
3.28.1. A classe machine.RTC¶
machine.RTC é um singleton – um RTC por câmara, sem necessidade de id:
from machine import RTC
rtc = RTC()
A data e hora atuais residem em datetime(). Chamá-lo sem argumentos devolve um tuplo 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 um tuplo de 8 elementos com a mesma forma:
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
A câmara continua a contar a partir desse ponto. Num reset suave, o tempo continua sem interrupção; num ciclo completo de energia, o RTC volta ao seu tempo predefinido, exceto se uma bateria de backup o mantiver alimentado.
3.28.2. Quando definir o RTC¶
O RTC não tem forma integrada de saber que horas são no arranque. Três padrões comuns permitem defini-lo:
A partir de uma fonte de tempo de rede. As câmaras que arrancam em WiFi podem obter a hora com
ntptimee escrevê-la no RTC no início.A partir de um anfitrião por USB. Um script companion num portátil envia a hora atual quando a câmara é ligada.
A partir de um chip RTC externo com bateria de backup. Um CI RTC dedicado (muitas vezes numa shield, com a sua própria célula moeda) mantém uma hora de longo prazo melhor do que o RTC integrado e pode ser lido no arranque para alimentar
datetime().
Algumas aplicações nunca precisam de definir o RTC. Um ciclo de «acordar a cada 60 segundos e fazer uma leitura» por duty cycle apenas se preocupa com 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 consultar o valor de relógio de parede do RTC.