OV7670 Arduino Camera Sensor Module Framecapture Tutorial

89,608

114

44

Posted in TechnologyArduino

Introduction: OV7670 Arduino Camera Sensor Module Framecapture Tutorial

Description

The camera module is powered from a single +3.3V power supply. An external oscillator provide the clock source for camera module XCLK pin. With proper configuration to the camera internal registers via I2C bus, then the camera supply pixel clock (PCLK) and camera data back to the host with synchronize signal like HREF and VSYNC. The OV7670 camera module is a low cost 0.3 mega pixel CMOS color camera module, it can output 640x480 VGA resolution image at 30fps. The OV7670 camera module build in onboard LDO regulator only single 3.3V power needed and can be used in Arduino, STM32,Chipkit, ARM, DSP , FPGA and etc.

Specification

  • Optical size 1/6 inch
  • Resolution 640x480 VGA
  • Onboard regulator, only single 3.3V supply needed
  • Mounted with high quality F1.8 / 6mm lens
  • High sensitivity for low-light operation
  • VarioPixel® method for sub-sampling
  • Automatic image control functions including: Automatic
  • Exposure Control (AEC), Automatic Gain Control (AGC), Automatic White Balance (AWB), Automatic
  • Band Filter (ABF), and Automatic Black-Level Calibration (ABLC)
  • Image quality controls including color saturation, hue, gamma, sharpness (edge enhancement), and anti-blooming
  • ISP includes noise reduction and defect correction
  • Supports LED and flash strobe mode
  • Supports scaling
  • Lens shading correction
  • Flicker (50/60 Hz) auto detection
  • Saturation level auto adjust (UV adjust)
  • Edge enhancement level auto adjust
  • De-noise level auto adjust

Step 1: Material Preparation

In this tutorial, you will need :

1. Arduino Uno Board and USB
2. OV7670 Arduino Camera Sensor Module STM32
3.10K resistor X 2
4. 4.7K Resistor X2
5. Breadboard

and you will be using Arduino IDE and Java.

Step 2: Pinout Connection

Connect your circuit as illustrated on the picture above.

Step 3: Java

You have to download this to be able to interface this camera sensor module on your pc.Open the zip file and install to your computer. By default, this will be install to your c drive in your program files folder. As for mine, it is stored in C:\Program Files\Java\jdk1.8.0_74. You can refer picture above.

NOTE : This jdk-8u74-windows-i586.rar file is quite big.

Step 4: Sample Source Code

This sample source code is originally from this link. Download this sample source code, open it on your Arduino IDE, connect your Arduino Uno Board to your computer and upload it. Select the correct board and port before uploading this source code. Refer image above for help.

NOTE : Don't mind that it does not recognize some libraries in the beginning of the file. If it bothers you, comment the whole line out with //

Step 5: Checking Your Port

Find out what USB port your Arduino is connected to, something like COM4 or COM5. You could check it on your Control Panel > Device Manager > Ports (COM & LPT) > right click > Properties > Port Settings > Advanced > COM Port Number > /Select Your Port Number/. You can refer the image above for help. As for mine, it is port COM5.

Step 6: Com_#.rar

Depending on what port number your Arduino is connected to, download the corresponding file. COM1 = com_1.rar , COM2 = com_2.rar and etc. Open your com#.rar on WinRaR, extract/copy the 'code' folder from com_#.rar, go to Local Disk > Program Files > Java > jdk1.8.0_74 > bin and paste it there. you can refer the picture above for a better understanding.

Step 7: C:\out

You have to create a new folder on your c drive / Local Disk (C:). This will be your camera module sensor's taken picture's destination. Name this folder as out (it could be anything though).

Step 8: Extra.rar

1. Download and extract the Extra.rar file below and open it. As you could see, there is src folder, lib folder and "win32com.dll". You have to copy and placed "win32com.dll" in the "C:\Program Files\Java\jdk1.8.0_74\jre\bin" directory.

2. Then, open the lib and you could see the "comm.jar" and "javax.comm.properties" in it. Copy and paste the "comm.jar" in "C:\Program Files\Java\jdk1.8.0_74\jre\lib\ext" and "javax.comm.properties" in the "C:\Program Files\Java\jdk1.8.0_74\jre\lib" directory.

NOTE : it may ask for administrator permission, just proceed anyway.

Step 9: CMD

Open cmd and open the folder wherein the code folder is by writing its address. mine is "C:\Program Files\Java\jdk1.8.0_74\bin". Click enter and it will give u "C:\Program Files\Java\jdk1.8.0_74\bin>". Now, write "java code.SimpleRead". It supposed to be like this---> C:\Program Files\Java\jdk1.8.0_74\bin>java code. SimpleRead. You can refer image for help.

Step 10: Result

You can see the picture taken from your OV7670 Camera Module Sensor in your our folder in c drive.

Step 11: Troubleshooting

1. If your cmd cannot find images, try switching the USB of the arduino from a USB2.0 to a USB3.0 (blue socket) or vice versa.

2 If you receive scrambles pictures, you need to edit the sample source code. Edit line: wrReg(0x11, 12); try changing the 12 to 11/10/9/13. Upload it to the arduino and run the cmd code again.

6 People Made This Project!

Recommendations

  • Spotless Contest

    Spotless Contest
  • Microcontroller Contest

    Microcontroller Contest
  • Space Challenge

    Space Challenge
user

We have a be nice policy.
Please be positive and constructive.

Tips

11 Questions

Hi can somebody help me on how to retrieve image from ov7670 CMOS camera. It only shows port name come and looking for image.
Help....

0

Hello, could someone please help me with this. The cmd program stops at "Looking for image". I'll appreciate any assistance

could someone help me with this error ?

ss.png

Why my cmd can't find the image, despite the troubleshooting steps I've done all

The sketch 'Computer_Nerd' will compile, but will not download to the Arduino. Using port COM4, the correct port for my device & downloaded 'com_4.rar' & placed it int the directory you instructed. 'I get an error 'avrdude: ser_open(): can't open device '\\.\COM9': The system cannot find the file specified'.

Yes I did it but it stops at looking at image can u help

i am trying my code but the problem is my arduino having a port no, 7 and it is not available on the site .

could you send it to me at sujeetsoni019@gmail.com

thank you

0

change it port no 7 to port no 5 in device manager

i am using ov7670 module with arduino but the problem raised when i am running this code is the image is black and white

1. how can i make it colour full

the next problem is

2. the image is not clear when i am changing the wereg ( ) value

third is

3. the image is comming out as a output from is camera and save in a folder is overwritting every time when i am running code again.

0

try this its colourfull

1

It has to be jdk not jre place

0

when I'm trying to execute a command line in the command prompt im getting an error as <" C:\Program Files\Java\jdk\bin>java code.SimpleRead

Error loading win32com: java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk\jre\bin\win32com.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform Can't load IA 32-bit .dll on a AMD 64-bit platform ">
can someone help me how to resolve the error?

0

we can resolve this by installing jdk available in the tutorial
and then you need to replace the program files with program files (x86)

0

Hi, the code worked for me, but I received scrambles pictures no matter which value I set in the code (I have tried 8 to 14 in the wrReg(0x11, 12) ). Could somebody help me with this problem? Thank you.

0

Problem solved! I got scrambles pictures before because I had bad connections in the breadboard. After it worked so well after soldering the circuit. Thanks for this excellent guide.

0

OMG it works!!!!! Thanks a lot bro, you remade my day!!!

How i can read the value RGB of each pixel?

44 Comments

Could nobody help with problem mentioned often above:

rennythomas260394a year ago
"the image will not be found...."

HamxaK310 months ago
"cmd does not find img...."

JianweiA11 months ago
"how to solve this problem???...."

With problem looking like this for all of us (three of us on COM3, one of us on COM4):

getting message only the messages:

"Port name: COM3" (or COM4, etc.)
...... and ........
"looking for image..."

like within the picture.

Plz help...

FRFGNKTJ0IEMJZA.LARGE.jpg
1 reply

Did you solve it? I have the same problem...

I made it last night. I already had JDK installed b/c im a software developer but I had the 64bit JDK so when I did the instructions step by step and then tried to run the jar, it said something like "cannot run 32bit dll in 64 bit environment" so I got the 32 bit version of the latest jdk (just google "jdk 32 bit download" and then click first link. Then download the first one that says windows x86 and install that when it finishes downloading. Then you need to re-do this tutorial and any time he says "Program Files" you need to replace that with "Program Files (x86)" and then it should work.

7.bmp
1 reply

thank you so much bro!!

but still i have an error that it can found the image but the image was not saving into the system folder (out)

hi so i followed all the procedures, however once i enter my commands i get an error which says : could not find or load main class.

please help.

6 replies

Copy win32com.dll file to system32 folder.

hii I'm also having the same problem how you rectified this problem..

use "java code.SimpleRead" rather than "java code. SimpleRead". (no space between code. and SimpleRead)

i used "java code.SimpleRead" and also has the same error !!

i have same problem like u. how to solved this problem?

Hello mybotic, you tutorial seems to work absolutely fine but my image quality is not good, my image is not intact, I have attached it for reference. What should I change (baud rate) in the code or i should attach a FIFO buffer in the code?

11.bmp
1 reply

what version of arduino do u use

Hi, I'm struggling with receive scrambles pictures. I had tried edit
line: wrReg(0x11, 12), but i still get scrambles pictures. Do you have
any solutions?

Thanks

1 reply

I met the same problem and I think it dues to bad connections in the circuit. After soldering the circuit, it worked.

You have copied another com<no.> class files. Download and copy com5 files

I have the same problem. When I run it, it stops blinking for a second and then resumes blinking.

Same for me .....

Port name: COM3
Looking for image...

and then nothing beside a blinking UNO....

;o(