raduprv / esp32-cam_ov2640-timelapse

A timelapse program for esp32 cam with ov2640 sensor. The exposure is done manually based on the light level, and the image quality is far better than the default settings.
Apache License 2.0
36 stars 5 forks source link

I'm getting an error message when trying to upload #1

Closed FBMinis closed 3 years ago

FBMinis commented 3 years ago

G:\arduino-1.8.13\portable\sketchbook\esp32-cam_ov2640-timelapse\esp32-cam_ov2640-timelapse.ino: In function 'void setup()': esp32-cam_ov2640-timelapse:166:7: error: 'sensor_t {aka struct _sensor}' has no member named 'set_reg' Ai-Thinker ESP32-CAM, I tested CameraWebserver sketch before and is working fine.

raduprv commented 3 years ago

You have to use the esp32s2 branch. That one is more updated. https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

FBMinis commented 3 years ago

Thank you, tested and working.

Previously I tried the basic take-a-photo routine (it's in my repository), but the photos appeared over-exposed when captured outside. I uploaded CameraWebserver sketch and experimented with the options shown in the browser interface, then tried to manually set them in my own sketch but exposure levels didn't change. I found your code through a search engine and will now try to adapt it to mine.

If you happen to have a simplified sketch without the save to SDcard and go to sleep parts, that is, only the photo-capture part, it would be very helpful to me if you could share it.

(As you can see, I need to adjust the lense in my camera, as it is focusing very close.)

original (black and white selected) raduprv

raduprv commented 3 years ago

Well, the sleep and SD part are just a few lines of code which you can remove by yourself. The code is basically split in two parts: Take a picture when it's night and take a picture when it's daylight. Unfortunately, controlling the exposure using the standard way (using the exposure register) doesn't seem to work for some reason. So you have to play with adding fake frames and fake lines, slowing down the clock, etc. But even so, very bright scenes will be overexposed.

FBMinis commented 3 years ago

I'm surprised it takes this much effort to capture a decent photo outside, considering how popular this board is. The work you've done goes too deep for my skill level, so thanks again for sharing it.

raduprv commented 3 years ago

Thanks, I am glad others find it useful. When I started working at it I had 0 experience with this sensor, but I was willing to experiment :) It's a shame there is no good documentation out there, I hate when companies do that. It's not like Omnivision would lose anything if they released all the technical info. This sensor is like 15 years old now.

FBMinis commented 3 years ago

Here is another example of your work in action, showing a photo taken in the night during with a wide angle lense. IMG_20210128_210656 IMG_20210128_210730 00023_5531_4 img_1296

raduprv commented 3 years ago

Interesting lens :) When I will have some time, I want to do the opposite, add a long tele lens to it. Anyway, what is that board? A battery charger and a big battery on the other side?

How are you getting the files off the camera? Using WiFi? I had some big troubles getting the wifi to work on this particular board. The connection is really bad, yet the same program works fine on a different board (m5Stack). I've heard of others having wifi trouble with the ESP32 cam, so I think there might be some bad batches or something.

FBMinis commented 3 years ago

The ESP32 in the following photos was used with the ldr to measure brightness until I found your code. You can see the smartphone battery going to a TP4056 charger module, then the voltage is regulated to 3.3V through a HT7333 and a 470uf capacitor to keep current stable. The charger module will be connected to a small solar panel to keep the battery charged. The assembly will be attached to the old antenna mast on our roof so I can get some nice pics of my village while I'm away during the week. At this point I'm still using your sketch and saving the photos to SDCard. In terms of Wifi problems, do you use the external antenna? It works much better than the onboard one, in my experience. When I tried the CameraWebserver with the new ESP32 board today, i was getting a crippling frame rate even at lowest resolution; then I found online someone saying if you grabbed the onboard antenna the framerate would improve, and it did! Next I moved the zero ohm resistor and added a new antenna from an old laptop and the images flow like normal webcam video, perfectly acceptable. IMG_20210128_154536 IMG_20210128_154840

raduprv commented 3 years ago

Actually, I want to do something similar to what you did, was thinking to add a solar panel and a small Lifeso4 battery to the camera for outdoors timelapses. I also want to use a digital (i2c) lightmeter in order to use the board with different sensors. For some reason, the ov5640 sensor has a very unreliable lightmeter register, and despite my best attempts to get it to behave properly it still doesn't work. So I have to use some external device for that, but not sure if I can use an i2c connection on that board, since the internal ones are connected to the camera instead.

FBMinis commented 3 years ago

The GPIOs of the ESP32-Cam by AI Thinker I have are full, I think it doesnt allow SDCard and I2C to be used simultaneously.. IMG_20210117_140419

LiFePo4 is a good idea: https://www.youtube.com/watch?v=heD1zw3bMhw And the charger board: https://www.youtube.com/watch?v=ttyKZnVzic4

raduprv commented 3 years ago

I know that there aren't exposed i2c pins, but from what I've read (though not tested) esp32 can use most pins as i2c and you can define your custom pins in the code. The SD card use SPI though, no? My m5Stack has an i2c port, but no SDCard (so it's not very convenient for me).

I put my ov5640 project on hold for now, I will investigate more after I resume it.

FBMinis commented 3 years ago

10 hour timelapse with virtual dub. Very nice colors and image, it should be like this by default 👍

ezgif-3-bff722136e2d

raduprv commented 3 years ago

I am glad you like it :) What interval did you take the pictures at?

FBMinis commented 3 years ago

Hi! I captured a frame every 10 minutes, then renamed the files so Virtual Dub auto-opens then as a sequence, adjust the Framerate under the Video menu and save as AVI. I left it outside for a 24h timelapse but forgot to turn the power On...

FBMinis commented 3 years ago

Have you had any trouble with sketches when using the Development Release of esp32? I am not able to connect to telegram API when I use the same sketch I used before with the stable release.

As a test, I installed two "portable" instances of the Arduino IDE in different partitions, one running ep32 dev and the other the stable release. Same sketch, the one running with dev core doesnt connect to telegram api, therefore i cant interact with it.

As another test, I tried the WifiClientSecure in the examples menu, and stable release connected to api.telegram.org but dev gave me an error.

raduprv commented 3 years ago

I haven't tried anything except for the camera stuff. Open an issue there and see what they say about it.

FBMinis commented 3 years ago

Reverting back to the version of WiFiClientSecure that came with 1.0.4 (dated 2-Oct-19) restores functionality and sending images no longer fails.

FBMinis commented 3 years ago

36 hour timelapse. You can see some over exposures around noon, sky was overcast, no direct sun.

https://imgur.com/a/ig6ovtD

raduprv commented 3 years ago

Not bad, but why aren't you trying a shorter interval between pics, such as 30 or 60 seconds?

FBMinis commented 3 years ago

No reason, its the first time I make these, I will try with a shorter interval.

raduprv commented 3 years ago

From my observations, 30 seconds works best, but 1 minute is ok too. 30 seconds is pretty smooth.

FBMinis commented 3 years ago

https://www.youtube.com/watch?v=0tbTavNVE7U

48h timelapse; 1 photo per minute; 15 frame per second.

Possible to fix this that happens at late morning? 2062

raduprv commented 3 years ago

Nice timelapse :) Unfortunately no, at least not as far as I know. The problem is setting the min exposure. I am unable to set it to lower than it is. I think a faster clock rate would fix some of it, but unfortunately ESP32 cam can't use more than 20 Mhz. If someone finds a way on how to set an exposure lower than that, I'd be really happy.

Meanwhile, I am playing with an ov5640 sensor, where I can set the exposure properly, and as an added bonus it's 5MP. However, that requires an external lightmeter, as I can't get its lightmeter registries to behave in a consistent manner.

raduprv commented 3 years ago

You are trying to get the frame buffer too early. You commented out the code that waits for the framebuffer to finish. You should call your upload function at the place where I actually save the file on the SD card (and uncomment the while loop).

FBMinis commented 3 years ago

I dont know what happened but it seems I deleted my previous post. I was able to fix it thanks to your tip, i can now capture a frame with your code and have it sent to my Telegram group: raduprvSendTelegramOnWakeUP.ino.ino.zip

Are you working on the ov5640?

raduprv commented 3 years ago

I am working on and off with the ov5640 sensor. Unfortunately, it needs an external lightmeter, because I can't get the sensor to reliably tell me the ambient light level. I am using an BH1750 i2c sensor. I almost got it to work, but still need to add more values for different light levels, and the problem is, for some reason my camera crashes sometimes and I don't know why (it only crashes when on external power).

dannutu commented 3 years ago

You have to use the esp32s2 branch. That one is more updated. https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

Salut!

NOT an issue with your code here, I was just wondering if you'd have any hint for me since I noticed (on other threads) that you put in quite some effort to get these cameras working. I can't get past "esp_camera_fb_get(): Failed to get the frame on time!" when trying to capture JPEGs no matter what, both with your code and with any other camera code I tried. I have 4 different ESP32-CAM modules from 2 vendors, they all behave the same way. They're all "el cheapo" modules shipped from China, all of them have the Espressif logo on the metal shield, not the AI Thinker one. The cameras are all OV2640s.

I noticed I could get some output from the camera using PIXFORMAT_YUV422 instead of PIXFORMAT_JPEG but the colors are way off and then YUV is not what I need (JPEG). I posted a description of what I tried at the URL below but that issue is closed and so I don't expect anybody will notice it while there are dozens of open issues: https://github.com/espressif/esp32-camera/issues/43#issuecomment-808745113

WRT your code: I was able to compile and upload it, it ran but generated the same "esp_camera_fb_get(): Failed to get the frame on time!" errors. I was really hopeful when I finally saw the message "Saving first file as /00000_29822_37.jpg" but I checked the SD card and the files are empty (0 bytes).

I'd really appreciate if you had any hints whatsoever as I ran out of ideas here :(

Cheers!

17:00:06.830 -> Booting... at
17:00:06.830 -> 877
17:00:07.529 -> First light is 37
17:00:07.529 -> Old 0x0 value is0
17:00:07.529 -> Getting first frame at
17:00:07.529 -> 1572
17:00:11.549 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:00:11.549 -> Got first frame at
17:00:11.549 -> 5607
17:00:15.740 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:00:15.851 -> Not having image yet, waiting a bit
17:00:19.770 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:00:19.770 -> Not having image yet, waiting a bit
17:00:23.760 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:00:23.760 -> Not having image yet, waiting a bit
17:00:27.750 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:00:27.750 -> Not having image yet, waiting a bit
17:00:31.773 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:00:31.773 -> Not having image yet, waiting a bit
17:00:35.731 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:00:35.764 -> Saving first file as /00000_29822_37.jpg
17:00:35.764 -> Entering deep sleep mode at
17:00:35.764 -> 29828
17:01:05.590 -> ets Jun  8 2016 00:22:57
17:01:05.655 ->
17:01:05.655 -> rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
17:01:05.655 -> configsip: 0, SPIWP:0xee
17:01:05.655 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
17:01:05.655 -> mode:DIO, clock div:1
17:01:05.655 -> load:0x3fff0018,len:4
17:01:05.655 -> load:0x3fff001c,len:1216
17:01:05.655 -> ho 0 tail 12 room 4
17:01:05.655 -> load:0x40078000,len:10944
17:01:05.655 -> load:0x40080400,len:6388
17:01:05.655 -> entry 0x400806b4
17:01:06.654 ->
17:01:06.654 -> Booting... at
17:01:06.654 -> 877
17:01:07.351 -> First light is 35
17:01:07.351 -> Old 0x0 value is0
17:01:07.351 -> Getting first frame at
17:01:07.351 -> 1572
17:01:11.376 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:01:11.376 -> Got first frame at
17:01:11.376 -> 5607
17:01:15.463 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:01:15.463 -> Not having image yet, waiting a bit
17:01:19.483 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:01:19.483 -> Not having image yet, waiting a bit
17:01:23.469 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:01:23.469 -> Not having image yet, waiting a bit
17:01:27.455 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:01:27.455 -> Not having image yet, waiting a bit
17:01:31.476 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:01:31.476 -> Not having image yet, waiting a bit
17:01:35.464 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
17:01:35.464 -> Saving first file as /00001_29692_35.jpg
17:01:35.464 -> Entering deep sleep mode at
17:01:35.464 -> 29698
raduprv commented 3 years ago

Can you post a picture on how your board looks like? Also, try to power the board directly from 5v or 3.3v (not from your USB). Also, post a picture on how your board is connected to the computer. I tried my code on 2 different boards and it worked on all of them, so if you tried it on 4 different boards and it doesn't work then you are either very unlucky or you are connecting it the wrong way to the PC.

raduprv commented 3 years ago

Btw, make sure you disconnect I00 from the ground after you flash the code, in my tests it can't find the external RAM if I leave it connected when I boot.

dannutu commented 3 years ago

Thanks a lot for your quick answer

I tried my code on 2 different boards and it worked on all of them, so if you tried it on 4 different boards and it doesn't work then you are either very unlucky or you are connecting it the wrong way to the PC.

I think you are right, I am very unlucky. In general.

Coming back to this:

Can you post a picture on how your board looks like? Also, try to power the board directly from 5v or 3.3v (not from your USB). Also, post a picture on how your board is connected to the computer.

  1. Pictures attached. IMG_20210327_200603_stripped IMG_20210327_200027_stripped IMG_20210327_195638_stripped

  2. The ESP32-CAM module is already powered directly from/to 3.3V using a breadboard power supply which is itself powered with 7V from a 2A power supply. Same behaviour if I power the ESP32 from/to 5V. The breadboard power supply is perfectly ok, I use it to power not only the ESP32 module but also a few sensors, LEDs, transistors etc., all at the same time and they all work fine, even when the ESP32 is using WiFi.

  3. The ESP32-CAM module is connected to the computer using an FTDI programmer connected to the serial pins and GND. This works perfectly ok, never had an issue with it. This is also what I use to flash the ESP32-CAM module.

  4. Pin GPIO00 is always disconnected after I (re)flash the ESP32 module. You can see the brown Dupont wire leading nowhere.

BTW, it seems many other people are complaining about this particular issue.

Thanks anyway!

raduprv commented 3 years ago

The thing is, the sensor itself is working, and it is properly connected to the board, since the board can communicate with it just fine. I've seen in a post of yours that you had trouble with the PSRAM? Does it say it is detected when the camera boots? Because if it isn't then the camera can't get the image, it's too large for the internal ram.

dannutu commented 3 years ago

The thing is, the sensor itself is working, and it is properly connected to the board, since the board can communicate with it just fine.

That's why I mentioned that my gut feeling is this is a software issue (camera library?), not a hardware one.

I've seen in a post of yours that you had trouble with the PSRAM? Does it say it is detected when the camera boots? Because if it isn't then the camera can't get the image, it's too large for the internal ram.

Yes, psram is detected when the module starts, my question there was in relation to the amount of psram available, I knew the module is supposed to have 4MB psram but at that moment it couldn't allocate a 3750 KB fb: camera_fb_init(): Allocating 3750 KB frame buffer Failed

I don't know yet if this is because it was trying to allocate 2 fbs:

  if (psramFound()) {
    Serial.println("psram found");
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 10;
    **config.fb_count = 2;**

or because the 4MB psram is divided evenly between the 2 cores (I read this somewhere, I don't know if it's true or not).

raduprv commented 3 years ago

You don't need more than 2MB of RAM anyway. Two frame buffers is not needed, 1 is just fine. Try to put the quality to 50 or so, this will make a very small image that should fit inside the internal RAM.

Also, when you are uploading your sketch, what board and settings are you using?

dannutu commented 3 years ago

You don't need more than 2MB of RAM anyway.

That was the calculated fb size when I tested with PIXFORMAT_YUV422 - the resulting file was 960000 bytes long.

Two frame buffers is not needed, 1 is just fine. Try to put the quality to 50 or so, this will make a very small image that should fit inside the internal RAM.

I just recompiled and re-flashed it with these parameters PIXFORMAT_JPEG,xclk_freq_hz 5000000, FRAMESIZE_UXGA, jpeg_quality 50, fb_count 1:

  //init with high specs to pre-allocate larger buffers
  if(psramFound())
  {
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 3;
    config.fb_count = 1;
  } else
  {
    config.frame_size = FRAMESIZE_SVGA;
    config.jpeg_quality = 12;
    config.fb_count = 1;
  }

#if defined(CAMERA_MODEL_ESP_EYE)
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
#endif

  Serial.println("Configuring PIXFORMAT_JPEG,xclk_freq_hz 5000000, FRAMESIZE_UXGA, jpeg_quality 50, fb_count 1");
  config.pixel_format = PIXFORMAT_JPEG;
  config.xclk_freq_hz = 5000000;
  config.frame_size = FRAMESIZE_UXGA;
  config.jpeg_quality = 50;
  config.fb_count = 1;

  //initialize camera
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK)
  {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }

And the result was:

22:46:04.062 -> Booting... at
22:46:04.062 -> 878
22:46:04.062 -> Configuring PIXFORMAT_JPEG,xclk_freq_hz 5000000, FRAMESIZE_UXGA, jpeg_quality 50, fb_count 1
22:46:04.857 -> First light is 132
22:46:04.857 -> Old 0x0 value is0
22:46:04.857 -> Getting first frame at
22:46:04.857 -> 1673
22:46:09.104 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
22:46:09.104 -> Got first frame at
22:46:09.104 -> 5941
22:46:13.316 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
22:46:13.316 -> Not having image yet, waiting a bit
22:46:17.332 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
22:46:17.332 -> Not having image yet, waiting a bit
22:46:21.311 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
22:46:21.311 -> Not having image yet, waiting a bit
22:46:25.322 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
22:46:25.322 -> Not having image yet, waiting a bit
22:46:29.334 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
22:46:29.334 -> Not having image yet, waiting a bit
22:46:33.312 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
22:46:33.346 -> Saving first file as /00000_30156_132.jpg
22:46:33.346 -> Entering deep sleep mode at
22:46:33.346 -> 30165

Also, when you are uploading your sketch, what board and settings are you using?

I tried with both ESP32 Wrover / default partition scheme and AI Thinker ESP32-CAM (this one only has the default partition scheme). Same result.

I also just tried again with the example from this: https://randomnerdtutorials.com/esp32-cam-take-photo-display-web-server/ and the parameters you suggested (1 fb, quality 50):

    Serial.println("Configuring PIXFORMAT_JPEG,xclk_freq_hz 5000000, FRAMESIZE_UXGA, jpeg_quality 50, fb_count 1");
    config.pixel_format = PIXFORMAT_JPEG;
    config.xclk_freq_hz = 5000000;
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 50;
    config.fb_count = 1;

  // Camera init
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", err);
    ESP.restart();
  }

And the result was the same:

22:39:35.531 -> Connecting to WiFi...
22:39:36.160 -> SPIFFS mounted successfully
22:39:36.160 -> IP Address: http://192.168.15.58
22:39:36.160 -> psram found
22:39:36.160 -> Configuring PIXFORMAT_JPEG,xclk_freq_hz 5000000, FRAMESIZE_UXGA, jpeg_quality 50, fb_count 1
22:40:04.695 -> Taking a photo...
22:40:08.722 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
22:40:08.722 -> Camera capture failed
22:40:15.564 -> Taking a photo...
22:40:19.552 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
22:40:19.552 -> Camera capture failed

Is there a way to perform some sort of "health check" for the camera sensor itself, without trying to save an image?

raduprv commented 3 years ago

Make sure to try with the default 20Mhz clock, the sensor is very fussy about speed. I only tested it at 20Mhz.

dannutu commented 3 years ago

Make sure to try with the default 20Mhz clock, the sensor is very fussy about speed. I only tested it at 20Mhz.

Same same:

  //init with high specs to pre-allocate larger buffers
  if(psramFound())
  {
    Serial.println("psram DETECTED");
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 3;
    config.fb_count = 1;
  } else
  {
    Serial.println("psram NOT detected");
    config.frame_size = FRAMESIZE_SVGA;
    config.jpeg_quality = 12;
    config.fb_count = 1;
  }

#if defined(CAMERA_MODEL_ESP_EYE)
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
#endif

  Serial.println("Configuring PIXFORMAT_JPEG,xclk_freq_hz 20000000, FRAMESIZE_UXGA, jpeg_quality 50, fb_count 1");
  config.pixel_format = PIXFORMAT_JPEG;
  config.xclk_freq_hz = 20000000;
  config.frame_size = FRAMESIZE_UXGA;
  config.jpeg_quality = 50;
  config.fb_count = 1;

  //initialize camera
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK)
  {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }
23:04:09.226 -> Booting... at
23:04:09.226 -> 878
23:04:09.226 -> psram DETECTED
23:04:09.226 -> Configuring PIXFORMAT_JPEG,xclk_freq_hz 20000000, FRAMESIZE_UXGA, jpeg_quality 50, fb_count 1
23:04:09.690 -> First light is 62
23:04:09.690 -> Old 0x0 value is0
23:04:09.690 -> Getting first frame at
23:04:09.690 -> 1376
23:04:13.735 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
23:04:13.735 -> Got first frame at
23:04:13.735 -> 5412
23:04:17.945 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
23:04:17.945 -> Not having image yet, waiting a bit
23:04:21.964 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
23:04:21.964 -> Not having image yet, waiting a bit
23:04:25.943 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
23:04:25.943 -> Not having image yet, waiting a bit
23:04:29.924 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
23:04:30.084 -> Not having image yet, waiting a bit
23:04:33.969 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
23:04:33.969 -> Not having image yet, waiting a bit
23:04:37.950 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
23:04:38.128 -> Saving first file as /00000_29627_62.jpg
23:04:38.128 -> Entering deep sleep mode at
23:04:38.128 -> 29638
dannutu commented 3 years ago

BTW, I just tried with SVGA frame size and it's still the same.

raduprv commented 3 years ago

What happens when you try the default web server streaming sketch? Does that work at all?

dannutu commented 3 years ago

Nope, same error!

raduprv commented 3 years ago

When you upload, use wrover, Huge APP.

dannutu commented 3 years ago

Hi

I tried that as well, just in case, but as expected, it didn't make any difference as the sketch comfortably fits in the standard partitioning scheme:

Before, with the the standard partitioning scheme:

Sketch uses 425434 bytes (32%) of program storage space. Maximum is 1310720 bytes.
Global variables use 18956 bytes (5%) of dynamic memory, leaving 308724 bytes for local variables. Maximum is 327680 bytes.

After, using the "huge app" partitioning scheme:

Sketch uses 425434 bytes (13%) of program storage space. Maximum is 3145728 bytes.
Global variables use 18956 bytes (5%) of dynamic memory, leaving 308724 bytes for local variables. Maximum is 327680 bytes.

Result:

09:37:08.310 -> Booting... at
09:37:08.310 -> 877
09:37:08.310 -> psram DETECTED
09:37:08.310 -> Configuring PIXFORMAT_JPEG,xclk_freq_hz 20000000, FRAMESIZE_SVGA, jpeg_quality 50, fb_count 1
09:37:08.576 -> First light is 4
09:37:08.576 -> Old 0x0 value is0
09:37:08.609 -> Getting first frame at
09:37:08.609 -> 1175
09:37:12.686 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
09:37:12.686 -> Got first frame at
09:37:12.686 -> 5246
09:37:16.865 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
09:37:16.910 -> Not having image yet, waiting a bit
09:37:20.910 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
09:37:20.910 -> Not having image yet, waiting a bit
09:37:24.882 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
09:37:24.882 -> Not having image yet, waiting a bit
09:37:28.909 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
09:37:28.909 -> Not having image yet, waiting a bit
09:37:32.890 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
09:37:32.890 -> Not having image yet, waiting a bit
09:37:36.905 -> [E][camera.c:1474] esp_camera_fb_get(): Failed to get the frame on time!
09:37:36.905 -> Saving first file as /00000_29461_4.jpg
09:37:36.905 -> Entering deep sleep mode at
09:37:36.905 -> 29475

Would you be able to share where you bought your ESP-CAM modules from? It might just be quicker if I order a couple from the same place... this thing doesn't seem to go anywhere :(

raduprv commented 3 years ago

Where do you live? I got them from a Romanian company.

FBMinis commented 3 years ago

I have tried this code and some variations of it with 4 different cameras without a problem.

I setup the components this way, connect to usb and press upload on the IDE: IMG_20210328_203017

Once the download finishes, I disconnect usb and disconnect the red and green dupont cables, connect to usb again and open the serial monitor. Next, I connect the lipo to the 5V pin and the applications starts IMG_20210328_203144

raduprv

dannutu commented 3 years ago

Where do you live? I got them from a Romanian company.

Aveam eu o banuiala, asa :)

My camera modules are labelled “AF2569 0927XB” and “DCX-OV2640-V2” and I just ordered 2 more but I’ll have to wait for a few weeks for them to arrive and see the exact model :(

raduprv commented 3 years ago

Eu le-am luat de la baietii astia: https://www.emag.ro/modul-esp32-cam-ov2640-camera-inclusa-ai065-s72/pd/DKDGT8BBM/?X-Search-Id=bac85ed86849c2aa0dc4&X-Product-Id=52395039&X-Search-Page=1&X-Search-Position=0&X-Section=search&X-MB=0&X-Search-Action=view

Am luat doua si au mers amandoua (doar ca au probleme cu WIFI-ul).

dannutu commented 3 years ago

I have tried this code and some variations of it with 4 different cameras without a problem.

Thanks for confirming. I guess it's a fact then - I am indeed very unlucky :(

dannutu commented 3 years ago

Eu le-am luat de la baietii astia: https://www.emag.ro/modul-esp32-cam-ov2640-camera-inclusa-ai065-s72/pd/DKDGT8BBM/?X-Search-Id=bac85ed86849c2aa0dc4&X-Product-Id=52395039&X-Search-Page=1&X-Search-Position=0&X-Section=search&X-MB=0&X-Search-Action=view

Am luat doua si au mers amandoua (doar ca au probleme cu WIFI-ul).

Asta-i chiar tare - ale mele nu au nici o problema pe partea de wifi. Doar ca nu le merg camerele alea, neam. Culmea e ca in poza de la emag camera e acelasi model ca 2 ale mele: "AF2569". Ale tale tot modelul asta sunt? N-as fi avut o problema sa iau una si de la emag daca eram in tara, dar de aici mai greu :)

raduprv commented 3 years ago

Ale mele sunt TY-OV2 640-V2.0. Dar nu stiu daca conteaza asta, ca pana la urma senzorul e acelasi. Tu unde stai acum? Poti incerca sa iei de pe Banggood.

FBMinis commented 3 years ago

Here is a timelapse I made recently:

https://www.youtube.com/watch?v=JG_VSlk_VQs

I have one of these "TY-OV2 640-V2.0" and the image comes rotated 90º and the lense is wide angle. All 4 camera modules look the same and were bought from the same vendor in Aliexpress.

sample stock xga photo_2021-03-25_15-13-48 sample antena soldada xga

dannutu commented 3 years ago

Ale mele sunt TY-OV2 640-V2.0. Dar nu stiu daca conteaza asta, ca pana la urma senzorul e acelasi. Tu unde stai acum? Poti incerca sa iei de pe Banggood.

Primele 2 de pe uk.banggood le-am comandat pentru ca atunci le aveau in depozit in UK, nu trebuiau sa vina tocmai din China:

Dupa care am mai comandat 2 de la Aliexpress si am asteptat aproape doua luni sa vina si tot nu merg.

Am mai comandat inca doua camere (doar camera in sine, fara ESP32) si daca nici astea n-or sa mearga cand ajung cred ca o sa-i pun cruce.

Mai am o intrebare pentru tine - cand conectezi camera in ESP32, cum stii daca toti pinii aia au facut contact ca lumea? Mi-ai zis acum cateva zile ca "the sensor itself is working, and it is properly connected to the board, since the board can communicate with it just fine", dar ma tot intreb daca nu cumva vreun pin n-a facut contact cum trebuie.