در مجموعه آموزش های راه اندازی و کار با برد Maixduino، قسمت چهاردهم به دوربین این برد می پردازیم. به کمک دوربین برد Maixduino می توان پروژه های پردازش تصویر، طبقه بندی و تشخیص اشیا را اجرا نمود. برد Maixduino دارای سوکت دوربین و دوربین فلت متصل شده است. به کمک دوربین GC0328 و یا دوربین OV2640 می توان تصاویر را ضبط، ذخیره و پردازش نمود. در این آموزش به راه اندازی و کار با دوربین برد Maixduino می پردازیم. با توجه به قابلیت اتصال برد Maixduino به اینترنت، در ادامه این آموزش با مرجع تخصصی برد هوش مصنوعی Sipeed به زبان فارسی، دیجی اسپارک همراه باشید.
واحد پردازش تصویر برد Maixduino
همانطور که اطلاع دارید، بر روی برد Maixduino سوکت جهت اتصال دوربین با ۲۴ پین تعبیه شده است. این سوکت با فرمت FPV قادر به اتصال دوربین DVP است. از طرف دیگر، با توجه به قابلیت اجرای الگوریتم های هوش مصنوعی و پردازش تصویر، برد Maixduino قادر به تشخیص اشیا و طبقه بندی آن است.
برد Maixduin قادر به نمونه برداری و تشخیص تصویری در مدهای QVGA و VGA است. در مد QVGA برد قادر به پردازش تصاویر با سرعت ۶۰FPS و VGA با سرعت ۳۰FPS است. همچنین این برد قادر به اجرای مدل MOBILENET بر روی خود است. جهت راه اندازی و کار با دوربین برد Maixduino، کتابخانه تحت آردوینو توسعه یافته است. در قسمت بعد به کتابخانه و توابع راه اندازی می پردازیم.
توابع و دستورات کتابخانه دوربین Maixduino
پیش از آنکه به اجرای یک نمونه برنامه بپردازیم، بهتر است نگاهی به توابع و دستورات کلاس دوربین داشته باشیم. در ابتدا جهت راه اندازی دوربین، می بایست از کلاس کتابخانه نمایشگر استفاده کنیم. همانطور که اطلاع دارید، برد Maixduino دارای پورت جهت اتصال نمایشگر است. نمایشگر قابل اتصال به این پورت مدل ST7789 است. بنابراین در ابتدا فایل کتابخانه این نمایشگر به صورت زیر به برنامه اضافه می گردد.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
در رابطه با تحلیل و پردازش تصویر، قسمت های بعدی را به این موضوع اختصاص خواهیم داد. در اینجا پس از آشنایی با دستورات دریافت عکس، ادامه آموزش را به اجرای نمونه برنامه می پردازیم.
اجرای برنامه دوربین GC0328
پس از بررسی توابع و دستورات، نوبت به اجرای یک نمونه برنامه می رسد. در این برنامه عکس توسط دوربین گرفته می شود. سپس بایت های عکس را در سریال مانیتور مشاهده خواهیم نمود.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
پس از اجرای برنامه، مطابق کد فوق، خروجی عکس که به بایت تبدیل شده در سریال مانیتور قرار می گیرد. مطابق کد برنامه هر ۵ ثانیه یکبار بایت های معادل عکس در سریال مانیتور قرار می گیرد.
توجه داشته باشید که مطابق تصویر فوق، بایت های عکس به صورت معادل اسکی در سریال مانیتور قرار می گیرند. در صورت ارسال به میکروکنترلرها نظیر ESP32، عکس می بایست به صورت بایت و با تابع write ارسال گردد.
اشکالات متداول دوربین GC0328
در هنگام راه اندازی و کار با دوربین برد Maixduino احتمالا به مشکلاتی بر می خورید. یکی از این مشکلات، وجود خطایی در کتابخانه دوربین OV2640 است. در صورت وجود این اشکال، هنگام کامپایل با خطای زیر رو به رو می شوید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
لوازم مورد نیاز
بردهای مبتنی بر هوش مصنوعی Sipeed
جمع بندی
در مجموعه آموزش های برد Mixduino قسمت چهاردهم به بررسی دوربین برد پرداختیم. به کمک دوربین برد Maixduino، می توان تصاویر را دریافت نمود. سپس به کمک پردازنده قدرتمند K210 به اجرای مدل های پردازش تصویر نظیر MobileNet پرداخت. در این آموزش به بررسی توابع و دستورات کتابخانه ای دوربین پرداختیم. سپس در ادامه یک نمونه برنامه را اجرا کردیم. پس از این مرحله، از آنجاییکه اشکالاتی در راه اندازی دوربین در سمت نرم افزار و سخت افزار وجود دارد، به رفع این اشکالات پرداختیم.
چنانچه هرگونه ابهامی در مطالب درج شده وجود دارد، می توانید با ثبت نظر در انتهای همین پست سوال خود را بپرسید. تاکنون در دیجی اسپارک بیش از ۲۷ هزار سوال و پاسخ ثبت شده است؛ پس نظرات بی جواب نمی مانند! همچنین اگر ایراد و یا اشکالی در مطالب درج شده وجود دارد، لطفا آن را با ثبت نظر، مطرح کنید. همچنین اگر مشکلی در کدها وجود داشته و یا اجرا نمی شوند، مورد را حتما در انتهای همین آموزش مطرح نمایید. نظرات شما برای ما بسیار ارزشمند هسنند!!
با سلام با ارور زیرد مواجه می شوم
C:\Users\2-pc\AppData\Local\Temp\.arduinoIDE-unsaved2023112-7836-1g8lfh2.oeqz\sketch_dec2a\sketch_dec2a.ino:7:15: error: cannot declare variable ‘camera’ to be of abstract type ‘Sipeed_OV2640’
Sipeed_OV2640 camera(FRAMESIZE_QVGA, PIXFORMAT_RGB565); //تعریف شی از کلاس کتابخانه
^~~~~~
In file included from C:\Users\2-pc\AppData\Local\Temp\.arduinoIDE-unsaved2023112-7836-1g8lfh2.oeqz\sketch_dec2a\sketch_dec2a.ino:1:
C:\Users\2-pc\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.11\libraries\Sipeed_OV2640\src/Sipeed_OV2640.h:36:7: note: because the following virtual functions are pure within ‘Sipeed_OV2640’:
class Sipeed_OV2640 : public Camera{
^~~~~~~~~~~~~
In file included from C:\Users\2-pc\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.11\libraries\Sipeed_OV2640\src/Sipeed_OV2640.h:4,
from C:\Users\2-pc\AppData\Local\Temp\.arduinoIDE-unsaved2023112-7836-1g8lfh2.oeqz\sketch_dec2a\sketch_dec2a.ino:1:
C:\Users\2-pc\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.11\libraries\Camera\src/Camera.h:79:18: note: ‘virtual void Camera::setRotation(uint8_t)’
virtual void setRotation(uint8_t rotation) = 0;
^~~~~~~~~~~
exit status 1
Compilation error: cannot declare variable ‘camera’ to be of abstract type ‘Sipeed_OV2640’
با سلام
ممکن است مشکل از عدم سازگاری کتابخانه باشد. با این حال یک اصلاحیه در ادامه نوشته ایم بررسی کنید.
در اینجا تابع setRotation به عنوان یک نمونه آورده شده است. شما باید این تابع را در کلاس Sipeed_OV2640 پیادهسازی کنید. به این ترتیب، کلاس Sipeed_OV2640 دیگر یک کلاس انتزاعی نخواهد بود و مشکل حل خواهد شد.
class Sipeed_OV2640 : public Camera {
public:
// … سایر توابع و متغیرهای کلاس
// پیادهسازی تابع setRotation
virtual void setRotation(uint8_t rotation) {
// کد پیادهسازی
}
// … سایر توابع و متغیرهای کلاس
};
کتابخانه برد برای دوربین ov2640 طراحی شده، حال آنکه در بعضی مدل ها دوربین قررا گرفته روی برد از مدل GC0328 بهره گرفته شده است. برای رفع این مشکل، می بایست دوربین را با مدل OV2640 تعویض کنید. این دوربین بر روی برد ESP32CAM قرار گرفته و می توان از آن استفاده نمود.
الان من خطای snap fail رو دارم…
طبق توضیح بالا ..این قسمت منظور یعنی باید دروبین رو عوض کنیم یا کتابخانه ؟ و کتابخانه برد GC0328 رو باید به چه شکل و از کجا پیدا کنیم راهکار دقیقا چیست؟
باتشکر
با سلام
ضمن تشکر از همراهی شما، برای رفع این مشکل در بخش اشکالات متداول همین صفحه راهنمایی شده است. بررسی کنید.