Skocz do zawartości
Miglandz

ESP32-CAM - Foto Pułapka

Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

@Miglandz bardzo fajny i oryginalny projekt - takiego DIY jeszcze u nas nie było, dzięki za pochwalenie się taką konstrukcją!

Udostępnij ten post


Link to post
Share on other sites
Dnia 25.04.2020 o 22:10, Miglandz napisał:

Trapi mnie jeszcze jeden problem mianowicie jeśli na zdjęciu jest więcej szczegółów np: cały kadr trzciny lub trawy, to obraz jest obcinany tak około 100-200px z dołu. Nie jest to chyba problem buforu w ESP bo przy kompresji ustawionej w sofcie na 10 zdjęcia zajmują 384KB jeśli zwiększę kompresje zdjęcia zajmują mniej a obraz i tak jest obcinany.

Ja tak mialem w przypadku ustawienia zbyt wysokiej rozdzielczosci obrazu. Bierze sie to z powodu sposobu rejestracji obrazu na matrycy i buforu zapisu. Jak obinzysz szczegolowosc lub rozdzielczosc to problem powinien zniknac.

Ja w swojej fotopułapce na "zwierzynę blokową" utknąłem na zapisie plikow na serwerze ftp. Niestety czas jaki byl potrzebny na zapis i przeslanie pliku byl zbyt duzy zebym potrafil sobie z tym poradzic. W koncu wykorzystalem ja jako webcamere i przy pomocy raspberry zapisuje obrazy po wyzwoleniu z czujnika ruchu. Ale ja mam dostep do pradu 😉

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@Kuba_k mówisz że zmiana rozdzielczości pomoże, wydaje mi się że już to testowałem, dzisiaj zabrałem kamerkę do domu i okazało się ze zmiana parametru

   config.frame_size = FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA

nic nie zmienia 🙂 niezależnie co ustawię zawsze jest UXGA. Postaram się jak najszybciej udostępnić mój kod może ktoś znajdzie jakiegoś buga 😉

Udostępnij ten post


Link to post
Share on other sites
11 godzin temu, Miglandz napisał:

nic nie zmienia 🙂 niezależnie co ustawię zawsze jest UXGA. Postaram się jak najszybciej udostępnić mój kod może ktoś znajdzie jakiegoś buga 😉

Jeśli korzystasz z biblioteki espressif to z tego co pamietam najpierw kod robił zrzut na pełnej rozdzielczości, a dopiero później zmienijszał do zapisu do odpowiedniej. Dodatkowo sprawdz jaka jakosc masz zapisu do jpg bo to też może wpływać.

Jeszcze przypomniałem sobie, że podobny efekt miałem gdy za często skrypt wyzwalał migawkę, chyba minimum to była 1s żeby działało.

Udostępnij ten post


Link to post
Share on other sites

Więc tak częściowo ogarnięte, standardowo miałem taki kawałek kodu:

  if (psramFound()) {
    config.frame_size = FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA
    config.jpeg_quality = 10;  //10-63 lower number means higher quality 
    config.fb_count = 1;
  } else {
    config.frame_size = FRAMESIZE_SVGA;
    config.jpeg_quality = 12;
    config.fb_count = 1;
  }

No i zmieniając FRAMESIZE_UXGA na FRAMESIZE_SXGA nic się nie działo.

w dalszej części kodu, eksperymentowałem z różnymi opcjami typu balans bieli  kontrast itd. po przeanalizowaniu biblioteki doszedłem do wniosku że tam też można zmienić rozdzielczość i tak dopisałem:

   sensor_t * s = esp_camera_sensor_get();

          s->set_brightness(s, 0);     // -2 to 2
          s->set_contrast(s, 0);       // -2 to 2
          s->set_saturation(s, 0);     // -2 to 2
          s->set_special_effect(s, 0); // 0 to 6 (0 - No Effect, 1 - Negative, 2 - Grayscale, 3 - Red Tint, 4 - Green Tint, 5 - Blue Tint, 6 - Sepia)
          s->set_whitebal(s, 1);       // 0 = disable , 1 = enable
          s->set_awb_gain(s, 1);       // 0 = disable , 1 = enable
          s->set_wb_mode(s, 1);        // 0 to 4 - if awb_gain enabled (0 - Auto, 1 - Sunny, 2 - Cloudy, 3 - Office, 4 - Home)
          s->set_exposure_ctrl(s, 1);  // 0 = disable , 1 = enable
          s->set_aec2(s, 0);           // 0 = disable , 1 = enable
          s->set_ae_level(s, 0);       // -2 to 2
          s->set_aec_value(s, 300);    // 0 to 1200
          s->set_gain_ctrl(s, 1);      // 0 = disable , 1 = enable
          s->set_agc_gain(s, 0);       // 0 to 30
          s->set_gainceiling(s, (gainceiling_t)0);  // 0 to 6
          s->set_bpc(s, 0);            // 0 = disable , 1 = enable
          s->set_wpc(s, 1);            // 0 = disable , 1 = enable // likwiduje bad piksele białe
          s->set_raw_gma(s, 0);        // 0 = disable , 1 = enable // nie wiadomo co to robi domyslnie 1
          s->set_lenc(s, 1);           // 0 = disable , 1 = enable
          s->set_hmirror(s, 0);        // 0 = disable , 1 = enable
          s->set_vflip(s, 0);          // 0 = disable , 1 = enable
          s->set_dcw(s, 1);            // 0 = disable , 1 = enable
          s->set_colorbar(s, 0);       // 0 = disable , 1 = enable
          s->set_framesize(s, FRAMESIZE_SXGA);     // ustawiamy jeszcze raz jakość 

No i rozdzielczość się zmieniła. Powiem tak jest lepiej ale i tak na niektórych zdjęciach przycina, ale nie jest już tak tragicznie.

Udostępnij ten post


Link to post
Share on other sites

W ramach uzupełnienia uszczelnionych fotek :

IMG22_215_2_0.thumb.jpg.261cd7f4c9bae0831aad21df0297e4ed.jpgIMG21_127_2_0.thumb.jpg.614b634a6e0c7a1cf96d914c5a6b10ae.jpgIMG33_91_2_0.thumb.jpg.2a656a9fb3d97f44db2920b06fb61e12.jpgIMG33_91_2_2.thumb.jpg.eb784b42770f0479b1111bacc9bfadc5.jpg

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Świetna sprawa, zwłaszcza że to jest naprawdę tanie urządzenie. ESP32 CAM ile kosztuje? Z 20 zł, a efekt jest naprawdę dobry 👍

Zainspirowałeś mnie, może zamontuję na balkonie podobne urządzono - tu dość często siadają przybysze z pobliskiego lasu 🙂 

Udostępnij ten post


Link to post
Share on other sites

Czy jest już gdzieś dostępny kod programu jak w kazdym projekcie DIY?

Udostępnij ten post


Link to post
Share on other sites
Dnia 12.05.2020 o 22:13, Miglandz napisał:

W ramach uzupełnienia uszczelnionych fotek :

 

Masz jakies opoznienie zeby PIR byl ignorowany do ilustam sekund? Bo imo to moze byc spowodowane za duza iloscia operacji na zdjeciu (opcje przetwazania ktore wrzuciles), zmieniana czestotliwoscia xclk i/lub za czestym wyzwalaniem migawki (esp nie daje rady obrobic i porzuca konwersje). To tak a propos dolu obrazu

Udostępnij ten post


Link to post
Share on other sites

Czołem,

Świetny projekt. Także jestem na etapie testowania podobnego rozwiązania tyle, że po zrobieniu zdjęcia, esp wysyła zdjęcie z kartySD na google drive - tu link do github'a https://github.com/SCWhite/esp32cam-SDcard-googledrive-PIR. Chciałem skorzystać z Waszej wiedzy i zapytać czy jest możliwość implementacji w ten projekt trybu deep_sleep (coś na kształt tego projektu - https://randomnerdtutorials.com/esp32-cam-pir-motion-detector-photo-capture/. Mianowicie, chodzi mi o to, aby po zrobieniu zdjęcia i wysłaniu na gdrive esp szedł spać a w przypadku pojawienia się ruchu PIR (podłączony do GPIO13 przez tranzystor 2N3904) wzbudzał cały układ i ponownie łączył się z wi-fi i wysyłał zdjęcie. Próbowałem coś wymyślić i dorzucić te pare linijek kodu ale z marnym skutkiem - nie jestem programistą. Będę wdzięczny za podpowiedzi.

  esp_sleep_enable_ext0_wakeup(GPIO_NUM_13, 0);
 
  Serial.println("Going to sleep now");
  delay(1000);
  esp_deep_sleep_start();
  Serial.println("This will never be printed");

 

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

W załączniku mój kod. Działa tam deepsleep i to bez tego tranzystora. ESP32 budzone jest po wykryciu ruchu oraz co 30 min. foto-trap-v2-forbot.zip

I przy okazji ładna fotka:)

IMG40_128_2_1.thumb.jpg.1dbcc86fec4f6edf583aaeee32f4dc0c.jpg

 

@Kuba_k zmniejszyłem czułość, na PIR i jest teraz ok, bardzo mało fałszywych fotek.

 

Edytowano przez Miglandz
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Dzięki serdeczne za kod - pomysł z integracją domoticza przedni, spróbuje go dostosować do home-assistanta przez rest API albo mqtt. Pewno trochę to zajmie bo moje zdolności programistyczne są dość ograniczone. Jeszcze raz dzięki 🙂

Edit:

Nie było tak strasznie - w załącznikuesp32_cam_trap_FTP_PIR_MQTT.zip kod Miglandza z integracją MQTT - to rozwiązanie wydało mi się bardziej uniwersalne niż rest API home-assitant.

 

Edytowano przez jasiek_

Udostępnij ten post


Link to post
Share on other sites
Dnia 29.05.2020 o 15:01, Miglandz napisał:

Działa tam deepsleep i to bez tego tranzystora.

A sprawdzałeś może jak jest pobór prądu przy uśpieniu? Ostatnio testuję różne regulatory i niestety 1117 który zwykle bywa w płytkach ESP niezbyt mi się zaczyna podobać w kwestiach energooszczędności 😞 ten modulik z kamerą miałem raz w ręku ale nie pamiętam jak to tam jest zrobione.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...