آموزش ESP32آموزش اینترنت اشیا

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

ماژول ESP32 یک میکروکنترلر دو هسته ای با قابلیت های بی سیم داخلی است که در پروژه های اینترنت اشیاء بسیار محبوب شده است. خانواده ESP32-CAM این پلتفرم را با یک ماژول دوربین تلفیق می کند و امکان اجرای پردازش های بینایی ساده مانند خواندن کدهای QR را روی خود برد فراهم می کند.

کدهای QR همان بارکدهای مربعی هستند که اطلاعاتی مانند لینک وب یا جزئیات محصول را ذخیره می کنند. با استفاده از ESP32-CAM می توان این کدها را به راحتی اسکن و محتوای درون آنها را خواند.

در ادامه قطعات مورد نیاز، روش اتصال به کامپیوتر، نصب کتابخانه لازم، آپلود مثال و نحوه تست اسکنر را مرحله به مرحله توضیح می دهیم.

دوره آموزش ESP32 دوره آموزش اینترنت اشیا حرفه ای دوره آموزش اینترنت اشیا مقدماتی دوره آموزش آردوینو

قطعات مورد نیاز

برای این پروژه به موارد زیر نیاز دارید:

  • ماژول 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) به کامپیوتر متصل کنید. شکل زیر اتصال ها را نشان می دهد:

شماتیک اتصال ESP32-CAM به آداپتور 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 کد را آپلود می کنید. روند برنامه ریزی ساده تر و مستقیم تر خواهد بود.

برد ESP32-CAM قرار گرفته روی برد جانبی ESP32-CAM-MB و کابل میکرو یو اس بی

گزینه 3: ESP32-CAM-CH340

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

ماژول ESP32-CAM-CH340 با چیپ CH340 و پورت میکرو یو اس بی

نکته: حتی در نمونه هایی که CH340 روی برد دارند، هنگام برنامه ریزی باید GPIO0 را به GND متصل کنید و پس از آپلود آن را جدا کنید.

راه اندازی Arduino IDE

صرف نظر از روش اتصال، تنظیمات داخل Arduino IDE مشابه است.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

نصب برد ESP32 در Arduino IDE

برای استفاده از ESP32-CAM یا هر برد ESP32 در Arduino IDE باید هسته ESP32 (ESP32 Arduino Core) را از طریق Board Manager نصب کنید.

کتابخانه و هسته برد باید نصب شده باشند تا بتوانید برد صحیح را انتخاب و کد را آپلود کنید.

تصویر پیش نمایش آموزش نصب برد ESP32 در آردوینو IDE

انتخاب برد و پورت

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

پنجره انتخاب برد در آردوینو IDE برای انتخاب نوع ESP32

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

انتخاب پورت سریال مانند /dev/ttyUSB0 یا COM6 در آردوینو IDE

پس از این مراحل، 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 دانلود شده را انتخاب کنید.

فرآیند اضافه کردن فایل ZIP کتابخانه از منوی Sketch در آردوینو IDE

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

پیغام موفقیت نصب کتابخانه ESP32QRCodeReader-master.zip در آردوینو IDE

برنامه ریزی ESP32-CAM

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

مسیر Examples در آردوینو IDE برای مثال های 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 را یک بار فشار دهید. خروجی نمونه ای مانند تصویر زیر را مشاهده خواهید کرد:

خروجی نمونه در Serial Monitor پس از اجرای کد روی ESP32-CAM

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

مثال یک کد QR مربع برای تست اسکن با دوربین

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

نمایش محتوای رمزگشایی شده کد QR در 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 جدا شده باشد تا برد در حالت عادی اجرا شود.

5 (1 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *