We've had a lot of inquiries about our ArduEye system, plus we've just prototyped a smaller, completely self-contained ArduEye (more on this in another post). So I figure it makes sense to discuss what is actually possible with one of these devices. True, the ATmega328 processing engine of an Arduino is limited compared to more advanced DSP, but the reality is that for many applications you really don't need a whole lot of pixels. If you can get by with specs of the '328 (16MHz as an Arduino, 8kB flash, and 2kB SRAM), the small size of an ArduEye (we've gotten to around 350mg) and the ease of prototyping new sensors with one (I can prototype a new sensor with just a few hours coding) makes it a good development platform and reference design. So below are some sample applications:
- Monitor road traffic- count cars going each direction, measure speed, see if traffic is stopped
- Count pedestrians walking down a hallway or through a gate
- Monitor environment for intruders- are there people entering an area you'd rather keep private, or is dangerous? Are there rabbits invading your vegetable garden?
- Give the Internet some eyes- Connect the ArduEye to the Internet, and use a service such as COSM to let anyone in the world pull data off your ArduEye. You can do this a thousand times in an area and have some fun. Hello Web 3.0!
- Monitor presence of people in a room- Beyond a motion sensor, are there people in a room, or entering/leaving it?
- Control a robot- You can do a lot with limited resolution- detect collisions with walls or other objects, use two to make an RC car drive down a tunnel, implement a fast line follower, etc.
- Control a drone- One ArduEye facing downward is adequate for controlling the height of a fixed-wing RC aircraft using optical flow. Two facing horizontally in opposite directions is barely enough to control the height of a quad. Using four horizontally you should be able to make a quad hover in place.
- Make a laser range-finder. You'll need a laser module (as light as 2 grams) and ideally an optical bandpass filter.
- Make an eye-tracker. A group of bright students at BCIT made an eye tracker using an ArduEye that allowed a person with ALS to control a computer using just his eyes!
- Detect a ball being thrown.
- Measure relative speed of two objects: Mount the ArduEye on one object, and image another object, and measure the optical flow. This can support all sorts of industrial control applications. For added accuracy you can place markings on the surface being imaged and even count markings.
- Monitor your pet- Is your pet awake or asleep? Moving or staying put?
- Baby monitor- Same for your baby.
- Interactive art installation- Why not make a sculpture that interacts with people rather than just blinks lights on it's own.
- Track the sun- If using flat printed optics, you can track the sun from just after sunrise to just before sunset, and know if it is cloudy or not. Perhaps you can use this information to steer a movable solar panel.
- Make a game, or game controller- in between measuring motion, detecting if someone has crossed a line, or moved, there are many games that could be constructed with an ArduEye.
We've actually prototyped some of the above examples in our lab or by others. The rest are examples that we are pretty sure are doable using the memory constraints of an Arduino, though we haven't actually attempted yet.