آموزش ساخت اسکنر QR کد با برد ESP32-CAM

ماژول ESP32 یک میکروکنترلر دو هسته ای با قابلیت های بی سیم داخلی است که در پروژه های اینترنت اشیاء بسیار محبوب شده است. خانواده ESP32-CAM این پلتفرم را با یک ماژول دوربین تلفیق می کند و امکان اجرای پردازش های بینایی ساده مانند خواندن کدهای QR را روی خود برد فراهم می کند.
کدهای QR همان بارکدهای مربعی هستند که اطلاعاتی مانند لینک وب یا جزئیات محصول را ذخیره می کنند. با استفاده از ESP32-CAM می توان این کدها را به راحتی اسکن و محتوای درون آنها را خواند.
در ادامه قطعات مورد نیاز، روش اتصال به کامپیوتر، نصب کتابخانه لازم، آپلود مثال و نحوه تست اسکنر را مرحله به مرحله توضیح می دهیم.
قطعات مورد نیاز
برای این پروژه به موارد زیر نیاز دارید:
- ماژول ESP32-CAM: پردازنده و دوربین پروژه را تامین می کند.
- کابل micro USB: برای تغذیه و در صورت وجود تبدیل USB داخلی، برنامه ریزی برد.
- آداپتور FTDI یا برد جانبی ESP32-CAM-MB (اختیاری): اگر برد شما مبدل USB به سریال داخلی ندارد، برای آپلود کد به یک آداپتور نیاز دارید.
- کامپیوتر با Arduino IDE: برای نوشتن و آپلود کد روی ESP32.
- یک کد QR برای تست: می توانید یکی را به صورت آنلاین تولید کنید.
هنگام انتخاب برد ESP32-CAM بهتر است نسخه ای را انتخاب کنید که بتوان آن را به سادگی از طریق کامپیوتر برنامه ریزی کرد و پس از آپلود هم به آسانی تغذیه شود. نسخه های مجهز به برد جانبی ESP32-CAM-MB یا نمونه های با مبدل CH340 که پورت USB دارند، انتخاب مناسبی هستند. برد bare ESP32-CAM بدون مبدل USB عرضه می شود و برای برنامه ریزی به مبدل USB به سریال نیاز دارد.
اتصال ESP32-CAM به کامپیوتر
برد bare ESP32-CAM امکان اتصال مستقیم USB ندارد، بنابراین باید از یکی از سه روش زیر استفاده کنید:
گزینه 1: برد bare ESP32-CAM همراه آداپتور FTDI
اگر ماژول شما فاقد مبدل USB است، می توانید آن را با یک آداپتور USB به سریال (FTDI) به کامپیوتر متصل کنید. شکل زیر اتصال ها را نشان می دهد:

بسیاری از آداپتورها جامپری دارند که بین 3.3V و 5V قابل انتخاب است. چون ماژول را با 5V تغذیه می کنیم، جامپر را روی 5V قرار دهید.
توجه کنید که پین GPIO0 باید هنگام برنامه ریزی به GND متصل شود. این اتصال فقط برای فرایند آپلود لازم است و پس از اتمام برنامه ریزی باید جدا شود.
یادآوری: برای هر بار آپلود یک اسکچ جدید باید دوباره GPIO0 را به GND وصل کنید.
گزینه 2: برد bare ESP32-CAM + ESP32-CAM-MB (برد جانبی)
استفاده از آداپتور FTDI کمی دردسر دارد، بنابراین فروشنده ها اغلب برد ESP32-CAM را همراه یک برد جانبی کوچک به نام ESP32-CAM-MB عرضه می کنند.
در این حالت برد ESP32-CAM را روی برد جانبی قرار می دهید، کابل micro USB را وصل می کنید و با زدن دکمه Upload در آردوینو IDE کد را آپلود می کنید. روند برنامه ریزی ساده تر و مستقیم تر خواهد بود.

گزینه 3: ESP32-CAM-CH340
نسخه هایی از ESP32-CAM وجود دارند که یک چیپ CH340 برای تبدیل USB به سریال روی برد نصب شده است. این نمونه ها نیاز به سخت افزار اضافی برای آپلود را حذف می کنند؛ کافی است کابل micro USB را وصل کنید.

نکته: حتی در نمونه هایی که CH340 روی برد دارند، هنگام برنامه ریزی باید GPIO0 را به GND متصل کنید و پس از آپلود آن را جدا کنید.
راه اندازی Arduino IDE
صرف نظر از روش اتصال، تنظیمات داخل Arduino IDE مشابه است.
نصب برد ESP32 در Arduino IDE
برای استفاده از ESP32-CAM یا هر برد ESP32 در Arduino IDE باید هسته ESP32 (ESP32 Arduino Core) را از طریق Board Manager نصب کنید.
کتابخانه و هسته برد باید نصب شده باشند تا بتوانید برد صحیح را انتخاب و کد را آپلود کنید.

انتخاب برد و پورت
پس از نصب هسته ESP32، Arduino IDE را ری استارت کنید و از منوی بالایی گزینه انتخاب برد و پورت را باز کنید. در پنجره باز شده نوع بردی را که استفاده می کنید جستجو کنید؛ در این آموزش از AI Thinker ESP32-CAM استفاده شده است.

سپس پورتی را که برد شما به آن متصل است انتخاب کنید. معمولاً در لینوکس یا macOS چیزی شبیه “/dev/ttyUSB0” و در ویندوز چیزی شبیه “COM6” نمایش داده می شود.

پس از این مراحل، Arduino IDE برای کار با ESP32-CAM آماده است.
نصب کتابخانه خواندن QR
کتابخانه ESP32QRCodeReader نوشته Alvaro Viebrantz یکی از گزینه های مناسب برای اسکن QR با ESP32-CAM است. این کتابخانه خودکفا است و پردازش خواندن QR را کاملاً روی ESP32-CAM انجام می دهد. متاسفانه این کتابخانه در Library Manager آردوینو موجود نیست، بنابراین باید آن را به صورت دستی نصب کنیم.
فایل دانلودی کتابخانه با نام ESP32QRCodeReader-master.zip را دانلود کنید. سپس در Arduino IDE به Sketch > Include Library > Add .ZIP library رفته و فایل ZIP دانلود شده را انتخاب کنید.

در صورت موفقیت پیام «Successfully installed library from ESP32QRCodeReader-master.zip archive» نمایش داده می شود.

برنامه ریزی ESP32-CAM
کتابخانه ESP32QRCodeReader حاوی دو مثال است. برای دسترسی به مثال ها از منوی File > Examples > ESP32QRCodeReader استفاده کنید.

در این آموزش مثال basic را اجرا می کنیم. کد مثال به صورت زیر است:
#include <Arduino.h>
#include <ESP32QRCodeReader.h>
ESP32QRCodeReader reader(CAMERA_MODEL_AI_THINKER);
void onQrCodeTask(void *pvParameters) {
struct QRCodeData qrCodeData;
while (true) {
if (reader.receiveQrCode(&qrCodeData, 100)) {
Serial.println("Found QRCode");
if (qrCodeData.valid) {
Serial.print("Payload: ");
Serial.println((const char *)qrCodeData.payload);
} else {
Serial.print("Invalid: ");
Serial.println((const char *)qrCodeData.payload);
}
}
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}
void setup() {
Serial.begin(115200);
Serial.println();
reader.setup();
Serial.println("Setup QRCode Reader");
reader.beginOnCore(1);
Serial.println("Begin on Core 1");
xTaskCreate(onQrCodeTask, "onQrCode", 4 * 1024, NULL, 4, NULL);
}
void loop() {
delay(100);
} آزمایش اسکنر QR
پس از آماده شدن، در Arduino IDE روی دکمه Upload کلیک کنید تا کد به ESP32-CAM منتقل شود. بعد از پایان آپلود، اگر از آداپتور FTDI یا ماژول ESP32-CAM-CH340 استفاده می کنید، مطمئن شوید که اتصال GPIO0 به GND را قطع کرده اید تا برد در حالت عادی اجرا شود.
سپس Serial Monitor را باز کنید و نرخ انتقال را روی 115200 تنظیم کنید. برای اطمینان از اجرای برنامه دکمه RST را یک بار فشار دهید. خروجی نمونه ای مانند تصویر زیر را مشاهده خواهید کرد:

حالا آماده اسکن کدهای QR هستید. این کدی را که با the-qrcode-generator.com تولید شده است امتحان کنید:

در ابتدا ممکن است در Serial Monitor پیام هایی مانند «Found QRCode Invalid: ECC failure» ببینید. این حالت طبیعی است. به آرامی کد QR را نسبت به دوربین نزدیک و دور کنید تا زمانی که به درستی شناسایی شود. وقتی ESP32-CAM با موفقیت کد را دیکد کرد، محتوای درون کد در Serial Monitor نمایش داده خواهد شد.

تبریک می گوییم؛ شما یک اسکنر QR با ESP32-CAM ساخته اید.
سوالات متداول
چگونه ESP32-CAM را به کامپیوتر وصل و برنامه ریزی کنیم؟
سه روش اصلی وجود دارد: 1) استفاده از برد bare به همراه آداپتور FTDI، 2) استفاده از برد جانبی ESP32-CAM-MB که برد را روی آن قرار می دهید و از طریق micro USB برنامه ریزی می کنید، 3) استفاده از نسخه ESP32-CAM-CH340 که مبدل CH340 روی برد دارد و نیاز به سخت افزار اضافی ندارد. در همه حالت ها هنگام برنامه ریزی باید پین GPIO0 را به GND متصل کنید و پس از آپلود آن را جدا کنید. اگر از FTDI استفاده می کنید، جامپر آداپتور را روی 5V قرار دهید چون ماژول با 5V تغذیه می شود.
کتابخانه خواندن QR را چگونه نصب کنم و چرا باید آن را به صورت دستی اضافه کنم؟
کتابخانه ESP32QRCodeReader که پردازش اسکن QR را روی ESP32-CAM انجام می دهد، در Library Manager آردوینو موجود نیست. فایل ZIP کتابخانه با نام ESP32QRCodeReader-master.zip را دانلود کنید و در Arduino IDE از منوی Sketch > Include Library > Add .ZIP library فایل ZIP را انتخاب کنید. در صورت موفقیت پیغام نصب موفق نمایش داده می شود.
در صورت دیدن پیام Invalid: ECC failure چه کاری باید انجام دهم؟
این پیام در مراحل اولیه اسکن طبیعی است. پس از آپلود برنامه و باز کردن Serial Monitor با Baud rate برابر 115200، دکمه RST را فشار دهید تا برنامه اجرا شود. سپس با حرکت دادن کد QR به سمت دوربین یا دور کردن آن، فاصله مناسب را بیابید؛ پس از شناسایی صحیح، محتویات کد در Serial Monitor نمایش داده می شود. همچنین مطمئن شوید پس از آپلود اتصال GPIO0 از GND جدا شده باشد تا برد در حالت عادی اجرا شود.











