I have been searching information about the camera you posted and I found some useful information that you might find it interesting as well.
First, I found the datasheet of the camera here: http://www.uctronics.com/download/OV2640_DS.pdf. You will find a detailed description about how the camera works. The link you posted is for the camera and a breakout board for it. The breakout board is this one: CMOS Camera Adapter Board for Omnivision Image Sensor | eBay. In there you will find the pin description. I will summarize it below:
Pin Description VCC Power Supply GND Power Ground SCL I2C Clock SDA I2C Data VSYNC Vertical Sync HREF Horizon Reference PCLK Pixel Clock XCLK Master Clock D0-D7 Data Bus Y0-Y1 LSB in YUV 10 bit mode Flash Optional Flash signal PWDN Power down input
Please notice that there are some control signals like PCLK and XCLK. There are also a data bus D0-D7 and an I2C interface (SCL, SDA). There are some more signals too. It seems that this camera needs a special interface so I don't think you can just connect it to the Edison hoping everything will work.
However, I found this site: http://www.arducam.com/. There are some examples using this camera. You will find a shield for the camera as well. My suggestion would be to check this site. You might find the information you needed in order to know how to use this camera.
Hi Diego, thank you for your answer.
The arducam website is great!
With the shield, the actual data of the picture is extracted directly from the camera to some microcontroller, then fed back to the arduino (or a screen) using I2C.
The shield is used to get some RAM and speed that the arduino does not provide, but the Edison shouldn't need anything extra.
From the break-out camera board, the I2C interface is only used to control the configuration of the camera module (which I believe the Edison can do with I2Ctools and a block like this one: https://www.sparkfun.com/products/13034 ).
The data is then received through the 8 data lines.
I understand that this is a really basic question but I am struggling to find any clear information, even after a lot of research:
How do we get those data-lines? (if it's directly from the GPIOs would I only require a shield like this one? https://www.sparkfun.com/products/13038 )
What protocol does it require (therefore what software can I use)?
Trying to answer those questions only led me to research the interface between a microcontroller and the camera directly (mainly on the arducam website and the openmv project) but I am not really able to understand it, having no real experience with MCUs!
What do you mean with "8 data lines"? If you are planning to use the I2C protocol, the Edison module has an I2C interface. This interface has 2 lines: SCK and SDA. The SCK is for the "Serial Clock" and the SDA for the "Serial Data". Please refer to this document to check the pin-out of the Edison module and know where the I2C pins are located: Intel® Edison Boards and Compute Modules — Pin-out
However, I believe you are using the Arduino Expansion Board (is it correct?). If so, you can use the Arduino IDE which will make the things easier. This document will help you to learn more about the Edison and the Arduino Expansion Board: Intel® Edison Boards and Compute Modules — Intel® Edison Kit for Arduino* Hardware Guide
I hope I have answered your questions.
my bad! so I can actually transfer the data through one I2C pin!!!
I got confused with the 8 pins of the "data bus", what are they for?
As for the Arduino board, I am not planning on using it:
of what I understand so far it should be doable using I2Ctools with the camera board connected directly on to the I2C interface of the Edison.
Could you confirm?
Thank you so much, it got much clearer
I have not tried using I2Ctools but you could use, as a secondary option, Python to program the I2C interface with the mraa library: mraa/edison.md at master · intel-iot-devkit/mraa · GitHub
I'm not sure what do you mean with the "8 pins of the data bus". I believe you are talking about the data sent using I2C interface. When you use the I2C protocol you are sending bytes, and each byte is composed of 8 bits, so they are 8 data bits. Is this what you are referring to?
Thank you for the Python solution
I was talking about the "D0-D7 Data Bus" that are in the table of your first reply
On the picture of the camera board we can see
one physical pin labeled SDA (so that's where we get the actual picture (data) from using the protocol I2C),
and 8 physical pins labeled D0 to D7
I understand that I SDA (data), SCL (clock), GND (ground), VCC (power), so what are these 8 physical pins for?
I understand you now
Please take a look at this datasheet: OV2640FSL Color CMOS 2.0 MegaPixel Camera Module with OmniPixel2TM Technology. According to it, the SDA and SCL are the control interface to program the camera. This means that there is no output data from this serial interface. The pins D0-D7 are used for the video output data, this is the data interface.
From what I read in the datasheet, the camera settings are programmed through the serial control interface (SDA and SCL), and the video data is taken from the data bus which correspond to the pins D0-D7.
I will suggest you to check the datasheet; you will find the details of the camera module.
Thank you for all your help, it was really hard to find information to get my head around that in a simple way.
You did answer my question.
I will interface with the serial control interface for the settings with the python mraa library you advised me.
Will the C code (adapted) be able to work as the data interface through the GPIOs of the Edison?
If it fails I will use the Arduino kit for the Edison, using the code from the arducam.
The MRAA library is available for Python and for C++ as well. I suggested Python because I prefer to use it but if you are more comfortable using C++ you can use it too. With MRAA library you will be able to set the I2C interface and the GPIOs for the data interface.
I am very pleased that someone is trying with a camera other than the UVC camera with intel Edison.
Could you please share more about you experience and were you able to actually interface the mentioned camera with the Intel Edison?
I am struggling to interface OV7670 camera module with intel Edison using the intel mini breakout board but so far I have not been able to succeed.
There has been a lot of work with OV7670 and Arduino UNO board but can't find any help about using the same camera with Intel Edison.
Need some suggestions and help desperately.
I haven't had time to do it yet so I don't know if I can be of much help. Have you tried to use the mraa library as suggested by DiegoV_Intel ?
I have the same OV7670 with the FIFO chip AL422 but am unable to use it with the edison. I have no idea how these need to be connected.