3.28. 실시간 클록¶
마이크로컨트롤러의 밀리초 클록, 즉 time.ticks_ms()와 타이머 서브시스템 뒤에 있는 그 클록은 부팅 이후 경과한 시간을 셉니다. 실시간 클록(RTC)은 별도의 하드웨어로, 벽시계 시간(연, 월, 일, 시, 분, 초)을 추적하며 리셋과 펌웨어 업데이트 전반에 걸쳐 계속 동작합니다. RTC 전원에 백업 배터리가 연결된 카메라에서는 완전한 전원 손실에서도 살아남습니다.
배포된 카메라가 RTC를 사용하는 용도는 다음과 같습니다:
로그 항목과 저장된 이미지에 실제 날짜로 타임스탬프를 찍습니다.
수 주 또는 수 개월에 걸쳐 드리프트가 없어야 하는 장시간 작업의 속도를 조절합니다.
3.28.1. machine.RTC 클래스¶
machine.RTC는 싱글턴입니다. 카메라당 RTC는 하나뿐이며 id가 필요 없습니다:
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)입니다. 클록을 설정하려면 동일한 형태의 8-튜플을 다시 전달합니다:
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
카메라는 그 지점부터 계속 셉니다. 소프트 리셋에서는 시간이 중단 없이 이어지고, 완전한 전원 사이클에서는 백업 배터리가 전원을 유지하지 않는 한 RTC가 기본 시간으로 되돌아갑니다.
3.28.2. RTC를 설정해야 하는 시점¶
RTC에는 부팅 시 현재 시각을 알 수 있는 내장 수단이 없습니다. 이를 설정하는 세 가지 일반적인 패턴이 있습니다:
네트워크 시간 소스로부터. WiFi로 부팅되는 카메라는
ntptime으로 시간을 가져와 시작 시 RTC에 기록할 수 있습니다.USB를 통한 호스트로부터. 노트북에서 실행되는 동반 스크립트가 카메라가 연결될 때 현재 시간을 밀어 넣습니다.
배터리 백업 외부 RTC 칩으로부터. 전용 RTC IC(보통 자체 코인 셀을 갖춘 실드 위에 있음)는 온칩 RTC보다 장기적으로 시간을 더 정확하게 유지하며, 부팅 시 읽어
datetime()을 초기화할 수 있습니다.
어떤 애플리케이션은 RTC를 전혀 설정할 필요가 없습니다. “60초마다 깨어나서 측정값을 읽는” 듀티 사이클 루프는 경과 간격에만 관심이 있는데, 이는 time.ticks_ms()와 저전력 및 슬립 모드의 타이머 기반 슬립 패턴이 RTC의 벽시계 값을 전혀 참조하지 않고도 처리합니다.