ESP32CAM

عکاسی با ESP32CAM و ذخیره عکس بر روی حافظه microSD

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

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

قبل از هر اقدامی باید برای ذخیره تصاویر کارت SD رو آماده کنیم. در دیتاشیت برد قید شده حداکثر حافظه پشتیبانی ۴ گیگابایت هست اما من از یک حافظه ۱۶ گیگابایتی استفاده کردم و به مشکلی برخورد نکردم. در ضمن این رو بگم حجم تصاویر پایین هست و مشکلی از بابت حجم مورد استفاده توسط برد وجود نداره. مطابق تصاویر زیر بر روی درایو SD در ویندوز کلیک راست میکنید و کارت رو بصورت FAT32 فرمت می کنید. دقت کنید اگر کارت بصورت NTFS فرمت بشه ذخیره سازی تصاویر انجام نمیشه.

خب حالا یک پروژه یا اصطلاحا یک اسکچ جدید در Ardiuno IDE ایجاد کنید کد زیر در اون کپی کنید

در ابتداکتابخونه های مورد نیاز برای کار با دوربین رو به برنامه اضافه می کنیم. همچنین چون می خوایم از حافظه EEPROM استفاده کنیمT کتابخونه مربوطه رو استفاده می کنیم.

خب قبل از اینکه قسمت بعدی رو توضیح بدم اجازه بدید اول یک موضوع رو روشن کنم براتون. ما زمانی که عکس میگیگیریم (خخخ) و قصد داریم اون رو ذخیره کنیم باید براش یک اسم انتخاب کنیم. و از اونجائیکه نام فایل باید به بطور خودکار تولید بشه باید شماره فایلی که قبلا ذخیره شده رو در جایی سیوکنیم و در هر بار عکس گرفتن یک شماره به اون عدد ذخیره شده اضافه میکنیم و مجدد اون رو سیو میکنیم. محل ذخیره شدن فایل هم حافظه EEPROM خود برد ESP32CAM هست. به این منظور برای استفاده از این حافظه همین اول برنامه باید مشخص کنیم از چند خونه حافظه استفاده می کنیم. چون من نمی خوام بیشتر ۲۰۰ تا عکس برداری انجام بدم ( کلی پول برد رو دادم دکمه ریستش خراب میشه خو!!!) میزان حافظه EEPROM رو ۱ بایت در نظر میگیرم. در این حالت مقدارشمارنده اسم فایل از ۰ تا نهایتا ۲۵۵ تغییر میکنه و جمعا میشه ۲۵۶ عکس. اگر میخواید بیشتر از این تعداد عکس ذخیره کنید ۲ بایت استفاده کنید. که همونطور می بینید من یک بایت استفاده کردم:

در ادامه باید شماره پین ها متصل به دوربین برد رو تعریف کنیم. من چون از برد AI-THINKER استفاده می کنم تعاریف رو بر اساس اون انجام میدم. اگر برد شما متفاوت هست در آموزش راه اندازی ویدئو سرور با قابلیت تشخیص چهره تعارف سایر دوربین ها وجود داره که میتونید از اون بخش کد در اینجا استفاده کنید:

برای اینکه مقدار شمارنده نام فایل رو از EEPROM بخونیم باید اول در یک متغیر قرارش بدیم. تعریف متغیر رو اینجا انجام میدیم:

خب حالا نوبت به تنظیمات خود دوربین هست که در اینجا تنظیمات رو ست می کنیم:

خب بعضی از دوربین ها دارای حافظه داینامیک PSRAM هستن که بهشون اجازه میده تصویر رو با کیفیت بالاتری ذخیره کنن. بعضی سازنده های برد ESP32CAM از دوربین PSRAM دار استفاده میکنن و بعضی از PSRAM ندار. برد من که AI-THINKER هست استفاده میکنه (اگه ندارید دلتون بسوزه) از بقیه بردها خبر ندارم. برای اینکه مطمئن بشیم کد برنامه تصویر رو با بالاترین کیفیت ممکن ذخیره میکنه وجود PSRAM در دوربین رو بررسی میکنیم و براساس اون دوربین رو کانفیگ می کنیم.

اینجا تنظیمات رو به تابع esp_camera_init پاس میدیم . اگر خروجی این تابع برابر با ثابت ESP_OK بود که هیچ در غیر اینصورت خطایی به وجود اومده که اون رو چاپ می کنیم. کجا؟ خب معلومه دیگه خروجی عزیز سریال:

حالا نوبت راه اندازی کارت microSD هست:

این قسمت از کد هم عکس رو میگیره که اگه نتونه بگیره عین بچه ننه ها میره به خروجی سریال میگه:

یادتونه جلوتر کلی در مورد حافظه EEPROM و شماره فایل و آی بیشتر از ۲۰۰ تا عکس نشه بردم خراب میشه و بقیه چرت و پرت ها صحبت کردم؟ آها اینجا ازش استفاده میکنم :

شمارنده عکس رو که از EEPROM خوندیم یکی بهش اضافه می کنیم :

برای ذخیره تصاویر در microSD شمارنده عکس میچسبونیم ته کلمه picture و در مسیر اصلی حافظه ذخیرش میکنیم اینطوری:

بعد از اینکه تصویر رو ذخیره کردیم شمارنده ای رو که یکی بهش اضافه کرده بودبم رو دوباره در حافظه EEPROM ذخیره می کنیم:

خب این برد ۱۰ دلاری کمی خنگ تشریف دارن ینی چی؟ ینی وقتی شما عکس رو که گرفتی و LED مربوطه فلش زد تو همون حالت هپروت روشن میمونه برای همین برای با کد زیر غیر فعالش می کنی:

بعد که همه کارهامون رو انجام دادیم بهش میگیم کپه رو بذار برو به حالت Deep Sleep … اینطوری:

و تمام در مورد نحوه اتصال FTDI پروگرامر و نحوه پروگرام کردن این برد به اندازه کافی تو دو تا آمورشی که در اول پست معرفی کردم صحبت کردم پس دیگه این آموزش رو شلوغش نمی کنم.

تصویر برد در حال عکس گرفتن

در ابتدا کار میتونید خروجی سریال رو برای بررسی صحت عملکرد برد بررسی کنید. بعد از هر بار عکس برداری اطلاعات زیر چاپ میشه :

بعد از اینکه از صحت کار برد مطمئن شدید خیلی راحت FTDIپروگرامر رو از برد جدا کنید و پایه های ۵V و GND برد رو به یک منبع تغذیه مطمئن مثل پاور بانک متصل کنید. تبریک میگم شما صاحب یک دوربین دست ساز بی ریخت مثل تصویر زیر شدید:

نمونه ای از یک دوبین عکسبرداری بی ریخت با ESP32CAM

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

ساعد

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


7 − دو =