Example: 01-Camera/00-Snapshot/time_lapse_photos.py

# 本作品采用MIT许可证授权。
# 版权所有 (c) 2013-2023 OpenMV LLC。保留所有权利。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 延时摄影(Credit nedhorning)
#
# 此示例展示了如何使用您的OpenMV
# 摄像头和RTC模块以及定时器中断来实现
# 极低功耗操作。
#
# 请注意,如果相机在拍摄
# 照片时USB仍然插着,每次都会运行引导程序。请为相机
# 提供除USB以外的电源,以避免引导程序运行。

import machine
import sensor
import os

# 创建并初始化RTC对象。这将允许我们为
# RTC设置当前时间,并让我们设置一个中断以便稍后唤醒。
rtc = machine.RTC()
newFile = False

try:
    os.stat("time.txt")
except OSError:
    # 如果日志文件不存在,则设置RTC并将newFile设置为True
    # 日期时间格式:年、月、日、星期几(周一=1,周日=7)、
    # 小时(24小时制)、分钟、秒、亚秒(从255倒数到0)
    rtc.datetime((2018, 3, 9, 5, 13, 0, 0, 0))
    newFile = True

# 从RTC对象中提取日期和时间。
dateTime = rtc.datetime()
year = str(dateTime[0])
month = "%02d" % dateTime[1]
day = "%02d" % dateTime[2]
hour = "%02d" % dateTime[4]
minute = "%02d" % dateTime[5]
second = "%02d" % dateTime[6]
subSecond = str(dateTime[7])

# 基于RTC的图像文件名
newName = "I" + year + month + day + hour + minute + second

# 每10秒启用RTC中断,相机将在从深度睡眠模式唤醒后重置。
rtc.wakeup(10000)

BLUE_LED_PIN = 3

sensor.reset()  # 初始化相机传感器。
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.VGA)
sensor.skip_frames(time=1000)  # 让新设置生效。

led = machine.LED("LED_BLUE")

if newFile:
    # 如果日志文件不存在,则创建它。
    with open("time.txt", "a") as timeFile:
        # 写入文本文件以记录日期、时间和图像编号。
        timeFile.write("name, year, month, day, hours, minutes, seconds, subseconds\n")
        timeFile.write(
            f"{newName},{year},{month},{day},{hour},{minute},{second},{subSecond}\n"
        )
else:
    with open("time.txt", "a") as timeFile:
        # 将日期、时间和图像编号追加到文本文件中。
        timeFile.write(
            f"{newName},{year},{month},{day},{hour},{minute},{second},{subSecond}\n"
        )

if not "images" in os.listdir():
    os.mkdir("images")  # 创建一个临时目录

# 拍摄照片并保存到SD卡
led.on()
img = sensor.snapshot()
img.save("images/" + newName, quality=90)
led.off()

# 进入深度睡眠模式(即OpenMV Cam除了RTC外,实际上会关闭自己)。
machine.deepsleep()

results matching ""

    No results matching ""