ESP32-CAM (bản AI-Thinker) là camera WiFi giá rẻ nhưng khá "khó tính": không có cổng USB, nguồn yếu dễ reset. Bài này đi qua cách nạp và chạy ví dụ stream có sẵn.
Linh kiện
- ESP32-CAM AI-Thinker (camera OV2640)
- Mạch nạp USB-TTL (FTDI / CP2102 / CH340) có mức 3.3V. Hoặc đế nạp ESP32-CAM-MB tích hợp sẵn.
- Nguồn 5V ổn định, tối thiểu 500mA (tốt nhất 1A)
- Dây nối, 1 dây jumper để nối IO0 xuống GND
Nối dây để nạp
| USB-TTL | ESP32-CAM |
|---|---|
| 5V | 5V |
| GND | GND |
| TX | U0R (GPIO3) |
| RX | U0T (GPIO1) |
| Nối IO0 với GND để vào chế độ nạp; nhấn RESET. | |
Các bước
- Arduino IDE: cài gói board esp32 by Espressif Systems.
- Chọn board AI Thinker ESP32-CAM.
- Mở
File → Examples → ESP32 → Camera → CameraWebServer. - Bỏ dấu
//dòng#define CAMERA_MODEL_AI_THINKER(các dòng model khác phải được comment). Với phiên bản core mới, chọn model trong fileboard_config.h. - Điền
ssidvàpasswordWiFi (2.4GHz). - Nạp code. Khi thấy "Connecting...", nhấn RESET nếu cần.
- Gỡ dây IO0–GND, nhấn RESET, mở Serial Monitor 115200 để xem địa chỉ IP.
- Mở IP đó trong trình duyệt, bấm Start Stream.
Lỗi thường gặp
| Triệu chứng | Nguyên nhân / Cách xử lý |
|---|---|
Brownout detector was triggered | Nguồn yếu. Cấp 5V đủ dòng bằng nguồn riêng, dây ngắn, thêm tụ 470µF–1000µF gần chân 5V. Không cấp nguồn qua cổng USB laptop yếu. |
Failed to connect... Wrong boot mode | Chưa nối IO0 xuống GND khi nạp, hoặc chưa nhấn RESET. |
Camera init failed 0x105 / 0x20001 | Cáp ribbon camera lỏng hoặc chọn nhầm model board. |
| Hình giật, trễ | Giảm độ phân giải (VGA/SVGA), tăng giá trị JPEG quality (số lớn = nén nhiều), đặt gần router. |
| Chip rất nóng | Bình thường khi stream liên tục; gắn tản nhiệt nhỏ và để thoáng. |
Bảo mật: ví dụ CameraWebServer không có mật khẩu. Chỉ dùng trong mạng LAN, đừng mở port ra Internet. Nếu cần xem từ xa, dùng VPN (WireGuard/Tailscale) hoặc Cloudflare Tunnel kèm xác thực.