البدء خلال 10 دقائق

فيديو تعليمي 1 - مقدمة إلى OpenMV: https://singtown.com/learn/688
فيديو تعليمي 2 - مقدمة لفتح الصندوق: https://singtown.com/learn/49985
فيديو تعليمي 3 - تثبيت واستخدام المشغلات (drivers) وبيئات التطوير (IDE): https://singtown.com/learn/49989/

تنزيل البرنامج

الموقع الرسمي في الصين:http://openmv.cc (انقر فوق تنزيل البرنامج)

الموقع الرسمي في الولايات المتحدة: https://openmv.io/pages/download

Windows

بعد التنزيل، استمر بالنقر على "التالي"، وسيكتمل التثبيت بشكل طبيعي.\

إذا لم تظهر نافذة الصورة، يمكنك سحبها من الجانب الأيمن.

تثبيت المشغل (driver)

قم بتوصيل OpenMV بالحاسوب.\ في الظروف العادية، سيتم تثبيت المشغل تلقائيًا، ولا حاجة لتثبيت أي شيء يدويًا. في إدارة الأجهزة، سترى:

لكن في بعض أجهزة الحاسوب، قد لا يتم تثبيت المشغل تلقائيًا.\ في هذه الحالة، ستظهر علامة تعجب في إدارة الأجهزة، مما يشير إلى أن المشغل لم يُثبَّت بشكل طبيعي.

في هذه الحالة، يجب عليك تثبيته يدويًا.\ أولًا قم بتنزيل المشغل: https://dl.singtown.com/openmv/openmv_windowsdriver.zip

فك الضغط على سطح المكتب، ثم انقر بزر الماوس الأيمن على الجهاز في إدارة الأجهزة، ثم انقر على "تحديث المشغل" (Upgrade Driver):

فشل تثبيت مشغل Windows

إذا حدث الموقف التالي (نادرًا ما يحدث هذا، إنه عطل في الحاسوب):\

فشل تثبيت مشغل OpenMV، في 90% من الحالات تكون المشكلة في الحاسوب، حيث أن أنظمة التشغيل المُبسّطة (streamlined) واستخدام بعض برامج التحسين عادة ما تكون سبب مثل هذه المشكلات. حل مشكلة مشغل OpenMV مشابه لحل مشكلة Arduino.

هذا لأن النسخة المُبسّطة من نظام Windows تحذف بعض معلومات المشغلات غير الشائعة.

مرجع الأعطال:\ https://forum.singtown.com/topic/230

أخيرًا، يُنصح بما يلي:

  • عند شراء حاسوب، اشترِ حاسوبًا يحتوي على نظام أصلي (genuine).
  • فعّل تحديث Windows (يكون مفعّلاً افتراضيًا، لا تقم بإيقافه).
  • حتى لو كنت تستخدم نسخة غير أصلية، يرجى تنزيل النسخة الكاملة والنظيفة من MSDN.
  • لا تستخدم أبدًا Ghost لتثبيت النظام! 90% من مشكلات المشغلات سببها Ghost.

MacOS

بعد تنزيل برنامج بيئة التطوير (IDE)، انقر نقرًا مزدوجًا على ملف التثبيت. استمر بالنقر على "التالي" فقط.

إذا ظهرت رسالة تفيد بأنه يمكنك فقط تثبيت التطبيقات من App Store والتطبيقات المعتمدة، فقم بتعيين الإعداد إلى "أي مصدر" (Any Source) في إعدادات الأمان والخصوصية.\

Ubuntu

يحتاج Ubuntu إلى منح أذونات للملف الذي تم تنزيله. ثم انقر نقرًا مزدوجًا للتثبيت.

تشغيل hello world!

أولاً، تأكد من أن بيئة التطوير (IDE) والمشغل مثبتان بشكل صحيح.

قم بتوصيل OpenMV بالحاسوب عبر كابل USB، وستظهر محرك أقراص USB

افتح OpenMV IDE.

ركّز على هذه الصورة.

  • انقر على Connect
  • ثم انقر على Run

يتم عرض الصورة بشكل صحيح في نافذة الصورة في الزاوية العلوية اليمنى.\ انقر على "Serial Terminal" في الأسفل، وستظهر نافذة طرفية منبثقة.\ في الوقت نفسه، ستُطبع بيانات في Serial Terminal. هذا هو معدل الإطارات (frame rate)، وهو نتيجة تنفيذ print(clock.fps()) في السطر 17 من الكود.

تتبع الكرة

احذف كل المحتوى في مربع التحرير واستبدله بالكود التالي:

# مثال على كشف الكتل اللونية
#
# يوضح هذا المثال كيفية استخدام الدالة find_blobs() للبحث عن الكتل اللونية في الصورة
# اللون الذي يبحث عنه هذا المثال هو الأخضر الداكن

import csi, image, time
csi0 = csi.CSI()

# مثال تتبع اللون، يجب التحكم في إضاءة البيئة والحفاظ على ثبات الإضاءة.
green_threshold   = (   0,   80,  -70,   -10,   -0,   30)
# ضبط عتبة اللون الأخضر، الأرقام بين الأقواس هي القيم القصوى والدنيا لـ L A B على
# التوالي (minL, maxL, minA, maxA, minB, maxB)، ويتم اختيار قيم LAB من الرسوم
# البيانية الثلاثة الموجودة على يسار الصورة. إذا كانت الصورة بتدرج رمادي، فيكفي
# ضبط رقمين فقط (min, max).

csi0.reset() # تهيئة الكاميرا
csi0.pixformat(csi.RGB565) # الصيغة RGB565.
csi0.framesize(csi.QQVGA) # استخدام QQVGA لسرعة أعلى
csi0.snapshot(time = 2000) # تخطي 2000 مللي ثانية، لتفعيل الإعدادات الجديدة وضبط توازن اللون الأبيض تلقائيًا
csi0.auto_gain(False) # إيقاف الكسب التلقائي (auto gain). يكون مفعّلاً افتراضيًا، ويجب إيقافه عند التعرف على الألوان.
csi0.auto_whitebal(False)
# إيقاف توازن اللون الأبيض. يكون مفعّلاً افتراضيًا، ويجب إيقافه عند التعرف على الألوان.
clock = time.clock() # تتبع معدل الإطارات

while(True):
    clock.tick() # تتبع الوقت بالمللي ثانية المنقضي بين اللقطات (snapshots()).
    img = csi0.snapshot() # الحصول على صورة من حساس الاستشعار الضوئي

    blobs = img.find_blobs([green_threshold])
    # find_blobs(thresholds, invert=False, roi=Auto)، حيث thresholds هي عتبة اللون،
    # وهي عبارة عن tuple يجب أن توضع بين قوسين [ ]. invert=1 يعني عكس عتبة اللون،
    # invert=False هي الافتراضية أي بدون عكس. roi يحدد منطقة الرؤية للتعرف على اللون،
    # وهو tuple بالصيغة roi = (x, y, w, h)، ويمثل منطقة مستطيلة عرضها w وارتفاعها h
    # تبدأ من الرأس العلوي الأيسر (x,y)، وإذا لم يُحدَّد roi فسيكون افتراضيًا كامل
    # مجال رؤية الصورة. تُعيد هذه الدالة قائمة، [0]يمثل إحداثي x للرأس العلوي الأيسر
    # لمنطقة اللون المستهدف التي تم التعرف عليها، [1]يمثل إحداثي y للرأس العلوي
    # الأيسر، [2]يمثل عرض المنطقة المستهدفة، [3]يمثل ارتفاع المنطقة المستهدفة،
    # [4]يمثل عدد نقاط البكسل في المنطقة المستهدفة، [5]يمثل إحداثي x لمركز
    # المنطقة المستهدفة، [6]يمثل إحداثي y لمركز المنطقة المستهدفة، [7]يمثل زاوية
    # دوران منطقة اللون المستهدف (بالراديان، رقم عشري، بينما بقية عناصر القائمة
    # أعداد صحيحة)، [8]يمثل عدد الأهداف المتقاطعة مع هذه المنطقة المستهدفة،
    # [9]يمثل رقم اللون (يمكن استخدامه لمعرفة عتبة threshold التي تم من خلالها
    # التعرف على هذه المنطقة).
    if blobs:
    # إذا تم العثور على اللون المستهدف
        for b in blobs:
        # التكرار عبر مناطق اللون المستهدف التي تم العثور عليها
            # رسم مستطيل حول الكتلة اللونية (blob).
            img.draw_rectangle(b[0:4]) # rect
            # وضع علامة على منطقة اللون المستهدف بمستطيل
            img.draw_cross((b[5], b[6])) # cx, cy
            # رسم علامة صليب في مركز منطقة اللون المستهدف

    print(clock.fps()) # ملاحظة: بعد توصيل OpenMV بالحاسوب، سيكون معدل الإطارات تقريبًا نصف المعدل الأصلي
    # إذا فُصل عن الحاسوب، سيزداد معدل الإطارات

بعد تشغيل البرنامج

سيبحث هذا البرنامج عن الكتل اللونية بناءً على عتبة green_threshold.

تغيير العتبة (threshold)

إذًا كيف يمكنك تغيير هذه العتبة بنفسك؟ كيف نعرف عتبة لون الجسم الذي نريده؟

  • أولاً، ابحث عن اللون المستهدف في الكاميرا، وارسم مستطيلاً حول اللون المستهدف في framebuffer بالنقر بزر الماوس الأيسر وسحبه
  • في الرسم البياني للإحداثيات أسفل framebuffer، اختر مساحة اللون LAB.

  • تمثل الرسوم البيانية الثلاثة قيم LAB للون في المنطقة المستطيلة المحددة، اختر القيم القصوى والدنيا للرسوم البيانية الثلاثة، أي (0, 60, -70, -10, -0, 30)

نظام الملفات

نظام الملفات هو ميزة بارزة بشكل خاص في OpenMV (أو MicroPython). ما هو نظام الملفات؟ ببساطة، يتم ترتيب المجلدات والملفات المختلفة في بنية شجرية، وبعبارة أبسط، إنه محرك أقراص USB الخاص بك. ويمكنك استخدام المسار في الكود لقراءة الملفات وإنشائها وما إلى ذلك.

التشغيل دون اتصال (Offline)

ملحق الفيديو التعليمي 2 - التشغيل دون اتصال: https://singtown.com/video

إذًا يبقى السؤال؟ ما فائدة دعم OpenMV لنظام الملفات؟

الجواب هو أنه أمر مريح للغاية!\ يقوم OpenMV بمحاكاة الذاكرة الداخلية (Flash) المدمجة كنظام ملفات. عند توصيل OpenMV بالحاسوب، سيظهر للحاسوب محرك أقراص USB! بداخله يوجد نظام ملفات OpenMV. عندما تريد برمجة (burn) البرنامج الثابت، ما عليك سوى نسخ ملف الكود إلى main.py في محرك الأقراص هذا. وفي كل مرة يتم فيها تشغيل الجهاز، سيقوم OpenMV تلقائيًا بتشغيل main.py الموجود بداخله، مما يتيح له العمل دون اتصال.

التنزيل بنقرة واحدة

في شريط الأدوات، انقر على حفظ النص البرمجي المفتوح إلى OpenMV Cam (باسم main.py)، وستقوم بيئة التطوير (IDE) تلقائيًا بحفظ الملف الحالي باسم main.py، وهو أمر مريح جدًا.

مصدر التغذية الكهربائية

يحتوي OpenMV على طرفي إدخال للطاقة:

  • VIN (يُشار إليه أحيانًا أيضًا بـ VCC)
  • إدخال USB

جهد إدخال VIN يتراوح بين 3.6 فولت و5 فولت، ويُنصح باستخدام 5 فولت.\ يمكن تغذية الجهاز عبر USB وVIN في نفس الوقت.

يحتوي OpenMV على طرف إخراج للطاقة:

  • 3.3 فولت، ويُخرج هذا الجهد منظم الجهد (regulator) الخاص بـ OpenMV، ويُستخدم لتغذية مستشعرات أخرى. ملاحظة: لا تقم بتغذية 3.3 فولت مباشرة، فمن دون حماية الشريحة الداخلية، من السهل أن يحترق.

بطاقة SD

ماذا لو كان الكود الخاص بي يحتوي على 100000 سطر ولم تكن الذاكرة الداخلية (flash) كافية؟ ماذا لو أردت حفظ صور؟

الجواب هو أنه يمكنك استخدام بطاقة SD!

إذًا كيف تُستخدم بطاقة SD؟ بطاقة SD هي أيضًا نظام ملفات. عند تشغيل الجهاز، إذا كانت بطاقة SD موصولة، فسيستبدل نظام ملفات بطاقة SD تلقائيًا نظام ملفات الذاكرة الداخلية (Flash). وفي كل مرة يتم فيها تشغيل الجهاز، سيتم تشغيل main.py الموجود في بطاقة SD. أليس هذا بديهيًا ومريحًا؟ السعة القصوى لبطاقة SD هي 32 جيجابايت.

results matching ""

    No results matching ""