Image Broadcast using Handheld radio

Hi there!

I would like to transmit and Image between two handheld radios. I already looked into some methods incl. using DSP for broadcasting the signal, getting a JPEG using the LinkSprite camera from SparkFun, and more.

The biggest problem so far is to find a camera or component that would save the captured picture into memory b/c scanning the image line by line is too slow, and would result in having different parts of the image captured at different times.

One more thing is that if I use JPEG it would decrease the broadcast time but result in errors b/c the signal might not be that clear, while if I send a bitmap the interference's effect might not be that dramatic.

Any ideas?

Radio hams have been doing this for years, it is called SSTV (Slow Scan TV). In order to keep the bandwidth down to voice bandwidth requirements an image is sent over 8 seconds and has a resolution of 128 X 128. Look at this link:- http://en.wikipedia.org/wiki/Slow-scan_television

I already read all about SSTV, but its all theory. I know it'll take me about a minute to broadcast a single image and that's fine.

Right now I'm looking for ways to implement SSTV or something like it, and as I said, my biggest problem right now is capturing the image to memory fast enough.

my biggest problem right now is capturing the image to memory fast enough.

Well you are not going to do that with an arduino, it's not fast enough to acquire a TV signal and hasn't got very much memory to put it in. You will need some outside help. You haven't said what sort of image:- resolution and colour you need. Have you seen this:- http://www.emeraldinsight.com/journals.htm?issn=0260-2288&volume=3&issue=3&articleid=1664073&show=pdf&PHPSESSID=6278vt0322i0fa70dsnb07h737

http://www.sensoray.com/products/2253.htm

http://www.sensoray.com/products/2251.htm

These are nice but they to do about the same as the LinkSprite JPEG camera - http://www.sparkfun.com/commerce/product_info.php?products_id=10061

The problem with these is that the JPEG might be affected by transmittion quality. That is not a big problem with bitmap, but the JPEG is going to be corrupt.

I'm looking for standard 640x480 resolution, and the color depth is not so important.

Now I have 3 options: 1) Either use JPEG and somehow manage to send data in packets with checksum. 2) Find a way to send JPEG with a possibility for error ignorance (if one byte got damaged, the whole image won't be affected dramatically). 3) Find a way to capture bitmaps.

Find a way to send JPEG with a possibility for error ignorance (if one byte got damaged, the whole image won't be affected dramatically).

Generally with single bit errors, the image will correct on the very next 8x8 block, or at worst it will corrupt a row of blocks, but often the corruption is little worse than a "noise" block, followed by the rest of the row with a DC level shift.

So what you're saying is that JPEG has some king of error ignorance but in my case the JPEG will be too corrupt?

No, a Huffman stream is very sensitive to errors (how could it be otherwise? - you’ve thrown all the redundancy away!), but in your particular case, I don’t know what the expected bit error rate is, so your question is unanswerable.

I don't think that bitmap is redundant by design but it's less sensitive to noise.

But lets say that somehow I managed to send the JPEG with no errors. Is there a way for me to read it on the client side and show on a screen?

That includes saving the JPEG on some sort of memory and then displaying it somehow...

Isn't that called a fax machine ?

Maybe, but this is a mobile application.

Heard of it. It's nice but I wouldn't have WiFi and maybe even no cellular communication available where I want this.

Anyway, I just thought of a simplified solution. My assembly will be made of the following parts: 2 x Arduino 2 x Handheld radio 1 x JPEG camera 1 x SD/microSD shield

The client will send the server the JPEG data and this data will be verified against a checksum. The whole JPEG file will be saved on a file on the SD card. Then, I will take the SD card and read it in my camera.

The thing is I would like to find the easiest way to send the JPEG file over the radio's microphone line.

Can this be done with the VirtualWire library, or is it only used for radio components (like this one - http://www.sparkfun.com/commerce/product_info.php?products_id=8947), rather than for handheld radios?

The thing is I would like to find the easiest way to send the JPEG file over the radio's microphone line.

That is just a matter of splitting your file up into small chunks, and sending them with an appropriate header / check sum. If you have two way communications you can acknowledge the correct receipt of a chunk or request it to be sent again. You can make up protocols like this until the cows come home.

But can I do it with the VirtualWire library?

Not my area of expertise by any stretch but would something like a TNC be suitable for this?

Probably, but that isn't really the critical question. The show-stopper is: "Can I do it with Arduino?" There is so much data in even a simple, small, low-res JPEG image that it will overwhelm the resources of any Arduino. Are you not comprehending this problem?

I did, and that's why I'm going to use the JPEG camera. http://www.sparkfun.com/commerce/product_info.php?products_id=10061

It takes a picture, then sends it on serial. I would probably have to find a way control its serial output, or save it first to an SD card.

I was thinking of using a cheap pinhole camera recorder from eBay. They come in various forms and sometime have a pretty good quality. The thing is I will have to find a way to hack it so I can read the image from the SD card while its connected.