Cách sử dụng ESP32-CAM – 3 dự án mẫu cho người mới

ESP32 CAM là một mạch được ra mắt vào năm 2019, mang đến khả năng ghi hình ảnh với giá rất rẻ, có thẻ SD. Cách sử dụng ESP32-CAM là như thế nào? Chúng được dùng trong các dự án gì?

Trong bài viết này, IoTZone sẽ giải đáp các câu hỏi này. Trên thực tế, ESP32-CAM có thể dùng để phát hiện chuyển động, nhận diện gương mặt, giải mã biển số xe hoặc chỉ đơn giản là làm một Webcam ESP32 an ninh.

ESP32-CAM là gì?

ESP32-CAM sử dụng hệ thống trên chip (SoC) ESP32-S do Ai-Thinker phát triển. Trong đó, chúng chứa toàn bộ thiết bị của một máy tính, bao gồm vi xử lý, bộ nhớ RAM, bộ lưu trữ và các thiết bị ngoại vi trên 1 con chip duy nhất.

Ngoài ra, ESP32-CAM cũng hỗ trợ khả năng mở rộng các tính năng linh hoạt. Trước khi đi vào cách sử dụng ESP32-CAM, chúng ta cùng xem qua từng thành phần của mạch này:

Bộ xử lý ESP32-S

Vi xử lý này gần như tương đương với module ESP-WROOM-32 do Espressif phát triển (cùng thông số kỹ thuật và kiểu dáng bên ngoài).

Vi xử lý ESP32-S chứa bộ vi xử lý Tensilica Xtensa LX6, lõi kép 32bit mang đến tốc độ 240MHz cực cao. Đó là lý do chúng ta có thể dùng ESP32-CAM cho các tác vụ nâng cao, phức tạp như xử lý video, nhận dạng gương mặt hoặc thậm chí là cho cả trí tuệ nhân tạo.

Cách sử dụng ESP32-CAM - Tìm hiểu bộ xử lý ESP32-S

Bộ nhớ

Khi tìm hiểu cách sử dụng ESP32-CAM, bạn sẽ thấy bộ nhớ đóng vai trò quan trọng đối với các tác vụ phức tạp. Hiện nay, trên ESP32-S có đầy đủ 520 kilobyte RAM bên trong, như hình:

Cách sử dụng ESP32-CAM - Tìm hiểu bộ nhớ

Có thể ESP32-CAM không đủ sức mạnh để xử lý các tác vụ có quá nhiều RAM, do đó, chúng có kèm theo 4MB PSRAM bên ngoài để mở rộng dung lượng lưu trữ. Bộ nhớ RAM này phù hợp để xử lý âm thanh hoặc các tác vụ đồ họa nâng cao.

Chip ESP32-S sở hữu bộ nhớ Flash 4MB, giúp hỗ trợ tốt cho các chương trình và việc lưu trữ dữ liệu này.

Camera

Cảm biến Camera OV2640 trên ESP32-CAM khá phù hợp với các dự án như camera giám sát trông trẻ hoặc camera gắn tại chuông cửa.

Chúng có độ phân giải 2 megapixel, tối đa 1600 x 1200 pixel, phù hợp với đa dạng các ứng dụng giám sát hiện nay. Ngoài ra, ESP32-CAM tương thích với nhiều loại cảm biến máy ảnh khác nhau.

Kho lưu trữ

Việc bổ sung thẻ nhớ microSD vào ESP32-CAM giúp mở rộng dung lượng lưu trữ, cho phép chúng ta ghi dữ liệu hoặc chụp ảnh và lưu ảnh / video trực tiếp trong mạch.

Ăng ten

Trên ESP32-CAM đi kèm với một ăng ten theo dõi PCB trên mạch, cũng như có sẵn đầu nối u.FL để chúng ta kết nối với ăng ten bên ngoài. Đây cũng là yếu tố bạn cần biết khi tìm hiểu cách sử dụng ESP32-CAM. Bộ Selection Jumper cho phép chúng ta thay đổi tùy chọn giữa 2 lựa chọn này.

Đèn LED

ESP32-CAM có sẵn một đèn LED hình vuông màu trắng trên mạch. Chúng có tác dụng tương tự như một chiếc đèn Flash của máy ảnh, nhưng tác dụng của nó không chỉ có đơn giản là để chiếu sáng thông thường như vậy.

Mặt sau của ESP32-CAM có sẵn một chiếc đèn LED nhỏ màu đỏ, thường dùng để thông báo trạng thái. Trong cách sử dụng ESP32-CAM, chúng ta thường lập trình và kết nối LED này với chân GPIO 33.

Mức tiêu thụ điện năng của ESP32-CAM

Tùy thuộc vào cách sử dụng ESP32-CAM của bạn phục vụ cho mục đích gì, mà mức tiêu thụ điện năng sẽ khác nhau.

Thông thường, chúng dao động từ 80mAh (khi khong phát video) cho đến khoảng 100 – 160 mAh (khi phát video). Nếu bạn kết hợp với đèn Flash, chúng có thể lên tới 270 mAh.

Sơ đồ chân ESP32-CAM

Trên ESP32-CAM có sẵn 16 chân, các chân có chức năng tương tự được gom nhóm với nhau như hình:

Sơ đồ chân ESP32-CAM
Sơ đồ chân ESP32-CAM

Cụ thể:

  • Power (Chân nguồn): Có hai chân nguồn là 5V và 3V3. Chúng ta có thể cấp nguồn cho ESP32-CAM qua một trong hai chân này. Vì nhiều người dùng đã gặp phải sự cố khi cấp nguồn cho thiết bị ở mức 3,3V, nên ESP32-CAM luôn được cấp nguồn qua chân 5V. Chân VCC thường xuất ra 3,3V từ bộ điều chỉnh điện áp trên bo mạch. Tuy nhiên, nó có thể được cấu hình để xuất ra 5V bằng cách sử dụng liên kết Zero-ohm gần chân VCC.
  • GND: Nối đất
  • GPIO: Trên ESP32-S có tổng 32 chân GPIO, nhưng có một số chân được dùng nội bộ cho PSRAM và máy ảnh nên chúng ta chỉ còn lại 10 chân có thể sử dụng. Trong đó, mỗi chân lại có 1 nhiệm vụ ngoại vi khác nhau, chẳng hạn như SPI, UART, ADC hoặc Touch.
  • UART: Trên thực tế, ESP32-S có hai giao diện UART là UART0 và UART2. Tuy nhiên, chân RX (GPIO 16) của UART2 bị hỏng, khiến chúng ta chỉ có thể dùng UART0 trên ESP32-CAM (GPIO 1 và GPIO 3). Ngoài ra, do ESP32-CAM thiếu cổng USB nên các chân này phải dùng để bật đèn flash cũng như kết nối với các thiết bị UART như GPS, cảm biến vân tay, cảm biến khoảng cách,… tùy theo nhu cầu người dùng.
  • MicroSD: Dùng để kết nối thẻ nhớ microSD. Nếu không sử dụng thẻ nhớ microSD, bạn có thể sử dụng các chân này làm đầu vào và đầu ra thông thường.
  • ADC: Các chân ADC2 được trình điều khiển WiFi sử dụng nội bộ nên chúng không thể được sử dụng khi đang bật Wi-Fi.
  • Touch: ESP32-CAM có 7 GPIO cảm ứng điện dung. Khi tải điện dung (chẳng hạn như ngón tay người) ở gần GPIO, ESP32 sẽ phát hiện sự thay đổi điện dung.
  • SPI: ESP32-CAM chỉ có một SPI (VSPI) ở chế độ phụ và chế độ chính.
  • PWM: ESP32-CAM có 10 kênh (tất cả các chân GPIO) PWM được điều khiển bởi bộ điều khiển PLC. Đầu ra PWM có thể được sử dụng để điều khiển động cơ kỹ thuật số và đèn LED.

Cách sử dụng ESP32-CAM với phần cứng bổ sung

Khi mới tìm hiểu cách sử dụng ESP32-CAM thì việc này sẽ hơi khó khăn, vì thiếu cổng USB tích hợp trên mạch. Do đó, chúng ta cần có các phần cứng bổ sung khi lập trình chúng với Arduino IDE.

Tuy không phải là quá khó khăn và phức tạp, nhưng chúng khá bất tiện.

Để lập trình cho ESP32-CAM, bạn cần một bộ chuyển đổi FTDI hoặc bộ chuyển đổi ESP32-CAM-MB.

Sử dụng bộ FTDI

Sơ đồ kết nối:

cách sử dụng ESP32-CAM với FTDI

Trên FTDI có sẵn một jumper để bạn chọn mức điện áp 3.3V hoặc 5V. Vì chúng ta đang cấp nguồn cho ESP32 là 5V nên bạn cần đảm bảo rằng dây Jumper cũng chọn ở mức 5V nhé!

Lưu ý: Chân GPIO 0 được nối đất, kết nối này chỉ cần thiết khi chúng ta lập trình ESP32-CAM. Sau khi lập trình xong, bạn cần ngắt kết nối này.

Mỗi khi muốn upload một đoạn sketch mới vào mạch, bạn phải thực hiện lại kết nối này.

Sử dụng bộ ESP32-CAM-MB (Khuyến khích sử dụng)

Bạn xếp ESP32-CAM lên bo mạch con, gắn cáp micro USB và nhấn vào nút Upload để code cho bo mạch, chúng khá đơn giản nếu so sánh với option trên:

cách sử dụng ESP32-CAM với ESP32-CAM-MB

Chuẩn bị trên Arduino IDE

Đầu tiên, bạn cần cài sẵn tiện ích ESP32 trên Arduino IDE, để có thể làm việc với các mạch ESP32 nhé! Nếu chưa cài, bạn làm theo hướng dẫn sau:

Sau đó, bạn hãy chọn đúng board mạch ESP32 mình dùng >> kết nối ESP32 với laptop bằng cáp USB >> chọn đúng số cổng COM trên Arduino IDE để kết nối.

Vậy là xong, chúng ta đã sẵn sàng mọi thứ để tìm hiểu về cách sử dụng ESP32-CAM! Cùng xem qua 3 ví dụ về cách dùng ESP32-CAM:

Cách dùng ESP32-CAM – Code mẫu

Ví dụ 1: Nhấp nháy LED

Để tiếp cận với cách sử dụng ESP32-CAM, hãy thử làm dự án đơn giản: Nhấp nháy đèn LED Flash tích hợp sẵn trên Camera. Đèn LED này được nối với GPIO 4:

int flashPin = 4;

void setup() {
    pinMode(flashPin, OUTPUT);
}

void loop() {
    digitalWrite(flashPin, HIGH);
    delay(1000);
    digitalWrite(flashPin, LOW);
    delay(1000);
}

Ví dụ 2: Code mẫu có sẵn trong Arduino IDE

Trong Arduino IDE đã có sẵn một số dự án mẫu để bạn tìm hiểu cách dùng ESP32-CAM, cụ thể như quét tìm các mạng lân cận hoặc xây dựng ESP32 Web Server.

Bạn có thể truy cập vào File > Examples > ESP32, màn hình sẽ hiển thị rất nhiều code mẫu để bạn thử nghiệm.

Ví dụ 3: Máy chủ phát video streaming

Thật sai sót khi tìm hiểu cách sử dụng ESP32-CAM mà không làm ứng dụng phát video trực tiếp. Dự án này giúp biến ESP32-CAM thành một Web Cam đầy đủ tính năng, có thể nhận diện gương mặt, giám sát an ninh,…. tùy thích.

Bạn có thể tìm thấy đoạn code mẫu về cách dùng ESP32-CAM này trong File > Examples > ESP32 > Camera > CameraWebServer.

Trên IoTZone cũng có sẵn bài hướng dẫn mẫu về chủ đề này, bạn có thể xem chi tiết tại: Dự án ESP32 Webcam gọi Video Call Skype / Zoom hoặc làm Camera giám sát

Lời kết

Trên đây là các hướng dẫn chi tiết về cách sử dụng ESP32-CAM, hy vọng chúng hữu ích với bạn. Chúc bạn thành công với dự án này! Website IoTZone cũng có kha khá các bài hướng dẫn kỹ thuật khác về chủ đề lập trình ESP32, bạn có thể theo dõi và đón đọc nhé!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *