I have been experimenting with the [SparkFun TCM8230MD camera and my Arduino. My goal is color object tracking but for now I am just learning the basics about interfacing with the camera and working with the data stream.
Since the camera runs at 27MHz and Arduino at 16MHz, I created a frame buffer “shield” for the cam to write to and the Arduino to read from using a SRAM from an old hard drive and some binary counters.
The cam writes directly to the SRAM at 30 frames per second in any resolution, synchronized by the cameras vertical, horizontal and data clock signals.
At any time the Arduino can take control of the SRAM and read it’s contents. I dump a raw frame of data over serial to the PC so that I can analyze it to generate color maps for eventual object tracking.
Once I was able to get raw images from the camera, I created a second board to experiment with color mapping. This board handles transforming the raw pixel data into data that is more suitable for object tracking so Arduino does not have have to spend cycles doing it.
I am using an Arduino Mega2560 however there is no reason it would not work with an UNO. Also, the frame buffer shield can be driven by just the camera on a very small board instead.
It is possible to read the camera directly with an Arduino by supplying the camera with clock rates as low as 1MHz. The major drawback to this is that with such low refresh rates, the long exposure times cause the images to appear washed out. If you have a [Logic Analyzer, under-clocking the camera is a good way to examine the timing characteristics and data output.
Scissor Cut PCB looks so cool!
All done soldering the Frame Buffer Shield
Looks like it will fit…
Yay! It fits!
Lets plug it into the camera/color mapping board
Cool! It works! Now to redesign the camera/color map board to fit on top of the Frame Buffer shield
Color Mapping UI
http://www.wickedmindselectronics.com/i … esized.jpg
Raw YUV422 Frame dumps from each possible picture format.
http://wickedmindselectronics.com/image … 20Zoom.jpghttp://wickedmindselectronics.com/image … ubQCIF.jpg
http://wickedmindselectronics.com/image … 20Zoom.jpghttp://wickedmindselectronics.com/image … /QQVGA.jpg
http://wickedmindselectronics.com/image … 20Zoom.jpghttp://wickedmindselectronics.com/image … s/QCIF.jpg
http://wickedmindselectronics.com/image … ps/CIF.jpg
http://wickedmindselectronics.com/image … 20Zoom.jpghttp://wickedmindselectronics.com/image … s/QVGA.jpg
http://wickedmindselectronics.com/image … ps/VGA.jpg](http://www.wickedmindselectronics.com/images/FPVGX/colormap%20framebuffer%20Arduino2560%20Bench.jpg)](http://www.wickedmindselectronics.com/images/FPVGX/colormap%20framebuffer%20Arduino2560%20Close.jpg)](http://www.wickedmindselectronics.com/images/FPVGX/framebuffer%20Arduino2560%20Mated.jpg)](http://www.wickedmindselectronics.com/images/FPVGX/framebuffer%20Arduino2560%20Bottom.jpg)](http://www.wickedmindselectronics.com/images/FPVGX/framebuffer%20Arduino2560.jpg)](http://www.wickedmindselectronics.com/images/FPVGX/framebuffer%20post%20etch.jpg)](http://www.sparkfun.com/products/8938)](http://www.sparkfun.com/products/8667)