ESP32-CAM adalah mikrokontroler yang kuat dan berbiaya rendah dengan modul kamera bawaan, yang mampu mengambil gambar dan streaming video langsung. Dengan memanfaatkan kemampuan pemrosesannya dan mengintegrasikan pustaka pembelajaran mesin eksternal atau kerangka kerja, Anda dapat mengaktifkan deteksi objek secara langsung pada ESP32-Cam. Tutorial ini akan memandu Anda melalui pengaturan deteksi objek dasar dengan ESP32-CAM menggunakan model pra-terlatih.
Apa yang Anda Butuhkan
- Modul ESP32-CAM
- Programmer FTDI (adaptor USB-to-Serial)
- Kabel jumper
- Papan tempat memotong roti (opsional)
- Komputer dengan IDE Arduino diinstal
- Impuls tepi atau tensorflow lite untuk model deteksi objek
Langkah 1: Menyiapkan IDE ARDUINO
1. Instal Paket Papan ESP32
-
Buka Ide Arduino.
-
Pergi ke Mengajukan > Preferensi.
-
Di bidang "URL Manajer Tambahan", tambahkan:
https://dl.espressif.com/dl/package_esp32_index.json
-
Klik OKE.
-
Pergi ke Peralatan > Papan > Manajer Dewan.
-
Cari "ESP32" dan instal Paket oleh Espressif Systems.
2. Instal perpustakaan yang diperlukan
- Instal Perpustakaan "Kamera ESP32".
- Untuk model deteksi objek, instal "TensorFlow Lite Micro" (atau pustaka serupa).
Langkah 2: Kabel ESP32-Cam
Pin esp32-cam | Pin Programmer FTDI |
---|---|
Gnd | Gnd |
5v | VCC (5V) |
U0r | Tx |
U0t | Rx |
Gnd | GND (IO0 ke GND untuk berkedip) |
Penting: Hubungkan pin IO0 ke GND untuk menempatkan ESP32-Cam ke mode flash.
Langkah 3: Mengunggah Sketsa Deteksi Objek Dasar
1. Pilih papan dan port
- Pergi ke Peralatan > Papan dan pilih AI-pemikir ESP32-Cam.
- Di bawah Peralatan, pilih yang benar Port com untuk programmer FTDI Anda.
2. Mempersiapkan Kode
Gunakan contoh dasar untuk memuat model deteksi objek pra-terlatih (mis., Tensorflow Lite Model). Di bawah ini adalah cuplikan sampel untuk mengintegrasikan deteksi objek:
#include <esp_camera.h>
#include <TensorFlowLite_ESP32.h>
// Replace with your specific model and labels
#include "model.h"
#include "labels.h"
void setup() {
Serial.begin(115200);
// Initialize the camera
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
if (!esp_camera_init(&config)) {
Serial.println("Camera initialized successfully!");
} else {
Serial.println("Camera initialization failed!");
while (1);
}
// Load the TensorFlow Lite model
TfLiteStatus model_status = tflite::InitModel(model);
if (model_status != kTfLiteOk) {
Serial.println("Failed to initialize the model");
while (1);
}
}
void loop() {
// Capture a frame
camera_fb_t *frame = esp_camera_fb_get();
if (!frame) {
Serial.println("Camera capture failed");
return;
}
// Run object detection
tflite::RunInference(frame->buf, frame->len);
// Display detected objects
for (int i = 0; i < NUM_CLASSES; i++) {
float confidence = tflite::GetConfidence(i);
if (confidence > 0.5) {
Serial.print("Detected: ");
Serial.print(labels[i]);
Serial.print(" with confidence: ");
Serial.println(confidence);
}
}
esp_camera_fb_return(frame); // Free the frame buffer
delay(200);
}
3. Unggah kode
- Tekan Mengatur ulang Tombol pada ESP32-Cam sementara IO0 terhubung ke GND.
- Klik Mengunggah Dalam Ide Arduino.
- Setelah unggahan selesai, lepaskan IO0 dari GND dan tekan Mengatur ulang tombol lagi.
Langkah 4: Mengakses Hasil Deteksi Objek
- Buka monitor serial (Peralatan > Monitor serial) dan atur baud rate ke
115200
. - Lihat objek yang terdeteksi dan skor kepercayaan diri mereka di monitor serial.
- Anda dapat memperluas ini dengan menampilkan hasil di antarmuka web menggunakan HTML atau berintegrasi dengan platform IoT seperti MQTT.
Langkah 5: Meningkatkan Deteksi Objek
- Optimalisasi Model: Gunakan impuls tepi atau tensorflow lite untuk melatih model khusus yang dioptimalkan untuk ESP32-Cam.
- Antarmuka web: Tingkatkan proyek dengan menampilkan objek yang terdeteksi secara langsung di antarmuka browser.
- Integrasi IoT: Kirim hasil deteksi ke layanan cloud untuk pemrosesan lebih lanjut atau sistem peringatan.
Pemecahan masalah
- Model Terlalu Besar: Pastikan ukuran model pas dalam memori ESP32-CAM.
- Kamera tidak terdeteksi: Verifikasi kabel dan pastikan kamera terhubung dengan aman.
- Akurasi Rendah: Melatih atau menyempurnakan model dengan data yang lebih relevan.
Aplikasi deteksi objek dengan ESP32-CAM
- Kamera keamanan dengan deteksi gerak atau objek
- Otomatisasi rumah pintar (mis., Mendeteksi pengiriman atau hewan peliharaan)
- Sistem Pemantauan dan Penghitungan Industri
- Pemantauan dan Penelitian Satwa Liar
Kesimpulan
Anda telah berhasil mengatur deteksi objek dasar dengan ESP32-Cam. Modul yang kuat ini, dikombinasikan dengan model pembelajaran mesin, membuka kemungkinan tak terbatas untuk aplikasi dunia nyata. Bereksperimenlah dengan model yang berbeda, tingkatkan akurasi, dan perluas fungsionalitas yang sesuai dengan kebutuhan proyek Anda!