My goal is to get 640x480 images from a camera module and save them into a SD card every one or two seconds. I have been looking into this problem for several days, and also have read to some posts on this forum (such as
http://arduino.cc/forum/index.php/topic,133680.0.html). Most solutions use serial port-based cameras, which work well with Arduino. For the sake of serial ports, the transmission time for images is pretty long. For example, a 640x480 JPG image normally has 120k bytes. If Arduino’s serial ports are set at 115200 bps (approximately 14k bytes per second). It takes about 8.5 seconds to get an image from the camera. It’s too slow for some productions which need live experience. So I want to find out the way to make getting images faster. Meanwhile, I want to control the price of the final solution low. Some hints I thought of are as follows: (Since I am a software engineer don’t know many about microelectronics, just trying to show what I found out and to ask the suggestions. )
1) A SPI connection-based camera module
I did found one, which provides both serial port and SPI interfaces. (
http://www.diytrade.com/china/pd/9560940/SPI_high_speed_JPEG_Camera_Module.html)
SPI can provide up to mega-level bps and seems suitable for image data. Unfortunately, I can’t choose the type of the CMOS sensor within it. Its price is a little high for my final production, since it costs about $35 USD.
2) ‘Raw’ camera modules
I found some such as ov7670 with AL422B, which has 380k bytes internal buffer and provides so-called ‘FIFO’ fetch. (
http://www.emsysedukits.com/camera/ov7670-camera-module-with-al422b-fifo-p-232.html?cPath=87) It seems to work fine with STM32 system (or other 51 MCUs). But when I looked into its schematic, I was confused about how to connect it with Arduino. It has 8 data pins and several clock pins. Is it possible to connect these pins to digital pins on Arduino and then read the data according to its clock pins?
3) USB host shield + USB cameras
Circuits@Home provides such shields and some USB devices libraries. There are some digital camera controller projects based on them (
http://www.circuitsathome.com/category/camera-control). I thought it may be possible to use a common PC USB camera plugged in the USB shield and to drive it according to corresponding Linux camera driver codes. Has anybody already done such works on other MCUs?