This
instructable is for all the people struggling to just take a
picture/grab a frame with their OV7670 without FIFO. I made this purely
as an introduction. I do not yet posses the necessary coding skills to
make a really great description. This was made to hopefully save some
people a lot of the hours I used researching the OV7670 wanting to see
if it worked.
All the coding provided is copied from these links:
http://forum.arduino.cc/index.php?topic=159557.0 (From a really cool guy but obviously not a fan of the arduino IDE or windows)
http://embeddedprogrammer.blogspot.dk/2012/07/hack... (Provides a lot of usefull information for understanding how the OV7670 works)
http://privateblog.info/arduino-uno-i-kamera-ov767... (is in russian, but with google translate you can actually extract some useful information)
Other useful documents are captured in the rar file.
All the coding provided is copied from these links:
http://forum.arduino.cc/index.php?topic=159557.0 (From a really cool guy but obviously not a fan of the arduino IDE or windows)
http://embeddedprogrammer.blogspot.dk/2012/07/hack... (Provides a lot of usefull information for understanding how the OV7670 works)
http://privateblog.info/arduino-uno-i-kamera-ov767... (is in russian, but with google translate you can actually extract some useful information)
Other useful documents are captured in the rar file.
Step 1: Identify your camera
This
might be a little redundant but before you get down to the nitty-gritty
make sure that the camera you bought is the one without FIFO. I bought
mine from http://www.dx.com/p/jtron-ov7670-300kp-vga-camera-....
If your pins mention fifo or you do not have 18 pins for exits this is
not the tutorial for you! Btw, if you are thinking about buying the
OV7670 and you don't do coding let me save you some time. Spend a more
little money and go for one that is better supported by the community
for non-coders.
Advertisement
Step 2: Connecting the pieces
The
OV7670 is not rated for voltages above 3.0v. Hence the voltage divider
for the XCLK. Futhermore the OV7670 does not provide higher voltages
than 3.0 which is a little low to be sure the arduino reads the input as
high (it starts at 3.0v). Therefore we connect pull-up resistors.
Step 3: Upload sketch to Arduino
The sketch is borrowed from this link:
https://github.com/ComputerNerd/ov7670-no-ram-ardu...
and put together in the ino file I uploaded (From_Computernerd).
Just insert the ino file in the Arduino IDE and upload it. 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 //
https://github.com/ComputerNerd/ov7670-no-ram-ardu...
and put together in the ino file I uploaded (From_Computernerd).
Just insert the ino file in the Arduino IDE and upload it. 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 4: Different option to "grab" picture
If you only care about making the OV7670 work, proceed to the next step.
This is just to inform people of some of the different options to retrieve the pictures from the Arduino. I tried using the framegrabber from ComputerNerd:
https://github.com/ComputerNerd/simpleFrameGrabber
It seems to be written in UNIX/Linux. Hence I tried downloading the MinGW, which should be able to run the code. After adding several packages in MinGW I had to stop because MinGW does not contain the termios.h library which is used in the code.
Another option to run GNU in windows is Cygwin. In Cygwin you also install packages with different libraries. I tried running the code installing new packages whenever Cygwin told me a library was missing. In the end I was able to compile an exe file but it wouldn't run because allegedly cygjpeg-8.dll and cygSDL-1-2-0.dll was missing even though I had installed both packages.
Finally abandoning all hope of running the "original" framegrabber I found a russian website where a guy had made his own framegrabber in java instead.
This is just to inform people of some of the different options to retrieve the pictures from the Arduino. I tried using the framegrabber from ComputerNerd:
https://github.com/ComputerNerd/simpleFrameGrabber
It seems to be written in UNIX/Linux. Hence I tried downloading the MinGW, which should be able to run the code. After adding several packages in MinGW I had to stop because MinGW does not contain the termios.h library which is used in the code.
Another option to run GNU in windows is Cygwin. In Cygwin you also install packages with different libraries. I tried running the code installing new packages whenever Cygwin told me a library was missing. In the end I was able to compile an exe file but it wouldn't run because allegedly cygjpeg-8.dll and cygSDL-1-2-0.dll was missing even though I had installed both packages.
Finally abandoning all hope of running the "original" framegrabber I found a russian website where a guy had made his own framegrabber in java instead.
Step 5: 1. half.
-Create a new folder on your c drive called out, like c:\out. This is where the pictures will end up.
-Download and install java SDK 32bit (don't install the 64 bit version even if your system is 64 bit) I've tested this with version 8u74.(I've included it as a rar-file because it wouldn't let me upload the exe-file)
-Find out what USB port your Arduino is connected to, something like COM3 or COM4. Check pictures to understand how.
-Depending on what port number your Arduino is connected to, download the corresponding file: COM1 = com_1.rar etc.
-Download and install java SDK 32bit (don't install the 64 bit version even if your system is 64 bit) I've tested this with version 8u74.(I've included it as a rar-file because it wouldn't let me upload the exe-file)
-Find out what USB port your Arduino is connected to, something like COM3 or COM4. Check pictures to understand how.
-Depending on what port number your Arduino is connected to, download the corresponding file: COM1 = com_1.rar etc.
Step 6: 2. half.
-Go to the "bin" folder, where you installed the Java SDK. By default it should be C:\Program Files (x86)\Java\jdk1.8.0_74\bin.
-Unpack your corresponding com_#.rar files in the directory. Check picture for help. (it might ask for adm. permission)
-Download and extract the Extra.rar file. The "win32com.dll" is placed in the "...\jdk1.8.0_74\jre\bin" direktory.
the "comm.jar" in "...\jdk1.8.0_74\jre\lib\ext" and the "javax.comm.properties" in the "...\jdk1.8.0_74\jre\lib" directory.
-Open cmd
-Open the folder wherein the code is (mine is): cd C:\Program Files (x86)\Java\jdk1.8.0_74\bin
Write: java code.SimpleRead
Enjoy! (It isn't much but at least you got it working)
-Unpack your corresponding com_#.rar files in the directory. Check picture for help. (it might ask for adm. permission)
-Download and extract the Extra.rar file. The "win32com.dll" is placed in the "...\jdk1.8.0_74\jre\bin" direktory.
the "comm.jar" in "...\jdk1.8.0_74\jre\lib\ext" and the "javax.comm.properties" in the "...\jdk1.8.0_74\jre\lib" directory.
-Open cmd
-Open the folder wherein the code is (mine is): cd C:\Program Files (x86)\Java\jdk1.8.0_74\bin
Write: java code.SimpleRead
Enjoy! (It isn't much but at least you got it working)
Step 7: Troubleshooting and pictures
-If your cmd does not "FIND" images try switching the USB of the arduino from a USB2.0 to a USB3.0 (blue socket) or vice versa.
-If your cmd does not "FIND" images or if you recieve SCRAMBLED pictures, you need to edit the ino file. Edit the line: wrReg(0x11, 12);
try changng the 12 to 11 or 10 or 9 or 13. Upload it to the arduino and run the cmd code again.
Good luck!
my program stops in looking for image and dosent go foreward
ReplyDeleteCheck your connection. Watch the Blinking LED on Arduino. It will remain on if everything is fair.
DeleteVoltage drops when I connect the camera to arduino. From 3.3V, it drops to 1.46V. I checked the connections and it seems correct. What could be the possible issue? Kindly give suggestions.
ReplyDeleteHow can I get the RAW image. Can we get colour image.
ReplyDeleteon command prompt when i type java code.SimpleRead it says cannot load main class.
ReplyDeleteplease help
I need suggestion about the following points:
ReplyDelete1. How can I print the camera captured data into serial monitor?
2. What should be the necessary setup required for 64 bit computer?
3. Will you kindly provide me the class file based on 64 bit?
If anyone help me, then I will highly obliged.
do you have a code for atmega2560
ReplyDelete