time_lapse_photos.py

# Este trabalho está licenciado sob a licença MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Todos os direitos reservados.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Fotos em Time Lapse (Crédito nedhorning)
#
# Este exemplo demonstra como tirar fotos em time lapse usando sua OpenMV
# Cam e usando o módulo RTC junto com uma interrupção de timer para alcançar
# um consumo de energia muito baixo.
#
# Note que se o USB ainda estiver conectado enquanto a câmera está tirando
# fotos, o bootloader será executado a cada vez. Por favor, alimente a câmera
# a partir de outra fonte que não o USB para evitar que o bootloader seja executado.

import machine
import csi
import os

# Cria e inicializa o objeto RTC. Isso nos permitirá definir a hora atual para
# o RTC e configurar uma interrupção para despertar mais tarde.
rtc = machine.RTC()
newFile = False

try:
    os.stat("time.txt")
except OSError:
    # Se o arquivo de log não existir, então define o RTC e define newFile como True
    # formato datetime: ano, mês, dia, dia da semana (Segunda=1, Domingo=7),
    # horas (relógio de 24 horas), minutos, segundos, subsegundos (conta regressiva de 255 a 0)
    rtc.datetime((2018, 3, 9, 5, 13, 0, 0, 0))
    newFile = True

# Extrai a data e hora do objeto 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])

# Nome do arquivo de imagem baseado no RTC
newName = "I" + year + month + day + hour + minute + second

# Ativa interrupções do RTC a cada 10 segundos; a câmera fará RESET após despertar do modo Deepsleep.
rtc.wakeup(10000)

BLUE_LED_PIN = 3

csi0 = csi.CSI()
csi0.reset()  # Inicializa o sensor da câmera.
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.VGA)
csi0.snapshot(time=1000)  # Aguarda as novas configurações fazerem efeito.

led = machine.LED("LED_BLUE")

if newFile:
    # Se o arquivo de log não existir, então o cria.
    with open("time.txt", "a") as timeFile:
        # Grava um arquivo de texto para registrar data, hora e número da imagem.
        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:
        # Anexa data, hora e número da imagem ao arquivo de texto.
        timeFile.write(
            f"{newName},{year},{month},{day},{hour},{minute},{second},{subSecond}\n"
        )

if not "images" in os.listdir():
    os.mkdir("images")  # Cria um diretório temporário

# Tira a foto e salva no cartão SD
led.on()
img = csi0.snapshot()
img.save("images/" + newName, quality=90)
led.off()

# Entra em Modo Deepsleep (ou seja, a OpenMV Cam efetivamente se desliga, exceto pelo RTC).
machine.deepsleep()

results matching ""

    No results matching ""