OV7670 is a small CMOS VGA camera. This camera can be interfaced to an Arduino. This page presents how the camera can be interfaced to an Arduino Uno. A breakout board is used in the following. It is very cheap as you can see:
Key | Specifications |
---|---|
Array | 640x780 |
Output format | YUV YCbCr 4/2/2 / RGB565 / RGB555 / GRB 4/2/2 / Raw RGB Data |
Lens Size | 1/6" |
Maximum image transfert rate | 30 fps for VGA |
Sensitivity | 1.1 V/Lux-sec |
The following wiring has been used to connect the OV7670 to the Arduin Uno:
The Arduino requires a capture to the OV7670 camera and send the image through USB to a PC. A Windows application read the data and display the image on the screen. Arduino source code and windows application can be downloaded at the bottom of this page.
Everything works out of the box, here are some examples of captures:
![]() |
![]() |
The camera is equiped with an automatic gain control (AGC). The controler can be very slow when images are captured at low rate:
![]() |
![]() |
Sometime, the synchronisation between the camera and the software fails:
![]() |
![]() |
The main problem of this hardware is that the Arduino Uno process images at a very low rate. Since the Arduino Uno has a maximum frequency of 16Mhz, data conversion and transmission are very slow. On the above captures and depending on light conditions, images are updated every 4 to 5s. In my opinion, this camera must be used either with a lower resolution or with a higher performances harware.
Arduino source code, Windows application and datasheet can be downloaded here:
ReadSerialPortWin.exe (Windows application)