Pag-alis ng mga bagay na may ESP32-CAM

Detecting Objects with the ESP32-CAM

Ang ESP32-CAM ay isang malakas, murang microcontroller na may built-in na module ng camera, na may kakayahang makunan ng mga imahe at streaming live na video. Sa pamamagitan ng pag-agaw ng mga kakayahan sa pagproseso nito at pagsasama ng mga panlabas na aklatan ng pag-aaral ng makina o mga frameworks, maaari mong paganahin ang pagtuklas ng object nang direkta sa ESP32-cam. Ang tutorial na ito ay gagabay sa iyo sa pamamagitan ng pag-set up ng pangunahing object detection kasama ang ESP32-cam gamit ang mga pre-sanay na modelo.


Ano ang kakailanganin mo

  1. Module ng ESP32-CAM
  2. FTDI Programmer (USB-To-Serial Adapter)
  3. Jumper wires
  4. Breadboard (Opsyonal)
  5. Isang computer na may naka -install na Arduino IDE
  6. Gilid salpok o tensorflow lite para sa mga modelo ng pagtuklas ng object

Hakbang 1: Pag -set up ng Arduino IDE

1. I -install ang package ng ESP32 board

  1. Buksan ang Arduino IDE.

  2. Pumunta sa File > Kagustuhan.

  3. Sa patlang na "Karagdagang Board Manager URL", idagdag:

    https://dl.espressif.com/dl/package_esp32_index.json
    
  4. Mag -click Ok.

  5. Pumunta sa Mga tool > Lupon > Manager ng board.

  6. Maghanap para sa "ESP32" at i -install ang package ng mga sistema ng ESPRESFIF.

2. I -install ang mga kinakailangang aklatan

  • I -install ang library ng "ESP32 Camera".
  • Para sa mga modelo ng pagtuklas ng object, i -install ang "TensorFlow Lite Micro" (o mga katulad na aklatan).

Hakbang 2: Ang mga kable ng ESP32-cam

ESP32-CAM PIN FTDI programmer pin
Gnd Gnd
5v VCC (5V)
U0r TX
U0t RX
Gnd Gnd (io0 hanggang gnd para sa pag -flash)

Mahalaga: Ikonekta ang IO0 PIN sa GND upang ilagay ang ESP32-cam sa flash mode.


Hakbang 3: Pag -upload ng isang pangunahing sketch ng pagtuklas ng object

1. Piliin ang board at port

  1. Pumunta sa Mga tool > Lupon at piliin AI-Thinker ESP32-CAM.
  2. Sa ilalim ng Mga tool, piliin ang tama Com port Para sa iyong programmer ng FTDI.

2. Paghahanda ng code

Gumamit ng isang pangunahing halimbawa upang mai-load ang isang pre-sanay na modelo ng pagtuklas ng object (hal., TensorFlow Lite model). Nasa ibaba ang isang halimbawang snippet upang pagsamahin ang pagtuklas ng object:

#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. I -upload ang code

  1. Pindutin ang I -reset Button sa ESP32-cam habang ang IO0 ay konektado sa GND.
  2. Mag -click Mag -upload sa Arduino IDE.
  3. Kapag kumpleto ang pag -upload, idiskonekta ang IO0 mula sa GND at pindutin ang I -reset Button muli.

Hakbang 4: Pag -access sa mga resulta ng pagtuklas ng object

  1. Buksan ang serial monitor (Mga tool > Serial monitor) at itakda ang rate ng baud sa 115200.
  2. Tingnan ang mga napansin na mga bagay at ang kanilang mga marka ng kumpiyansa sa serial monitor.
  3. Maaari mong palawakin ito sa pamamagitan ng pagpapakita ng mga resulta sa isang web interface gamit ang HTML o pagsasama sa mga platform ng IoT tulad ng MQTT.

Hakbang 5: Pagpapahusay ng pagtuklas ng object

  • Pag -optimize ng Model: Gumamit ng gilid na salpok o tensorflow lite upang sanayin ang mga pasadyang mga modelo na na-optimize para sa ESP32-cam.
  • Web Interface: Pagandahin ang proyekto sa pamamagitan ng pagpapakita ng mga napansin na mga bagay nang direkta sa isang interface ng browser.
  • Pagsasama ng IoT: Magpadala ng mga resulta ng pagtuklas sa mga serbisyo ng ulap para sa karagdagang mga sistema ng pagproseso o alerto.

Pag -aayos

  • MODEL MALAKI: Tiyakin na ang laki ng modelo ay umaangkop sa loob ng memorya ng ESP32-cam.
  • Hindi nakita ang camera: Patunayan ang mga kable at tiyakin na ang camera ay konektado nang ligtas.
  • Mababang katumpakan: Sanayin o pinong-tune ang modelo na may mas may-katuturang data.

Ang mga aplikasyon ng pagtuklas ng object na may ESP32-cam

  1. Mga security camera na may paggalaw o pagtuklas ng object
  2. Smart Home Automation (hal., Pag -alis ng Mga Paghahatid o Mga Alagang Hayop)
  3. Mga sistema ng pagsubaybay at pagbibilang sa industriya
  4. Pagsubaybay at pananaliksik ng wildlife

Konklusyon

Matagumpay kang nag-set up ng pangunahing pagtuklas ng object sa ESP32-CAM. Ang malakas na module na ito, na sinamahan ng mga modelo ng pag-aaral ng makina, ay nagbubukas ng walang katapusang mga posibilidad para sa mga application ng real-world. Eksperimento sa iba't ibang mga modelo, pagbutihin ang kawastuhan, at palawakin ang pag -andar upang umangkop sa iyong mga pangangailangan sa proyekto!

Mag -iwan ng komento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.