time_lapse_photos.py

# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2023 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# タイムラプス写真(credit: nedhorning)
#
# この例では、OpenMV Camで
# RTCモジュールとタイマー割り込みを使って非常に低消費電力で
# タイムラプス写真を撮影する方法を示します。
#
# 注意: USBが接続されたまま写真を撮影すると、そのたびに
# ブートローダーが起動します。ブートローダーを起動させないため、
# カメラはUSB以外の電源から給電してください。

import machine
import csi
import os

# RTCオブジェクトを作成して初期化します。これにより
# RTCの現在時刻を設定し、後で起床するための割り込みを設定できます。
rtc = machine.RTC()
newFile = False

try:
    os.stat("time.txt")
except OSError:
    # ログファイルが存在しない場合は、RTCを設定してnewFileをTrueにします
    # 日時形式: year, month, day, weekday(月曜=1、日曜=7),
    # hours(24時間制), minutes, seconds, subseconds(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

# RTC割り込みを10秒ごとに有効にします。カメラはディープスリープから復帰するとRESETされます。
rtc.wakeup(10000)

BLUE_LED_PIN = 3

csi0 = csi.CSI()
csi0.reset()  # カメラセンサーを初期化します。
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.VGA)
csi0.snapshot(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 = csi0.snapshot()
img.save("images/" + newName, quality=90)
led.off()

# ディープスリープモードに入ります(つまりOpenMV CamはRTC以外を実質的にオフにします)。
machine.deepsleep()

results matching ""

    No results matching ""