Tản mạn về ESP32 CAM
Mục lục
Sơ đồ chân của ESP32-CAM
ESP32-CAM là một board mạch phát triển với chip điều khiển ESP32-S, camera OV2640, khe cắm thẻ nhớ microSD và các GPIO để kết nối với thiết bị ngoại vi.
Cấp nguồn
ESP32-CAM có 3 chân GND (màu đen trong sơ đồ chân), 1 chân 3.3V và 1 chân 5V (màu đỏ trong sơ đồ chân).
ESP32-CAM có thể hoạt động ở cả 3.3V và 5V, tuy nhiên với nguồn 3.3V, ESP32-CAM có thể sẽ hoạt động không ổn định, chúng ta nên dùng nguồn 5V để đảm bảo ESP32-CAM hoạt động ổn định.
Trên sơ đồ chân bạn có thể thấy 1 chân màu vàng 3.3/5V, trên ESP32-CAM chân này được kí hiệu là VCC. Chúng ta không nên sử dụng chân này để cấp nguồn cho ESP32-CAM. Đây là chân nguồn output, không sử dụng để cấp nguồn. Điện áp ở chân này có thể là 3.3V hoặc 5V.
Để ý trên board ESP32-CAM, bạn sẽ thấy bên cạnh chân VCC có kí hiệu 2 mức điện áp của chân VCC. Ứng với mỗi mức có 2 pad hàn điện trở 0Ω (đóng vai trò như jumper). Jumper nối ở mức điện áp nào thì điện áp ngõ ra của chân VCC bằng mức đó.
Chân serial
GPIO 1 và GPIO 3 là 2 chân serial của ESP32-CAM (GPIO 1 đóng vai trò là TX, GPIO 3 là RX). ESP32-CAM không được tích hợp sẵn mạch giao tiếp serial với máy tính, cần dùng 2 chân serial giao tiếp với một mạch giao tiếp serial trung gian mới có thể nạp chương trình từ máy tính.
Bạn vẫn có thể sử dụng GPIO 1 và GPIO 3 để kết nối với các module ngoại vi sau khi nạp chương trình xong. Trong trường hợp đó, bạn sẽ không thể mở Serial Monitor để xem các thông tin mà chương trình in ra hoặc debug qua serial monitor.
GPIO 0
GPIO 0 được nối với một điện trở kéo lên, có chức năng chọn chế độ hoạt động cho ESP32-CAM.
Khi điện áp GPIO 0 ở mức 0, ESP32-CAM sẽ hoạt động ở chế độ flash, chúng ta nạp chương trình cho ESP32-CAM ở chế độ này. Khi điện áp chân này ở mức 1, ESP32-CAM sẽ thoát khỏi chế độ flash.
Khi cần nạp chương trình cho ESP32, ta kết nối GPIO 0 với chân GND, và ngắt kết nối giữa GPIO 0 với GND khi cần ESP32-CAM hoạt động bình thường. Mỗi lần kết nối hoặc ngắt kết nối giữa GPIO 0 và GND cần nhấn nút RST trên board để ESP32-CAM cập nhật lại chế độ hoạt động.
GPIO 16
GPIO 16 mặc định là chân có chức năng UART. Tuy nhiên bạn cũng có thể sử dụng GPIO 16 với chức năng là digital input, GPIO 16 được kết nối với điện trở nội kéo lên nên trạng thái mặc định của chân này là mức 1.
GPIO 16 không được tích hợp bộ chuyển đổi ADC, nên không thể sử dụng cho chức năng analog input, chân này cũng không phải chan RTC, nên không thể sử dụng cho chức năng timer waker up.
Kết nối thẻ nhớ MicroSD
ESP32-S kết nối với thẻ nhớ microSD qua khe cắm thẻ nhớ theo bảng kết nối dưới đây:
MicroSD card | ESP32 |
CLK | GPIO 14 |
CMD | GPIO 15 |
DATA0 | GPIO 2 |
DATA1 / flashlight | GPIO 4 |
DATA2 | GPIO 12 |
DATA3 | GPIO 13 |
Nếu không sử dụng thẻ nhớ, bạn có thể sử các GPIO 2, 4, 12, 13, 14, 15 với chức năng input/output, các chân này đều được tích hợp bộ chuyển đổi ADC và là chân RTC.
Flashlight (GPIO 4)
ESP32-CAM có 1 đèn LED kết nối với GPIO 4, có thể hoạt động như đèn flash khi chụp hình. Tuy nhiên GPIO 4 cũng là chân kết nối với thẻ nhớ nên đèn LED có thể sẽ sáng trong lúc chúng ta sử dụng thẻ nhớ.
GPIO 33
Ở gần nút RST, có 1 đèn LED đỏ được tích hợp sẵn trên board. LED này được kết nối với GPIO 33. Đèn LED này hoạt động theo logic đảo, khi điều khiển GPIO 33 ở mức LOW, đèn LED này sẽ sáng và ngược lại.
Kết nối Camera
ESP32-S kết nối với camera theo bảng kết nối dưới đây:
OV2640 CAMERA | ESP32 | Variable name in code |
D0 | GPIO 5 | Y2_GPIO_NUM |
D1 | GPIO 18 | Y3_GPIO_NUM |
D2 | GPIO 19 | Y4_GPIO_NUM |
D3 | GPIO 21 | Y5_GPIO_NUM |
D4 | GPIO 36 | Y6_GPIO_NUM |
D5 | GPIO 39 | Y7_GPIO_NUM |
D6 | GPIO 34 | Y8_GPIO_NUM |
D7 | GPIO 35 | Y9_GPIO_NUM |
XCLK | GPIO 0 | XCLK_GPIO_NUM |
PCLK | GPIO 22 | PCLK_GPIO_NUM |
VSYNC | GPIO 25 | VSYNC_GPIO_NUM |
HREF | GPIO 23 | HREF_GPIO_NUM |
SDA | GPIO 26 | SIOD_GPIO_NUM |
SCL | GPIO 27 | SIOC_GPIO_NUM |
POWER PIN | GPIO 32 | PWDN_GPIO_NUM |
Chương trình CameraWebServer
Trong Arduino IDE, vào File –> Examples –> ESP32 –> Camera và chọn CameraWebServer để mở chương trình.
Tìm tới đoạn chương trình khai báo tên và mật khẩu WiFi để cập nhật tên và mật khẩu WiFi bạn đang sử dụng:
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
Module chúng ta sử dụng trong bài viết này là AI-THINKER:
Do vậy, trong phần khai báo model camera ta dùng #define CAMERA_MODEL_AI_THINKER
// Select camera model//#define CAMERA_MODEL_WROVER_KIT//#define CAMERA_MODEL_ESP_EYE//#define CAMERA_MODEL_M5STACK_PSRAM//#define CAMERA_MODEL_M5STACK_WIDE#define CAMERA_MODEL_AI_THINKER
Nếu không có model nào tương ứng với camera bạn đang sử dụng, bạn cần thêm phần gán pin cho board của mình trong file camera_pin.h.
Biên dịch và nạp chương trình
Kết nối ESP32-CAM với mạch nạp và máy tính rồi nạp chương trình
Lấy địa chỉ IP
Sau khi nạp chương trình xong, ngắt kết nối GPIO 0 với GND để ESP32 hoạt động bình thường. Mở Serial Monitor và chọn tốc độ baud 115200 sau đó nhấn nút reset trên ESP32-CAM và quan sát thông báo được in ra trên Serial Monitor. Địa chỉ IP sẽ được in ra.
Truy cập trang web
Truy cập trang web hiển thị video stream từ ESP32-CAM bằng địa chỉ IP vừa tìm được ở trên, nhấn nút Start Streaming để bắt đầu stream.
Bình luận gần đây