Embedded Eye

Give your gizmo the gift of sight

Turn your Arduino into an blazing image processing machine! (Tam2 and Tam4 chip shields available at Centeye)

(Left: Arduino Duemilanove with Rox1 shield and Tam4 chip, Middle: Arduino Pro Mini with Rox1 shield and Tam4 chip, Right: U.S. Quarter for size comparison)

Well this might be a slight exaggeration- As neat as they are, an Arduino isn't exactly a supercomputer. But we did manage to use an Arduino to grab imagery and process optical flow at a 200fps rate. That's not slow. And this was with minimally optimized code.

What we have developed, and are (finally) making available, is an Arduino-compatible shield (named "Rox1") containing one of our Tam series image sensor chips. This shield can be connected to an Arduino board (we have tested it with both a Duemilanove and an Arduino Pro Mini) to form a true minimalist programmable vision sensor (e.g. "smart camera"). Alternatively, you can use the shield as a breakout board for the image sensor chip and to connect it with any processor you please.

This board is available with or without a small lens mounted on the chip.

The Tam series of chips is our simplest image sensor- They are available in two resolutions- the Tam2 at 16x16 pixels, and the Tam4 at 4x32 pixels. The Tam4 chip uses rectangular pixels with an 8x1 aspect ratio, and is particular suited for processing imagery along one axis. The interface with a Tam chip is simple- aside from Ground and Power, you need to provide it with two digital signals (Clock and Reset) and read out the analog pixel signal (Analog). When you pulse the Reset signal, you clear a counter on the chip, which selects the first row and column of the pixel array for output. The analog value may be digitized with any ADC, including one that resides within a microcontroller. Every time you pulse the Clock signal, the counter advances and the next pixel is read out to the Analog line. Subsequent pulses of the Clock line read out the rest of the pixel array row-wise. That is it.

We have selected the Arduino environment for this particular shield because Arduinos are inexpensive, easy to use, and include a development environment ideal for debugging and hacking. To help you get started, we will also provide "open source" code that can be compiled on an Arduino to operate the image sensor, grab an image, compensate for fixed pattern noise, and compute optical flow in one direction. (We will shortly be posting this code and the board design files within a few days.)

We know two questions many of you may have- First, can you really do anything with just a couple hundred pixels? Second, is one dimensional optical flow adequate? To answer these questions, consider the following facts:

* Most flying insects have just several thousand photoreceptors total. Some, like the fruit fly, have only several hundred.

* Our altitude hold demonstrations from 2001 and 2002 were performed using just one dimensional arrays, using anywhere from 16 to 88 pixels total! (One demonstration used a 1x16 array, another used a 4x22 array.)

* Our obstacle avoidance demonstrations using a fixed-wing airplane were also performed using just one dimensional arrays, with three sensors having 88 pixels each. That is a total of 264 pixels to let a small airplane avoid collisions with trees.

* Our demonstration of an RC car driving down a curvy tunnel was performed using two sensors, each with 288 pixels- in retrospect this was probably overkill for this demonstration.

In summary, you really do not need a lot of pixels to do something interesting. In fact, you want to avoid having too many pixels. By using only as many pixels as you need, you have less image data to acquire and process, thus you can achieve a higher frame rate. This is the classic "80/20" principle applied to image processing. (The 200+ Hz frame rate we quoted was using a 16MHz Arduino to process a 1x32 array of pixels from the Tam4 chip- I bet with some optimization this code can be sped up further.)

We are making the Tam4 and Tam2 board available for $100 apiece, with or without lens. (If you don't want the lens attached, we will include it separately.) You will receive: An Arduino-compatible shield with a Tam2 (16x16) or Tam4 (4x32) image sensor chip attached, a micro lens (mounted or unmounted), and a five-element pin-header. The pin-header may be broken up and soldered to the board if you wish to connect the board to an Arduino, or you may chose not to solder the header if you wish to use the board with another processor. NOTE: You must supply the Arduino board- they are readily available from a number of vendors for a reasonable amount.


(What we ship: Rox1 Arduino-compatible shield with Tam2 or Tam4 chip, with or without lens, and 5-element pin header. Arduino processor board is not included- you must supply it. U.S. Quarter shown for size comparison.)

To order: Send an email to sales@centeye.com requesting the number of boards you want, including Tam2 or Tam4, and whether you want optics mounted or not. If you wish, include a brief description of your application. We will invoice you the appropriate amount plus a $9 shipping/handling charge (shipment via USPS priority mail only). You may then pay us by PayPal or credit card (via PayPal). After receipt of payment, we will ship you the boards.

International customers: Different shipping rates will apply. You will be responsible for paying any and all import duties on the full value of the shipment. We do not ship to all countries or all parties. Note that it is our policy to strictly adhere to US export laws. Please email us at sales@centeye.com with any questions.

Views: 27426


You need to be a member of Embedded Eye to add comments!

Join Embedded Eye

© 2022   Created by Geoffrey L. Barrows.   Powered by

Badges  |  Report an Issue  |  Terms of Service