ArduCAM USB Camera Shield Released


The ArduCAM USB camera shield is a universal camera control board designed for both PCs and embedded systems like the Raspberry Pi, TI Beaglebone, and similar products. It supports most parallel interface image sensors ranging from 0.3MP to 14MP, including both global and rolling shutter sensors. The camera is packaged with the software you need to put it to work on Windows and Linux systems and  a comprehensive SDK library is provided to support this.  This SDK is fully integrated with Python, which allows for direct integration of our cameras with your OpenCV based applications.

The plug and play USB control interface simplifies integrating the camera with a wide range of computer hardware. The ready to use SDK library and demo source code makes the software integration process straightforward and efficient. Users can make it work in minutes without writing a line of code. The broad range of modules ArduCAM supports, combined with support for formats like RAW, RGB, YUV, JPEG assures our users a successful outcome.

The ArduCAM USB camera shield joins our product line of shields that offer SPI/IC2 interfaces. The USB camera shield offers significant speed gains over the SPI camera shield, running at as high a frame rate as the USB2.0 480Mbps bandwidth allows which can deliver  640_480(VGA at 60 FPS, through  4384_3228(14MP) at 2 FPS. By using a global shutter camera headboard such as the MT9V034/AR0134 together with USB camera shield, the user can achieve industrial level machine vision with our camera on a Raspberry pi without effort.

The ArduCAM is straightforward enough that it can be easily used with PCs and single board computers such as the Raspberry Pi and the Beaglebone. In short, the ArduCAM brings a plug and play solution to digital cameras at the hardware level.

Please visit our github to find more information and examples.

Table 1 Supported Camera Modules

Resolution Sensor Vendor Camera Module Manufacture
0.3MP Omnivision OV7660 / OV7670 / OV7675 / OV7725 ArduCAM
0.3MP Aptina MT9V111/MT9V034 ArduCAM
1.3MP Aptina MT9M112 / MT9M001/AR0134 ArduCAM
2MP Omnivision OV2640 ArduCAM
2MP Aptina MT9D111 / MT9D112 ArduCAM
3MP Omnivision OV3640 ArduCAM
3MP Aptina MT9T112 ArduCAM
5MP Omnivision OV5640 / OV5642 ArduCAM
10MP Aptina MT9J001 ArduCAM
14MP Aptina MT9F002 ArduCAM

Quick Demonstration

Using 10MP MT9J001 Monochrome Sensor headboard (original RAW data)

Using 14MP MT9F002 Color Sensor headboard (original RAW data)


This USB camera shield has no onboard frame buffer. The transfer reliability highly depends the USB bandwidth.
If multiple USB devices are connected to a single USB root hub, it will cause bandwidth racing and cause drop frames.
It is recommended to preserved enough bandwidth for the camera on USB port, or reduce the frame rate and Pixel clock of the image sensor once continuously dropping frames happens.
This USB camera shield isn’t UVC compliant, for Windows you have to install our USB driver, for Linux you can use libusb which is also plug-and-play.

Bandwidth Calculation

The USB2.0 port bandwidth is 480Mbps, apart from the protocol overhead, the maximum available bandwidth is around 40MBytes/s. 40MBytes/s is the avarage bandwidth, due to the none realtime system on PC or ARM processor, sometimes the USB driver will be slow down at some intervals when the CPU loading changes. So the maximum stable pixel clock speed for the camera module is 24MHz. which means 20fps for AR0134(1.2MP) at 1280×960 and 60fps for MT9V034(0.4MP) at 640×480, 1~2fps for MT9F002(14MP) tested on PC. And the fps will be slower on Raspberry pi.

USB Driver

The USB host driver plays very important roles on image data trasfer. ArduCAM USB shield use Bulk endpoint for the image transfer, the nature of the USB bulk tranfer only promise the the correctness of the transfer,but the bandwidth is not promised. So for a given USB root hub there will be bandwidth racing between each device attached. Even if only one device is attached when some device is doing burst while the USB driver is not ready to response, the data dropping happens.


Basically the PC is fast enough to run ArduCAM USB camera shield without dropping frames.
If you want to connect more than one ArduCAM USB camera shield to a single PC, you have to connect them seperately to the different USB root hub of the PC.

Raspberry Pi

Raspberry Pi is far less processing power than PC, it is not fast enough to display the captured video by the ARM processor.
And there is only one USB root hub on Raspberry Pi board, everything shares the USB bandwidth like the onboard ethernet and 4 USB ports.
Running ArduCAM USB camera shield on Raspberry Pi might not as good as PC, It is recommended to do image processing without display the captured video in real time.

Share on FacebookShare on Google+Share on LinkedInTweet about this on Twitter

Leave a Reply

Your email address will not be published. Required fields are marked *