Routine explanation 05-Snapshot->time_lapse_photos time lapse photos
# 此示例展示了如何使用OpenMV Cam拍摄延时照片,并使用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设置为真实日期时间格式:年,月,日,
# 工作日(星期一= 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
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()
# 进入深度睡眠模式(即,除RTC外,OpenMV Cam有效关闭)。
machine.deepsleep()
Singtown Technology OpenMV official Chinese document function explanation: