element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum Camera Module output data format
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 13 replies
  • Subscribers 393 subscribers
  • Views 1430 views
  • Users 0 members are here
Related

Camera Module output data format

Former Member
Former Member over 9 years ago

Hi.

 

I am interested in using a device similar to the OV7670. I am only taking small images (15mm x 10mm) of text so the resolution does not have to be great. I will initially be using an 8-bit MCU which do not have enough RAM to store an image. I would like to request each byte at a time from the device which I can then send to my pc.

 

My question is: Is it possible to request one byte at a time (or small blocks) from the OV7670. The online documentation only refers to frames, which are too big for my MCU to process.

 

Thanks,

 

Mark.

  • Sign in to reply
  • Cancel

Top Replies

  • gadget.iom
    gadget.iom over 9 years ago in reply to Former Member +1
    This may help... https://github.com/ComputerNerd/ov7670-no-ram-arduino-uno
  • shabaz
    shabaz over 9 years ago in reply to Former Member +1
    Hi Mark, The (excellent) link that Paul posted transfers one line at a time as far as I understand. It has to do this, because the Arduino Uno has <2k of data memory as I understand. A simple video frame…
  • gadget.iom
    gadget.iom over 9 years ago in reply to shabaz +1
    shabaz wrote: Hi Mark, The (excellent) link that Paul posted transfers one line at a time as far as I understand. It has to do this, because the Arduino Uno has <2k of data memory as I understand…
Parents
  • element14support
    element14support over 9 years ago

    Hello Mark,

    Welcome to the element14 Community, we hope you enjoy it! I will move this over to the Arduino area as it is a better fit.

     

    Thank you,

     

    Jamie

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 9 years ago in reply to element14support

    I think that code is more to do with continuous transfer. What I need to know that once the device has taken a photo in snapshot mode is it saved to its internal menory or transmitted straight out. If it is saved internally can it be accessed piece by piece or does the transmission happen all at once?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • shabaz
    shabaz over 9 years ago in reply to Former Member

    Hi Mark,

     

    The (excellent) link that Paul posted transfers one line at a time as far as I understand.

    It has to do this, because the Arduino Uno has <2k of data memory as I understand.

    A simple video frame of even 160x120 low-resolution requires much more memory.

    The code is likely reading multiple frames.

    Your only practical options if you want to save to memory is to design a memory add-on to the Arduino

    or better still just find an alternative processor or board with sufficient memory. Or find a camera module with

    memory; they used to exist, and they saved as a JPEG image. They are not particularly interesting devices

    though - better to just get a more resource-rich dev-board, e.g. Raspberry Pi, and a camera module for it.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • gadget.iom
    gadget.iom over 9 years ago in reply to shabaz

    shabaz wrote:

     

    Hi Mark,

     

    The (excellent) link that Paul posted transfers one line at a time as far as I understand.

    It has to do this, because the Arduino Uno has <2k of data memory as I understand.

    A simple video frame of even 160x120 low-resolution requires much more memory.

    The code is likely reading multiple frames.

    Your only practical options if you want to save to memory is to design a memory add-on to the Arduino

    or better still just find an alternative processor or board with sufficient memory. Or find a camera module with

    memory; they used to exist, and they saved as a JPEG image. They are not particularly interesting devices

    though - better to just get a more resource-rich dev-board, e.g. Raspberry Pi, and a camera module for it.

    Exactly image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 9 years ago in reply to shabaz

    Ok maybe I'm just not reading/understanding the code properly. Where exactly in the code is the line being transferred. The while(1) loop is empty and I thought this is where it would happen and I don't see any interrupts. Apologies if this may seem like a silly question.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Former Member
    Former Member over 9 years ago in reply to shabaz

    Ok maybe I'm just not reading/understanding the code properly. Where exactly in the code is the line being transferred. The while(1) loop is empty and I thought this is where it would happen and I don't see any interrupts. Apologies if this may seem like a silly question.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • shabaz
    shabaz over 9 years ago in reply to Former Member

    Hi Mark,

     

    The while loop is calling a 'captureImg' function on line 151. I've not looked in detail, but it is apparent that it must be transferring line-by line (capturing just a line at a time) because of the fact that there is no memory to store an entire frame. The 'captureImg' function will be reading a line, transferring it, and then overwriting it with the next line. I don't know if it skips to the next frame, or the serial interface is fast enough to do it within a frame. I didn't read the code in any detail, and not used that camera module before either.

    For similar cost (well, similar order) a Raspberry Pi and camera module will do it at video speed and higher resolution.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • balearicdynamics
    balearicdynamics over 9 years ago in reply to shabaz

    Mark Shabaz it correct.

     

    I saw some of these camera "reading" methods applied in different environments. It is (maybe) ideal for applications like art installation but IMHO has not great real application due the number of seconds the loop need to manage the camera raws. There are almost two problems:

     

    The first is that the entire system is slow to making an image is almost difficult in less than some seconds. So maybe good for an installation, some kind of image processing or image recognition but no more.

    The second is - as Shabaz has pointed before - the reduced amount of memory (and in general the resources). This generates an implicit limitation conditioning any project. The first think that should be focused very clearly IMHO is what are the results that should be reached, to avoid to make a working project that for obvious reasons can't go ahead than the bare demonstration of the principle.

     

    Enrico

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 9 years ago in reply to balearicdynamics

    I know that a 32 bit MCU or extra memory would be more suitable for storing the data but I will be just firing it straight into the pc so will not be stored in the MCU anyway. I will also be using a low data rate as I only need to photo 4-5 characters in the image, I will then run some software in the pc to recognise them. I wanted to know if it is possible to send it to the pc via UART while it is coming in in I2C and it seems to be true. The referenced code is quiet detailed and a bit fancy for what I need. If I can read in a certain amount of data and push it out before reading the next chunk that will suffice. I know its probably not the done thing but everybody loves a challenge. Thanks for the comments folks.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • balearicdynamics
    balearicdynamics over 9 years ago in reply to Former Member

    Sure you can connect the pc via UART / USB, depending on the kind of connection you have on pc-side.

     

    Enrico

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 9 years ago in reply to balearicdynamics

    Excellent

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube