time_lapse_photos.py

# هذا العمل مرخص بموجب ترخيص MIT.
# حقوق النشر (c) 2013-2023 OpenMV LLC. جميع الحقوق محفوظة.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# صور بفاصل زمني (Time Lapse) (بفضل nedhorning)
#
# يوضح هذا المثال كيفية التقاط صور بفاصل زمني باستخدام كاميرا OpenMV
# الخاصة بك، باستخدام وحدة RTC مع مقاطعة مؤقت لتحقيق
# تشغيل بطاقة منخفضة جدًا.
#
# لاحظ أنه إذا كان منفذ USB لا يزال موصولًا أثناء التقاط الكاميرا
# للصور، فستقوم بتشغيل محمّل الإقلاع (bootloader) في كل مرة. يرجى تزويد الكاميرا بالطاقة
# من مصدر غير USB حتى لا يعمل محمّل الإقلاع.

import machine
import csi
import os

# إنشاء وتهيئة كائن RTC. سيتيح لنا هذا ضبط الوقت الحالي لـ
# الـ RTC والسماح لنا بضبط مقاطعة للاستيقاظ لاحقًا.
rtc = machine.RTC()
newFile = False

try:
    os.stat("time.txt")
except OSError:
    # إذا لم يكن ملف السجل موجودًا، فقم بضبط RTC وتعيين newFile إلى True
    # صيغة التاريخ والوقت: السنة، الشهر، اليوم، يوم الأسبوع (الاثنين=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

# تفعيل مقاطعات 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 تُطفئ نفسها فعليًا باستثناء RTC).
machine.deepsleep()

results matching ""

    No results matching ""