
تفاوت دوربین RHYX-M21 و RHYX-M21-45 در ماژول ESP32-CAM
بررسی سازگاری، نحوه راهاندازی و تنظیمات نرمافزاری ESP32-CAM در Arduino IDE
ماژول ESP32-CAM یکی از محبوبترین بردهای ارزانقیمت برای پروژههای بینایی ماشین، نظارت و اینترنت اشیا (IoT) است.
این برد معمولاً به همراه یک دوربین ۲ مگاپیکسلی OV2640 عرضه میشود، اما در بازار نسخههایی با نام RHYX-M21 یا RHYX-M21-45 نیز یافت میشود که باعث سردرگمی کاربران میگردد.
در این مطلب بررسی میکنیم که این دو مدل دقیقاً چه تفاوتی دارند، چگونه باید راهاندازی شوند و در چه شرایطی کارایی مطلوب دارند.
🧩 معرفی اجمالی دو مدل
🔹 RHYX-M21
این مدل از نظر سختافزاری تقریباً همان OV2640 است. در واقع، RHYX-M21 یک نسخهی سازگار (Clone) از OV2640 محسوب میشود و با همان درایور و کدهای Arduino کار میکند. به همین دلیل در اغلب موارد میتوان بدون هیچ تغییری از کدهای آماده ESP32-CAM مثل CameraWebServer استفاده کرد.
🔹 RHYX-M21-45
اما مدل RHYX-M21-45 داستان متفاوتی دارد! در این نسخه از سنسور متفاوتی (معمولاً GC2145 یا GC0328C ساخت GalaxyCore) استفاده شده است. این تراشه برخلاف OV2640، از فشردهسازی سختافزاری JPEG پشتیبانی نمیکند و تنها قادر به ارسال دادهی خام (Raw) در قالب RGB565 است.
در نتیجه، اگر بخواهید این مدل را با همان تنظیمات OV2640 راهاندازی کنید، تصویر یا نمایش داده نمیشود، یا با خطای JPEG format not supported روبهرو خواهید شد.
⚙️ مقایسه فنی
| ویژگی | RHYX-M21 (سازگار با OV2640) | RHYX-M21-45 (GC2145 یا مشابه) |
|---|---|---|
| رزولوشن مؤثر | 1600×1200 (UXGA) | 1600×1200 (اسمی) – عملکرد بهتر در VGA |
| فشردهسازی JPEG | ✅ دارد | ❌ ندارد |
| فرمت پیکسل پیشفرض | PIXFORMAT_JPEG |
PIXFORMAT_RGB565 |
| سرعت استریم | سریع و پایدار | کندتر در رزولوشن بالا |
| مصرف RAM | کم (بهدلیل JPEG) | بیشتر (بهدلیل داده خام) |
| کیفیت رنگ | بهتر و طبیعیتر | کمی مات و سرد |
| سازگاری با Arduino IDE | کامل | نیازمند تغییر فرمت پیکسل |
| کاربرد پیشنهادی | پروژههای تصویر و ویدیو | پروژههای تشخیص چهره و آموزش |
🧠 نحوه راهاندازی در Arduino IDE
📷 برای RHYX-M21 (سازگار با OV2640)
کافی است از مثال آماده زیر استفاده کنید:
|
1 2 3 4 5 |
#define CAMERA_MODEL_AI_THINKER #include "camera_pins.h" config.pixel_format = PIXFORMAT_JPEG; // پشتیبانی کامل از JPEG |
📌 با این تنظیمات، میتوانید تصویر زنده را از طریق مرورگر در شبکه Wi-Fi مشاهده کنید.
(نمونه کد: File → Examples → ESP32 → Camera → CameraWebServer)
📸 نکته مهم برای راهاندازی دوربین RHYX-M21-45 (بدون فشردهسازی JPEG)
دوربین RHYX-M21-45 از فشردهسازی سختافزاری JPEG پشتیبانی نمیکند و در نتیجه، در صورت استفاده از تنظیمات پیشفرض مربوط به دوربینهای رایجی مانند OV2640، تصویر ارسال نخواهد شد یا ماژول بهدرستی عمل نمیکند.
بنابراین، لازم است تنظیمات فرمت پیکسل (Pixel Format) در کد آردوینو تغییر داده شود تا با این نوع دوربین سازگار گردد.
محل تغییر تنظیمات در کد آردوینو
این تغییر در بخش پیکربندی دوربین انجام میشود؛ معمولاً در نمونهکدهای آماده مانند
File → Examples → ESP32 → Camera → CameraWebServer
در تابع setup() یا در ساختار camera_config_t قابل مشاهده است.
در کد پیشفرض معمولاً تنظیم زیر وجود دارد:
|
1 2 |
config.pixel_format = PIXFORMAT_JPEG; // حالت پیشفرض برای OV2640 |
برای استفاده از دوربین RHYX-M21-45، باید این خط را به صورت زیر تغییر دهید:
|
1 2 3 |
//config.pixel_format = PIXFORMAT_JPEG; // غیرفعال شود config.pixel_format = PIXFORMAT_RGB565; // فعال شود برای RHYX-M21-45 |
در کنار این تغییر، توصیه میشود رزولوشن تصویر نیز کاهش یابد، زیرا فرمت RGB565 حجم داده بالاتری دارد و ممکن است حافظهی داخلی ماژول ESP32 پاسخگو نباشد. به عنوان مثال:
|
1 2 |
config.frame_size = FRAMESIZE_QVGA; // یا FRAMESIZE_CIF برای کاهش مصرف RAM |
توضیح فنی
در حالت PIXFORMAT_JPEG، تراشهی دوربین فریمها را بهصورت فشرده ارسال میکند و ماژول ESP32 تنها آن را منتقل مینماید.
اما در حالت PIXFORMAT_RGB565، فریمها به صورت دادههای خام و بدون فشردهسازی ارسال میشوند، که ضمن افزایش حجم تصویر، نیازمند حافظهی بیشتری در ESP32 است.
به همین دلیل، در این حالت امکان استریم ویدئویی با سرعت بالا وجود ندارد و کاربرد اصلی آن در تشخیص تصویر، بینایی ماشین یا گرفتن عکس ثابت (snapshot) است.
نکات مهم
- مقدار مدل دوربین باید همان مقدار پیشفرض برد باشد:
زیرا پینهای اتصال دوربین تغییری نمیکنند.12#define CAMERA_MODEL_AI_THINKER - در صورت مشاهدهی پیام خطا مانند
frame buffer malloc failed
لازم است رزولوشن را پایینتر انتخاب کنید.
⚠️ نکات مهم
- پینها در هر دو مدل کاملاً یکساناند و نیازی به تغییر در
camera_pins.hنیست. - اگر تصویر سیاه است یا فریز میشود، فرکانس کلاک را کاهش دهید:
12config.xclk_freq_hz = 10000000; // کاهش از 20MHz به 10MHz - برای استریم پایدارتر از منبع تغذیه ۵ ولت با جریان حداقل ۱ آمپر استفاده کنید.
- در ESPHome یا Home Assistant نیز همین منطق صدق میکند؛ برای RHYX-M21-45 باید فرمت پیکسل را
RGB565قرار دهید.
روش اول برنامهنویسی ESP32-CAM و اعمال تغییرات توضیح داده شده در بالا
برنامهنویسی ESP32-CAM میتواند کمی دردسرساز باشد، زیرا این برد پورت USB داخلی ندارد. به دلیل همین تصمیم طراحی، کاربران برای آپلود برنامهها از Arduino IDE به سختافزار اضافی نیاز دارند. هیچکدام از این مراحل خیلی پیچیده نیستند، اما میتواند آزاردهنده باشد.
استفاده از مبدل FTDI
اگر تصمیم گرفتهاید از مبدل FTDI استفاده کنید، اتصال آن به ماژول ESP32-CAM به شکل زیر خواهد بود:

بسیاری از پروگرامرهای FTDI یک جامپر دارند که به شما اجازه میدهد بین ۳.۳ ولت و ۵ ولت انتخاب کنید. چون ما ESP32-CAM را با ۵ ولت تغذیه میکنیم، مطمئن شوید جامپر روی ۵V قرار دارد.
لطفاً توجه کنید که پین GPIO0 باید به زمین (GND) متصل شود. این اتصال فقط در زمان برنامهریزی ESP32-CAM لازم است.
وقتی برنامهریزی ماژول به پایان رسید، باید این اتصال را قطع کنید.
یادتان باشد! هر بار که میخواهید یک کُد جدید (Sketch) آپلود کنید، باید دوباره این اتصال را برقرار کنید.
راهاندازی Arduino IDE و نصب برد ESP32
برای برنامهریزی ماژول ESP32-CAM، ابتدا باید محیط Arduino IDE را نصب و آمادهسازی کنید. آخرین نسخه را میتوانید از وبسایت رسمی آردوینو به آدرس https://www.arduino.cc/en/software دریافت و روی سیستمعامل خود نصب کنید. پس از نصب، برنامه را اجرا کرده و از منوی File → Preferences، در بخش Additional Boards Manager URLs، آدرس زیر را اضافه کنید:
|
1 2 |
https://dl.espressif.com/dl/package_esp32_index.json |
این آدرس به Arduino IDE اجازه میدهد تا بستههای مربوط به تراشههای ESP32 را شناسایی و نصب کند.
⚙️ نصب پشتیبانی از برد ESP32
پس از افزودن آدرس بالا، از مسیر Tools → Board → Boards Manager وارد بخش مدیریت بردها شوید. در نوار جستوجو عبارت esp32 را بنویسید و بستهی esp32 by Espressif Systems را نصب کنید. پس از پایان نصب، از منوی Tools → Board، گزینهی AI Thinker ESP32-CAM را انتخاب نمایید. این برد شامل پینپیکربندی و تنظیمات لازم برای ماژولهای ESP32-CAM است و به شما اجازه میدهد تا مستقیماً کدهای مربوط به ماژول دوربین را روی آن آپلود کنید. با انجام این مراحل، Arduino IDE آمادهی برنامهریزی و راهاندازی ماژول ESP32-CAM خواهد بود.
انتخاب برد و پورت
Selecting the Board and Port
پس از نصب ESP32 Arduino Core، Arduino IDE خود را ریاستارت کنید و به مسیر زیر بروید:
Tools > Board > ESP32 Arduino و سپس AI-Thinker ESP32-CAM را انتخاب کنید.

اکنون ESP32-CAM را با استفاده از یک کابل USB به کامپیوتر خود متصل کنید. سپس به مسیر زیر بروید:
Tools > Port و پورتی را که ESP32-CAM به آن وصل است انتخاب کنید.

همین! Arduino IDE اکنون برای استفاده با ESP32-CAM آماده است.
روش دوم استفاده از کد آماده زیر برای راهاندازی ماژول ESP32-CAM با دوربین RHYX-M21
🧩 مرحله ۱: دانلود کد آماده
کد مخصوص این مدل دوربین در گیتهاب منتشر شده است:
🔗 https://github.com/Pippoosh/rhyx-m21-cam
۱. وارد لینک بالا شوید.
۲. روی دکمهی Code → Download ZIP کلیک کنید.
۳. فایل ZIP را در سیستم خود Extract کنید.
۴. پوشهی استخراجشده را در Arduino IDE باز کنید (فایل CameraWebServer.ino).
⚙️ مرحله ۲: تنظیم کد Wi-Fi و فرمت تصویر
در ابتدای کد، نام و رمز وایفای خود را وارد کنید:
|
1 2 3 |
const char* ssid = "YourWiFiName"; const char* password = "YourWiFiPassword"; |
اگر از دوربین RHYX-M21-45 استفاده میکنید (که فشردهسازی JPEG ندارد)،
بخش مربوط به فرمت تصویر را به شکل زیر تغییر دهید:
|
1 2 3 4 |
//config.pixel_format = PIXFORMAT_JPEG; config.pixel_format = PIXFORMAT_RGB565; config.frame_size = FRAMESIZE_QVGA; // رزولوشن پایینتر برای جلوگیری از خطای حافظه |
🔌 مرحله ۳: اتصالات برای پروگرام
- 5V → 5V
- GND → GND
- TX → U0R (RX)
- RX → U0T (TX)
- IO0 → GND (فقط هنگام آپلود)
برای تغذیه بهتر از آداپتور ۵ ولت ۱ آمپر یا بیشتر استفاده کنید.
🛠 مرحله ۴: تنظیمات Tools در Arduino IDE
از منوی Tools تنظیمات زیر را انجام دهید:
| گزینه | مقدار پیشنهادی |
|---|---|
| Board | AI Thinker ESP32-CAM |
| CPU Frequency | 240MHz (WiFi/BT) |
| Flash Frequency | 80MHz |
| Flash Mode | QIO |
| Partition Scheme | Huge APP (3MB No OTA/1MB SPIFFS) |
| Core Debug Level | None |
| Erase All Flash | Disabled |
| Port | پورت مبدل USB-TTL شما |
⏫ مرحله ۵: آپلود و اجرا
- در حالیکه پایه IO0 به GND متصل است، دکمهی Upload را بزنید.
- وقتی عبارت
Connecting...در IDE ظاهر شد، دکمه RST را فشار دهید. - پس از آپلود، اتصال IO0 به GND را قطع کرده و مجدداً برد را ریست کنید.
- در Serial Monitor (سرعت 115200) آدرس IP دوربین نمایش داده میشود.
- آدرس را در مرورگر وارد کنید تا صفحهی وبکم باز شود.
⚠️ نکات مهم
- اگر خطای
frame buffer malloc failedدیدید، رزولوشن را پایینتر بگذارید. - در صورت نداشتن تصویر، مطمئن شوید
PIXFORMAT_RGB565فعال و پینها مطابق مدل AI Thinker باشند.





