time_lapse_photos.py
# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Photos en accéléré (crédit : nedhorning)
#
# Cet exemple montre comment prendre des photos en accéléré avec votre OpenMV
# Cam, en utilisant le module RTC ainsi qu'une interruption temporisée pour obtenir
# un fonctionnement à très faible consommation.
#
# Notez que si l'USB est toujours branché lorsque la caméra prend
# des photos, elle exécutera le bootloader à chaque fois. Veuillez alimenter la caméra
# par une source autre que l'USB pour éviter l'exécution du bootloader.
import machine
import csi
import os
# Créer et initialiser l'objet RTC. Cela nous permettra de définir l'heure actuelle pour
# le RTC et de définir une interruption pour se réveiller plus tard.
rtc = machine.RTC()
newFile = False
try:
os.stat("time.txt")
except OSError:
# Si le fichier journal n'existe pas, définir le RTC et mettre newFile à True
# format de date/heure : année, mois, jour, jour de la semaine (lundi=1, dimanche=7),
# heures (format 24 heures), minutes, secondes, sous-secondes (décompte de 255 à 0)
rtc.datetime((2018, 3, 9, 5, 13, 0, 0, 0))
newFile = True
# Extraire la date et l'heure de l'objet 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])
# Nom du fichier image basé sur le RTC
newName = "I" + year + month + day + hour + minute + second
# Activer les interruptions RTC toutes les 10 secondes ; la caméra se RÉINITIALISERA après le réveil du mode veille profonde.
rtc.wakeup(10000)
BLUE_LED_PIN = 3
csi0 = csi.CSI()
csi0.reset() # Initialiser le capteur de la caméra.
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.VGA)
csi0.snapshot(time=1000) # Laisser les nouveaux réglages prendre effet.
led = machine.LED("LED_BLUE")
if newFile:
# Si le fichier journal n'existe pas, le créer.
with open("time.txt", "a") as timeFile:
# Écrire un fichier texte pour suivre la date, l'heure et le numéro d'image.
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:
# Ajouter la date, l'heure et le numéro d'image au fichier texte.
timeFile.write(
f"{newName},{year},{month},{day},{hour},{minute},{second},{subSecond}\n"
)
if not "images" in os.listdir():
os.mkdir("images") # Créer un répertoire temporaire
# Prendre une photo et l'enregistrer sur la carte SD
led.on()
img = csi0.snapshot()
img.save("images/" + newName, quality=90)
led.off()
# Entrer en mode veille profonde (c'est-à-dire que l'OpenMV Cam s'éteint effectivement, à l'exception du RTC).
machine.deepsleep()