برد Esp32 ماژول دوربین

راه اندازی و کار با ماژول ESP32 قسمت یازدهم: ESP-Cam دوربین و کارت SD

esp32-tutorial-step-eleven-camera-and-sd-card-digispark
نوشته شده توسط معین صابری

در سلسله آموزش های ماژول ESP32، قسمت یازدهم به دوربین ESP32CAM تعبیه شده روی برد ESP32-CAM می پردازیم. همانطور که در این مجموعه آموزش مشاهده کردیم، برد ESP32 دارای توان پردازشی بسیار بالاتری نسبت به ESP8266 است. در کنار این، یکی از بردهای توسعه یافته ESP32، برد ESP32-CAM است. این برد امکانات جانبی کاربردی نظیر دورین و سوکت کارت SD دارد. در این قسمت به قابلیت دوربین این ماژول می پردازیم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


دوربین ESP32CAM و پایه های GPIO


برد ESP32CAM از یک دوربین OV2640 بر روی خود بهره می برد. این دوربین سرعت فیلمبرداری ۱۵ الی ۶۰ FPS را بر روی خود جای داده است. همچنین این دوربین از یک مبدل A/D  با رزولشن ۱۰ بیت بهره می برد. این دوربین جهت تبادل داده برخی از پایه های GPIO را درگیر می نماید. جدول زیر اتصالات بین دوربین و برد ESP را نمایش می دهد.

پایه برد ESP32CAM پایه دوربین OV2640
۳۲ PWDN_GPIO_NUM
۰ XCLK_GPIO_NUM
۲۶ SIOD_GPIO_NUM
۲۷ SIOC_GPIO_NUM
۳۵ Y9_GPIO_NUM
۳۴ Y8_GPIO_NUM
۳۹ Y7_GPIO_NUM
۳۶ Y6_GPIO_NUM
۲۱ Y5_GPIO_NUM
۱۹ Y4_GPIO_NUM
۱۸ Y3_GPIO_NUM
۵ Y2_GPIO_NUM
۲۵ VSYNC_GPIO_NUM
۲۳ HREF_GPIO_NUM
۲۲ PCLK_GPIO_NUM

 

 علاوه بر این، به پایه GPIO4  چراغ فلش متصل بوده که با فعال سازی آن هنگام عکاسی، می توان تصویر را با کیفیت در شب و یا نورهای کم گرفت. پس از آشنایی با اتصالات پایه های دوربین ESP32CAM و ماژول، نوبت به کدهای راه اندازی می رسد. قسمت بعد مربوط به این مورد است.

برد ESP32-Cam راه اندازی قدم به قدم - دیجی اسپارک

 


 توابع مربوط به تنظیمات ESP32CAM


جهت راه اندازی، کار و عکاسی با دوربین OV2640، کتابخانه توسعه یافته است. بدین ترتیب راه اندازی و کار با این دوربین تسریع می گردد. در این قسمت توابع مربوط به دوربین که تنظیمات آن را بر عهده دارند، بررسی می کنیم. در ابتدا جدول زیر توابع مربوط به سنسور دوربین ESP32CAM را نمایش می دهد. اما پیش از دسترسی به این توابع، می بایست به صورت زیر، اشاره گری تعریف کنیم.

 

پس از تعریف این اشاره گر که در این جا نام s بر روی آن قرار دادیم، می توانیم دوربین ESP32CAM را تنظیم نماییم. جدول زیر  برخی از توابع مربوط به تنظیم دوربین را نمایش می دهد.

 

شرح تابع
به کمک این تابع میزان درخشندگی تنظیم می گردد. این میزان در ورودی دوم قرار گرفته و در بازه ۲- الی ۲ قابل قبول است. set_brightness(s, br)
این تابع میزان کنتراست را تعیین می کند. میزان کنتراست در ورودی دوم و در بازه ۲- الی ۲ قرار می گیرد. set_contrast(s, cnt)
این تابع میزان اشباع دوربین را در بازه ۲- الی ۲ در ورودی دوم تعیین می کند. set_saturation(s, st)
این تابع افکت های خاصی را روی دوربین قرار می دهد. این افکت های اعدادی بین ۰ الی ۶ بوده که به صورت زیر تفسیر می گردند.

۰=بدون افکت

۱-نگاتیو

۲-پس زمینه خاکستری

۳-سایه قرمز

۴-سایه سبز

۵-سایه آبی

۶-قرمز قهوه ای

set_special_effect(s, effect)
این تابع میزان بالانس بودن نور سفید را تعیین می کند. ورودی دوم اگر صفر باشد این قابلیت غیر فعال و اگر ۱ باشد فعال خواهد شد. set_whitebal(s, bl)
 به کمک این تابع می توان افکت نور سفید را تنظیم کرد. مقادیر معتبر برای ورودی mode عبارتند از:

۰:خودکار

۱:آفتابی

۲:ابری

۳:حالت اداری

۴:حالت خانگی

 

set_wb_mode(s, mode)
به کمک این تابع می توان مد اصلاح لنز را فعال کرد. فعال و غیر فعال سازی این قابلیت در ورودی دوم با مقدار ۰ برای غیر فعال و ۱ برای فعال سازی این مد خواهد بود. set_lenc(s,lens_correction)

 

 پس از بررسی توابع مربوط به سنسور دوربین، نوبت به بررسی متغیرهای کلیدی جهت تعیین کیفیت و فرمت عکس می رسد. این متغیر ها در جدول زیر لیست می گردند. البته پیش از جدول زیر، یک شی باید از کلاس تعریف کنیم.

 

مقدارهای معتبر شرح متغیر
مقدار معتبر برای این متغیر برابر با عدد زیر است.

۲۰۰۰۰۰۰۰

تنظیم فرکانس کلاک دوربین config.xclk_freq_hz
PIXFORMAT_YUV422

PIXFORMAT_GRAYSCALE

PIXFORMAT_RGB565

PIXFORMAT_JPEG

 

تنظیم فرمت ذخیره سازی تصاویر config.pixel_format
FRAMESIZE_UXGA

(۱۶۰۰ x 1200)

FRAMESIZE_QVGA

(۳۲۰ x 240)

FRAMESIZE_CIF

(۳۵۲ x 288)

FRAMESIZE_VGA

(۶۴۰ x 480)

FRAMESIZE_SVGA (۸۰۰ x 600)

FRAMESIZE_XGA (۱۰۲۴ x 768)

FRAMESIZE_SXGA (۱۲۸۰ x 1024)

 

تنظیم اندازه تصاویر FRAMESIZE
این متغیر کیفیت تصویر در فرمت JPEG را تنظیم می کند. مقدار معتبر بین ۱۰ الی ۶۳ بوده و هرچه مقدار بیشتر شود، کیفیت تصویر کاهش می یابد. تنظیم کیفیت تصویر در فرمت jpeg config.jpeg_quality

 

 پس از بررسی متغیرها و توابع مربوط به تنظیمات، نوبت به اجرای نمونه برنامه می رسد. قسمت بعدی مربوط به این موضوع است.

توجه: جهت آپلود برنامه روی برد ESP32CAM، از منوی Tools->Board گزینه ESP32 و سپس برد AI THINKER ESP32-CAM را انتخاب کنید.

 


عکاسی با دوربین ESP32CAM


در قسمت پیشین با تنظیمات و توابع دوربین ESP32CAM آشنا شدیم. در این قسمت به کمک یک نمونه برنامه، عکس را گرفته و در حافظه ذخیره می کنیم. پیش از ادامه، نیاز است تا توابع مربوط به عکاسی را مورد بررسی قرار دهیم. جهت فرمان به دوربین برای عکاسی و ذخیره عکس، نیاز است تا مطابق قطعه کد زیر، عکس را در اشاره گر ذخیره کنیم.

 

 اشاره گر فوق،  اشاره گری به کلاس کتابخانه است. این اشاره گر دو متغیر داشته که به شیوه زیر قابل دسترسی و توضیح است.

  • fb->len: متغیری جهت نمایش تعداد بایت های عکس
  • fb->buf: آرایه ای از بایت ها جهت ذخیره بایت های عکس

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

در برنامه فوق، به کمک دوربین عکسی گرفته می شود. این عکس در حافظه ذخیره می گردد. همچنین هنگام عکاسی، فلش دوربین فعال می گردد. پس از ثبت عکس فلش خاموش شده و عکس از حافظه نیز، پاک خواهد شد. توجه داشته باشید که محتویات عکس به صورت بایت در بافر ذخیره گردیده است.

 


پخش زنده تصاویر از طریق وای فای


پس از بررسی عکاسی، نوبت به قابلیت پخش زنده تصاویر از طریق وای فای می رسد. در قسمت های پیشین به نحوه اتصال برد ESP32 به مودم ها و نقطه دسترسی ها پرداختیم. در این قسمت قصد داریم تا از طریق این ماژول و به صورت بی سیم، پخش زنده ای از محیط را مشاهده نماییم. این مورد دقیقا لایه انتقال است. جهت نمایش فیلم، قابلیت ها و امکانات زیادی در ماژول تعبیه شده است. در این حالت، ماژول در مد سرور قرار گرفته و کلیه متغیرها جهت تنظیم وضعیت دوربین، به صورت گرافیکی در مرورگر نمایش داده می شود. در این مورد آموزشی پیشتر در دیجی اسپارک منتشر شده که با کلیک بر روی این لینک قابل دسترسی است.

 


کارت SD


همانطور که اطلاع دارید، برد ESP32CAM دارای سوکت کارت SD است. به کمک این قابلیت می توان تصاویر را روی کارت SD ذخیره نمود. اما جهت استفاده از کارت SD، پایه های ۱۲ الی ۱۵ و پایه ۲ و ۴ نیز اشغال خواهند شد. جدول زیر شرح اتصالات بین سوکت SD و پیاه های GPIO برد ESP32 را نمایش می دهد.

SD ESP32CAM
PIN14 CLK
PIN15 CMD
PIN2 DATA0
PIN4 DATA1/FLASH
PIN12 DATA2
PIN13 DATA3

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 


لوازم مورد نیاز


  1. برد ESP32ACM
  2. مبدل سریال به USB
  3. کارت حافظه SD

 


جمع بندی


در سلسله آموزش های ماژول ESP32، قسمت یازدهم به بررسی قابلیت دوربین این ماژول پرداختیم. همانطور که در این آموزش هم به آن اشاره شد، بر روی برد ESP32-CAM یک دوربین جهت ثبت فیلم و عکس برداری تعبیه شده است. دوربین به کار رفته در برد ESP32CAM قابلیت های بسیاری جهت ثبت عکس و ضبط فیلم دارد. در این آموزش به توابع و متغیرهای کلیدی جهت اعمال تنظیمات دوربین پرداختیم. سپس توابع و دستورات مربوط به عکس برداری و ذخیره در حافظه را مورد بررسی قرار دادیم. همچنین به قابلیت کارت SD ماژول و نحوه ذخیره سازی عکس در کارت حافظه پرداخته شد. در نهایت با ارائه یک مثال، نحوه عکاسی، ذخیره عکس در حافظه و آزاد سازی آن از حافظه بررسی گردید.

 

در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه