در این آموزش، ما از میکروکنترلر ESP32 به همراه برد توسعه آن از شرکت SunFounder استفاده خواهیم کرد تا با استفاده از یک دوربین عکس بگیریم و آنها را به طور مستقیم روی یک کارت micro SD ذخیره کنیم. این پروژه از قابلیتهای داخلی ESP32، از جمله Wi-Fi و بلوتوث، برای ایجاد یک دستگاه عکسبرداریCompact استفاده میکند. تا پایان این آموزش، شما یک تنظیمات کاربردی خواهید داشت که میتواند عکس بگیرد و ذخیره کند و سپس میتوان به آنها در کامپیوتر دسترسی پیدا کرد.
extension_bopard_camera
برای کسانی که تازه با اکوسیستم ESP32 آشنا شدهاند، این کیت یک پلتفرم چندمنظوره برای پروژههای مختلف، از جمله این پروژه، فراهم میکند. دوربینی که در این پروژه استفاده شده، OV2640 است که وضوحی معادل 1600x1200 پیکسل ارائه میدهد. اگرچه ممکن است کیفیتمانند گوشیهای هوشمند مدرن نباشد، اما برای کارهای پایهای ثبت تصویر کافی است. برای روشن شدن هر مرحله، حتماً ویدئوی همراه این آموزش را بررسی کنید (در ویدئو در 00:00).
20240103_163227858_iOS
توضیحاتی درباره سختافزار
اجزای اصلی این پروژه شامل میکروکنترلر ESP32، ماجیول دوربین (OV2640) و یک کارت micro SD برای ذخیرهسازی است. ESP32 یک میکروکنترلر قدرتمند با قابلیتهای Wi-Fi و Bluetooth یکپارچه است که آن را برای کاربردهای IoT ایدهآل میسازد. ماجیول دوربین تصاویر را ضبط میکند که سپس توسط ESP32 پردازش میشوند.
ESP32-41-تنظیم-3
کارت micro SD به عنوان یک رسانه ذخیرهسازی برای تصاویر ضبطشده عمل میکند. در این تنظیم، ESP32 با ماجیول دوربین از طریق پایههای GPIO خاص ارتباط برقرار میکند و تصاویر در فرمت JPEG روی کارت SD ذخیره میشوند. این امکان را برای بازیابی و مشاهده آسانتر عکسها در آینده فراهم میآورد.
اطمینان حاصل کنید که دوربین در زمان قرار دادن در برد ESP32 به درستی orient شده است.
از کارت micro SD با ظرفیت ۳۲ گیگابایت یا کمتر استفاده کنید تا از بروز مسائل سازگاری جلوگیری شود.
GPIO 0 را به GND متصل کنید تا به حالت برنامهنویسی بروید.
به تأمین برق توجه کنید تا از مشکلات افت ولتاژ جلوگیری شود.
در حین عکاسی، دوربین را ثابت نگه دارید تا از تصاویر تاری جلوگیری کنید.
دستورالعملهای سیمکشی
برای اتصال ماجیول دوربین ESP32، ابتدا اطمینان حاصل کنید که ESP32 خاموش است. ماجیول کارت micro SD را به ESP32 با استفاده از پایههای زیر متصل کنید: پایهها را متصل کنید؛CSپایه کارت SD به ESP32GPIO 5,MOSIبهGPIO 23,MISOتاGPIO 19, andSCKبهGPIO 18سپس، پایههای ماجیول دوربین را به شرح زیر وصل کنید:PWDNبهGPIO 32,XCLKبهGPIO 0,SIODبهGPIO 26, andSIOCبهGPIO 27بستهای داده پیکسلY2بهY9باید به هم متصل شودGPIO 5از میانGPIO 39طبق تعریفی که در شِفر (کود) شما آمده است.
مطمئن شوید که پایههای زمین و تغذیه را به درستی متصل کردهاید. ESP32 میتواند از باتری موجود در کیت تغذیه شود. پس از نصب سیمها، قبل از روشن کردن دستگاه، اطمینان حاصل کنید که اتصالات محکم هستند. اگر به دقت دستورالعملها را دنبال کنید، باید ببینید که دوربین به درستی هنگام بارگذاری شِفر (کود) راهاندازی میشود.
مثالهای شِفر (کود) و راهنما
اسپ ۳۲-۴۱-تنظیم-۲esp32-41-تنظیم-1
در شِفر (کود)، با وارد کردن کتابخانههای لازم و تعریف پایههای دوربین آغاز میکنیم. متغیرpictureNumberبرای پیگیری تعداد عکسهای گرفته شده، مقداردهی اولیه میشود.
int pictureNumber = 0;
void setup() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // Disable brownout detector
Serial.begin(115200);
camera_config_t config;
// Configuration settings for the camera
config.ledc_channel = LEDC_CHANNEL_0;
// Additional camera settings...
}
تابع راهاندازی ارتباط سریال را راهاندازی کرده و تنظیمات دوربین را پیکربندی میکند. پیکربندی شامل پارامترهایی مانندledc_channel,pin_d0, andxclk_freq_hzبرای عملکرد بهینه.
سپس، ما فرآیند ضبط تصویر را با استفاده از یک حلقه برای گرفتن تصاویر متعدد مدیریت میکنیم. دادههای تصویر با نام فایلی مبتنی بر به کارت SD ذخیره میشود.pictureNumber.
for (int shoot = 0; shoot < 5; shoot++) {
camera_fb_t *fb = esp_camera_fb_get(); // Take Picture
String path = "/picture" + String(pictureNumber) + ".jpg"; // File path
File file = fs.open(path.c_str(), FILE_WRITE); // Open file to write
// Write image data to file
file.write(fb->buf, fb->len);
// Update picture number in EEPROM
EEPROM.write(0, pictureNumber);
}
این حلقه تا پنج تصویر را ضبط میکند، جایی که هر تصویر با یک نام فایل منحصر به فرد ذخیره میشود. استفاده از EEPROM به برنامه این امکان را میدهد که شماره آخرین تصویر را به خاطر بسپارد و اطمینان حاصل کند که هر تصویر جدید یک شناسه منحصر به فرد دارد.
نمایشگاه / چه انتظاری باید داشت
هنگامی که شِفر (کود) را اجرا میکنید، ESP32 دوربین و کارت SD را راهاندازی میکند. پس از فشار دادن دکمه ریست بر روی ESP32، یک سری عکس میگیرد که به ترتیب از 0 تا 255 بر اساس مقدار EEPROM شمارهگذاری خواهند شد. پس از ثبت تصاویر، میتوانید کارت میکرو SD را بردارید و عکسها را بر روی کامپیوتر خود مشاهده کنید.
تلههای رایج شامل اطمینان از اینکه کارت میکرو SD به درستی فرمت و وارد شده است و همچنین حفظ موقعیت ثابت دوربین برای جلوگیری از تصاویر مبهم است. اگر با مشکل عدم ثبت تصاویر توسط دوربین روبرو شدید، سیمکشی و تنظیمات تعیین شده در شِفر (کود) را دوباره بررسی کنید (در ویدیو در ساعت ۰۶:۴۵).
زمانبندی ویدیو
۰۰:۰۰ شروع
1:39 مقدمه
شِفر (کود) دوربین ESP32 توضیح داده شده است 5:19
انتخاب تخته ESP32 و پورت COM در Arduino IDE :10
عکاسی درون و بیرون امتحان 12:52
تصاویر
esp32-41-setting-3
extension_bopard_camera
20240103_163227858_iOS
esp32-41-setting-1
esp32-41-setting-2
esp32-41-setting-3
extension_bopard_camera
20240103_163227858_iOS
esp32-41-setting-1
esp32-41-setting-2
843-ESP32 Tutorial 42/55- Arduino code for taking photo and saving it