What kind of components are needed to build a simple digital camera? One that processes a JPEG image and can transfer over one of USB (in mass-storage mode), Bluetooth or WiFi. When could I get them? Is there an open source camera?
Electronic – Parts to build a digital camera
cameradigital-logicmicroprocessor
Related Solutions
I might (doubtful) want to try and sell this device, so I can't simply take some Logitech web cam and use it due to obvious licensing issues. So that's a huge constraint.
Basically you will be creating an IP Camera. The Raspberry Pi is probably the cheapest and easiest way to prototype this, however there are other boards like the Beagle Boards.
Once you get a prototype going, then you may consider creating your own all in one device that uses an ARM or DSP processor. For example I would probably use some type of Serial JPEG Camera Module, a cheap microphone, and the cheapest ARM processor that will fit these requirements. But for a prototype, the Raspberry Pi and a cheap usb web cam is probably the cheapest and quickest way to get started and get your software going. You may even to be able to find a cheap no-name usb camera from china that will work for this so you can resell it in small quantities.
So as far as getting the frames to the MCU, there's two main issues here: (a) the choice of camera and microphone, and (b) the drivers for connecting the cam/mic to the Pi's USB port.
Here is the huge list of devices that work with the Raspberry Pi: RPi Verified Peripherals. The USB Webcams section lists both working and problem units. Along with a bit of extra info. After you find a unit that fits your requirements (price, etc.) I would try to double check via Google to verify someone has used it and it does indeed work; although this is probably unnecessary.
I'm sure there are other units that work that haven't been tested, the two things that will help you is to make sure it is Linux compatible, and that there are ARM drivers available.
There's also the issue of A/V encoding as well as synchronizing the video and the audio feeds together.
As I mentioned in my comment, the RP really won't have any issues handling this part. It has more than enough processing power to handle most all A/V formats.
the Pi (which would be running GNU/Debian linux) will have the right drivers to ingest the streaming frames and send them off to a tool that would then be able to forward them on to a WiFi or Ethernet adapter
Basically the RP is just going to be a linux computer that is connected to the internet and has the camera and microphone plugged into it. You will install and configure libasound2-dev (for the audio) and FFMPEG to stream everything.
Then this will just be like any other server online (you may need to configure your router and port forwarding etc. to get it to be visible on the web,) and according to this, you and other computers will just access it by going to h**p://YOUR_WEBCAM_SERVER/webcam.mjpeg
Helpful links:
SparkFun has a LiPo Charger/Booster that works online.
Best Answer
You will need the following things to make a simple digital camera:
The downside to this module is that it has terrible resolution of 160x100 pixels, and costs about $50. A better option (but harder to solder by hand) is this CMOS camera module.
It also outputs in JPEG format, but has a resolution of 1300x1040. Both of these camera modules are available from SparkFun.
SD cards have an SPI interface which is supported by a great many microcontrollers. So you should easily be able to write to it. Assuming you want to be able to read the images off it, then you'll need to store the data as actual files in FAT32 format. There's a good tutorial about that. Also, don't forget to read the SD Card Specification.
You also mentioned sending the image over USB, Bluetooth or WiFi. If I were you, I'd stick to this for now. It's already a fairly complex project, and as I understand it, you're fairly new to electronics. You can simply take the SD card out and put it in a card reader.