time_lapse_photos.py

# Questo lavoro è concesso in licenza MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tutti i diritti riservati.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Foto a intervalli regolari (Time Lapse) (Credit nedhorning)
#
# Questo esempio mostra come scattare foto a intervalli regolari (time lapse) usando la vostra OpenMV
# Cam e come usare il modulo RTC insieme a un interrupt del timer per ottenere
# un funzionamento a consumo molto basso.
#
# Notare che se la USB è ancora collegata mentre la fotocamera sta scattando
# le foto, verrà eseguito il bootloader ogni volta. Alimentare la fotocamera
# da una fonte diversa dalla USB per evitare che il bootloader venga eseguito.

import machine
import csi
import os

# Crea e inizializza l'oggetto RTC. Questo ci permetterà di impostare l'ora corrente per
# l'RTC e di impostare un interrupt per svegliarsi in seguito.
rtc = machine.RTC()
newFile = False

try:
    os.stat("time.txt")
except OSError:
    # Se il file di log non esiste, imposta l'RTC e imposta newFile su True
    # formato datetime: anno, mese, giorno, giorno della settimana (Lunedì=1, Domenica=7),
    # ore (formato 24 ore), minuti, secondi, sottosecondi (conta alla rovescia da 255 a 0)
    rtc.datetime((2018, 3, 9, 5, 13, 0, 0, 0))
    newFile = True

# Estrae la data e l'ora dall'oggetto 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 del file immagine basato sull'RTC
newName = "I" + year + month + day + hour + minute + second

# Abilita gli interrupt RTC ogni 10 secondi, la fotocamera si RESETTERÀ al risveglio dalla modalità deepsleep.
rtc.wakeup(10000)

BLUE_LED_PIN = 3

csi0 = csi.CSI()
csi0.reset()  # Inizializza il sensore della fotocamera.
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.VGA)
csi0.snapshot(time=1000)  # Lasciare che le nuove impostazioni abbiano effetto.

led = machine.LED("LED_BLUE")

if newFile:
    # Se il file di log non esiste, crearlo.
    with open("time.txt", "a") as timeFile:
        # Scrive un file di testo per tenere traccia di data, ora e numero dell'immagine.
        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:
        # Aggiunge data, ora e numero dell'immagine al file di testo.
        timeFile.write(
            f"{newName},{year},{month},{day},{hour},{minute},{second},{subSecond}\n"
        )

if not "images" in os.listdir():
    os.mkdir("images")  # Crea una directory temporanea

# Scatta la foto e la salva sulla scheda SD
led.on()
img = csi0.snapshot()
img.save("images/" + newName, quality=90)
led.off()

# Entra in modalità Deepsleep (cioè la OpenMV Cam si spegne di fatto tranne che per l'RTC).
machine.deepsleep()

results matching ""

    No results matching ""