So you're a Noob? Post your questions here until you graduate! Don't be shy.

User avatar
By laukejas
#81309 davydnorris, thanks for replying. Well, here's the thing. I read that I2C protocol is far too slow for feeding video data (I think it is 400kHz on ESP). At this speed, it would translate to 1 frame per second for a 240x180 pixel video, as described here... Which is really bad. So I'm thinking, if I use the camera through a I2C port expander, then won't the I2C ultimately bottleneck the video feed?

I did search for I2C or SPI cameras... I2C cameras doesn't seem to exist, presumably because of the speed issue of this protocol. As for SPI, the only camera I found is ArduCam - which is not available in my country and outlandishly expensive to ship from abroad. Do you know any other cameras that work on SPI?

I would like to avoid ESP32 if possible... It consumes way more battery, and has tons of features that I do not need for this project... But if all else fails, I will have to use it.
User avatar
By davydnorris
#81324
laukejas wrote:davydnorris, thanks for replying. Well, here's the thing. I read that I2C protocol is far too slow for feeding video data (I think it is 400kHz on ESP). At this speed, it would translate to 1 frame per second for a 240x180 pixel video, as described here... Which is really bad. So I'm thinking, if I use the camera through a I2C port expander, then won't the I2C ultimately bottleneck the video feed?

I did search for I2C or SPI cameras... I2C cameras doesn't seem to exist, presumably because of the speed issue of this protocol. As for SPI, the only camera I found is ArduCam - which is not available in my country and outlandishly expensive to ship from abroad. Do you know any other cameras that work on SPI?

I would like to avoid ESP32 if possible... It consumes way more battery, and has tons of features that I do not need for this project... But if all else fails, I will have to use it.


The best you could really do using I2C is a series of frames - it isn't a fast protocol, but then a UART isn't going to be much better, which is why I suggested I2S or SPI, which are built for streaming data more effectively. Either way it's quite a push to get real time video streaming. You would definitely not want to use it through a mux - that's why I suggested having 2 I2C channels if you're going to do it that way.

A quick Google search for "i2s camera" gave me a whole lot of hits for projects using the OV7670 and other members of the same family on the ESP32. This may be something you can adapt.
User avatar
By laukejas
#81327
davydnorris wrote:
laukejas wrote:The best you could really do using I2C is a series of frames - it isn't a fast protocol, but then a UART isn't going to be much better, which is why I suggested I2S or SPI, which are built for streaming data more effectively. Either way it's quite a push to get real time video streaming. You would definitely not want to use it through a mux - that's why I suggested having 2 I2C channels if you're going to do it that way.

A quick Google search for "i2s camera" gave me a whole lot of hits for projects using the OV7670 and other members of the same family on the ESP32. This may be something you can adapt.


Sorry, I missed that you wrote i2s, not i2c! So OV7670 is using i2s? In every tutorial that I've seen, it requires a ton of pins to transfer video data. I was hoping to find a solution that would allow me to get data from camera over 2 pins at most, given how few pins are available on esp8266.

All the tutorials I've seen for OV7670 are with esp32, not esp8266. I thought I saw a tutorial for esp8266 when I wrote my first post, but now I can't seem to find it. Maybe I got mistaken. So I assume esp8266 is too slow to get any decent framerate over i2s? Does this mean that the only solution here is to use esp32?
User avatar
By RichardS
#81328 ESP32 really shines at I2S, I have never seen a I2S camera however.... but you can use the I2S interface in a nonstandard way to make it clock in all those data pins....

RichardS