Fabien Royer (aka. Mr. "Doing some really cool stuff with Netduino") takes us through adding a JPEG serial camera to a Netduino project. Think about some of the cool things you might be able to do if your Netduino project could take pictures. It adds a whole new dimension to what you could build. No, you're not going to be able to build your own Kinect, but think monitoring, security, motion detection, spy cams, doing 'stuff' with JPEG's, etc. etc...
Earlier this month, AdaFruit released a nice little TTL camera, perfect for security and remote monitoring applications. The camera supports three resolutions (640×480, 320×240 and 160×120), has a built-in motion detection circuit and can output an NTSC signal, all in a fairly compact form factor. The communication with the camera is done over a TTL UART @ up to 115200 bauds. In many respects, this device is very similar to the LinkSprite camera, which has been out there for some time now.
As I’m working on a security-related project involving the Netduino, it was the perfect opportunity to put this camera to the test, starting with writing a C# driver. While interfacing with the camera over the TTL UART of the Netduino is straight forward, the datasheet describing the protocol and commands required to control the camera functions is painfully sketchy and sometime inaccurate. In some instances, some camera functions such as OSD (text overlay) are not supported in the firmware even though the datasheet documents them or only behave properly if called in a particular sequence, which of course, is not documented…
Looks like the driver has a couple cool features. The motion detection looks particularly interesting...
Using the Netduino driver
The Netduino driver currently implements 4 major functions.
- Initializing communication and the camera’s resolution
- Controlling TV output
- Taking pictures
- Detecting motion
So how does it look?
Fabien sums it up well;
The VC0706 camera, with proper tuning, is a nice addition to any project where remote monitoring, motion detection and security are needed and it will pretty much work ‘out of the box’. It would be great to see future versions of this camera offering access to the SPI and High Speed UART interfaces: while it is possible to force the camera to use ‘out of spec’ UART speeds above 115200 bauds, it is unlikely to be very reliable.
As always, you can find the camera driver and the test code as part of the Netduino Helpers library.
Here’s a few more links you might find interesting:
- Netduino Helpers library
- Netduino is opening up to an wider audience with the .Net Micro Framework v4.2 release
- .Net Micro Framework CodePlex Project