Objektien havaitseminen ESP32-CAM: n kanssa

Detecting Objects with the ESP32-CAM

ESP32-CAM on tehokas, edullinen mikrokontrolleri, jossa on sisäänrakennettu kameramoduuli, joka pystyy kaappaamaan kuvia ja suoratoistaa live-videota. Hyödyntämällä sen käsittelymahdollisuuksia ja integroimalla ulkoiset koneoppimiskirjastot tai kehykset, voit ottaa objektien havaitsemisen suoraan ESP32-CAM: lla. Tämä opetusohjelma opastaa sinua määrittämään perusobjektin havaitsemisen ESP32-CAM: lla ennakkomaksutettujen mallejen avulla.


Mitä tarvitset

  1. ESP32-CAM-moduuli
  2. FTDI-ohjelmoija (USB-ser-sovitin)
  3. Hyppyjohdot
  4. Leipälevy (valinnainen)
  5. Tietokone, jossa Arduino IDE on asennettu
  6. Edge Impulse tai TensorFlow Lite objektin havaitsemismalleissa

Vaihe 1: Arduino IDE: n asettaminen

1. Asenna ESP32 -levypaketti

  1. Avaa Arduino IDE.

  2. Mennä jhk Tiedosto > Mieltymykset.

  3. Lisää "Ylimääräisen hallituksen johtajan URLS" -kenttään: Lisää:

    https://dl.espressif.com/dl/package_esp32_index.json
    
  4. Napsauttaa Hyvä.

  5. Mennä jhk Työkalut > Hallitus > Hallituspäällikkö.

  6. Etsi "ESP32" ja asenna paketti espressif -järjestelmissä.

2. Asenna vaadittavat kirjastot

  • Asenna "ESP32 -kamera" -kirjasto.
  • Asenna objektien havaitsemismalleille "Tensorflow Lite Micro" (tai vastaavat kirjastot).

Vaihe 2: ESP32-CAM: n johdotus

ESP32-cam-nasta FTDI -ohjelmoijatappi
Hölynpöly Hölynpöly
5V VCC (5V)
U0R TX
U0t Rx
Hölynpöly GND (IO0 - GND vilkkumista varten)

Tärkeää: Kytke IO0-nasta GND: hen asettaaksesi ESP32-CAM Flash-tilaan.


Vaihe 3: Perusobjektin havaitsemisluonnoksen lähettäminen

1. Valitse kortti ja portti

  1. Mennä jhk Työkalut > Hallitus ja valitse Ai-ajattelija ESP32-CAM.
  2. Ali Työkalut, valitse oikea Com -portti FTDI -ohjelmoijallesi.

2. koodin valmistelu

Laaditaan perusesimerkki esiopetetun objektin havaitsemismallin (esim. TensorFlow Lite -malli). Alla on näytteen katkelma objektien havaitsemisen integroimiseksi:

#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. Lataa koodi

  1. Paina Nollata Painike ESP32-CAM: ssä, kun IO0 on kytketty GND: hen.
  2. Napsauttaa Ladata Arduino IDE: ssä.
  3. Kun lataus on valmis, irrota IO0 GND: stä ja paina Nollata Painike uudelleen.

Vaihe 4: Objektin havaitsemistulosten käyttäminen

  1. Avaa sarjamonitori (Työkalut > Sarjamonitori) ja aseta baud -arvo 115200.
  2. Näytä havaitut esineet ja niiden luottamuspisteet sarjamonitorissa.
  3. Voit laajentaa tätä näyttämällä tulokset verkkoliittymässä HTML: n avulla tai integroimalla IoT -alustoihin, kuten MQTT.

Vaihe 5: Objektien havaitsemisen parantaminen

  • Mallin optimointi: Käytä Edge-impulssia tai TensorFlow Liteä kouluttamaan räätälöityjä malleja, jotka on optimoitu ESP32-CAM: lle.
  • Web -käyttöliittymä: Paranna projektia näyttämällä havaitut objektit suoraan selaimen rajapinnassa.
  • IoT -integraatio: Lähetä havaitsemistulokset pilvipalveluille jatkokäsittely- tai hälytysjärjestelmiä varten.

Vianetsintä

  • Malli liian suuri: Varmista, että mallin koko sopii ESP32-CAM: n muistiin.
  • Kameraa ei havaittu: Varmista johdotus ja varmista, että kamera on kytketty turvallisesti.
  • Matala tarkkuus: Harjoittele tai hienosäädä malli merkityksellisemmillä tietoilla.

Objektin havaitsemisen sovellukset ESP32-CAM: lla

  1. Turvakamerat liikkeellä tai esineiden havaitsemisella
  2. Smart Home Automation (esim. Toimitusten tai lemmikkien havaitseminen)
  3. Teollisuuden seuranta- ja laskentajärjestelmät
  4. Villieläinten seuranta ja tutkimus

Johtopäätös

Olet määrittänyt onnistuneesti objektin perustunnistuksen ESP32-CAM: lla. Tämä tehokas moduuli yhdistettynä koneoppimomalliin avaa loputtomia mahdollisuuksia reaalimaailman sovelluksiin. Kokeile erilaisia ​​malleja, paranna tarkkuutta ja laajenna toiminnallisuutta projektin tarpeisiisi!

Jätä kommentti

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.