Table of Contents
An experiment to transmit JPEG images live during the flight over a low power radio link, by Philip Heron.
To transmit small (320×240, ~5kB) JPEG images over an 8-bit RTTY signal at 300 baud, with a transfer time of between 2 and 5 minutes depending on the complexity of the image.
The current module consists of:
- ATmega644P clocked at 7.3728MHz
- NTX2 radio module @ 434.075MHz
- C328-7640 JPEG Camera Module (SparkFun)
- Takes fairly good images up to 640×480, but because of the slow data link it will only be used at 320×240. All of the JPEG compression is done on-board the camera so is ideal for using with a lower power microcontroller, which only needs to package and transmit the data.
Thoughts and Ideas
- JPEG is not a good choice of format as missing blocks will likely cause unrecoverable errors in the rest of the image.
- RTTY is not the best mode for transmitting the data, but is incredibly easy to implement with the NTX2 radio module.
- A method of re-transmitting lost blocks - requires an uplink of some kind and the blocks to be stored.
- Distributed listener - each client uploading received blocks to a server.
The HADIE module flew on the 16th April 2010 as part of ProjectCirrus, reaching over 30km altitude. The module and camera worked throughout the flight, transmitting the position and image data until the harder than expected landing destroyed the board. The 10mw signal from the NTX2 was picked up as far away as Yarm in England, 366km to the east.
The payload was spinning for most of the flight causing the signal to fade in and out. Because of this about 5% of image blocks where lost which unfortunately resulted in most of the images being incomplete. Once a block is lost, any subsequent data received for that image is also lost.
Images from the main and uart cameras can be seen here: http://www.flickr.com/photos/fsphil/sets/72157623870036944/
A second flight was made on the 9th January 2011. Using much of the same hardware as the previous flight, its main job was to test the improved SSDV error recovery code. Most of the components survived the last flight and where reused for this one. The main differences where:
- Interrupt driven RTTY code with a single pin and two resistors. (3.3v → 330 ohm → NTX2 tx pin ← 2.2k ohm ← rtty output pin)
- The new robust image format, a lost packet will not ruin the rest of the image. See the SSDV page for more information.
- Quarter-wave dipole antenna, mounted so that the module doesn't take the full force of the landing this time.
- Canon A560 camera with CHDK and script to take regular images.
- A new version of the C328 UART camera with a wide-angle lens.
- A thicker polystyrene box with compartments for each of the components, wrapped in foil backed polystyrene sheets.
The balloon was released at 12:17 UTC and began heading east almost immediately. Reception on the small vertical became difficult within about five minutes of release, so we switched to using the stacked yagi array. Even with this the signal was fading fast and the last string to be fully decoded was at 13:09 UTC. There was enough time to receive three full images and fragments of a few more. Contact was re-established by G4FVP and M0DTS at 14:58, almost two hours later! By now the payload was descending and had stopped sending images. The last known position, taken from incomplete telemetry by G4FVP was at 54.383, -2.03966 from about 1300 metres up. The predicted landing spot was 54.3629, -1.88296:
M0DTS/Rob went to the area but no signal was received. The payload may have been damaged on landing or the hills could have blocking the already weakened signal. I don't know yet what happened to make the signal so weak, but there's a good chance the antenna was at fault. It was either made wrong or damaged in flight.
The highest altitude was received by M0DTS from incomplete telemetry, and was 30217 metres at 14:36:09. M0DTS also reported a likely burst at ~14:51 and with a 3.5m/s ascent rate puts the burst altitude at roughly 33.3km.
The flight code for Hadie-2 is available here: http://github.com/fsphil/hadie
The third flight launched a few months later than planned, on the 4th of June 2011. It recorded a maximum altitude of 31616m at 12:57 BST. This was a repeat of the previous flight with a few improvements:
- A much better 1/4 wave vertical antenna, made with just coax and no solder joints.
- Add a 16-bit checksum to the SSDV packet structure.
- Fixed a trivial bug that caused the baud rate to be slower than expected.
After the massive failure of the antenna in hadie:2 I decided to make this one without any solder joints at all. Only RG58 coax was used, with the outer insulator stripped back just over 1/4 wavelength long and the shield carefully untwisted and split into the four radials. I left the inner conductor and insulator as is, just placing a straw over them to keep it from flexing during flight. The radials where taped to the bottom of the box with gaffer tape, and an SMA socket crimped onto the other end of the coax.
The improvement over the last flight was dramatic, with reception of telemetry and image data from over 500km away! The small mag-mount on the car was more than enough to receive telemetry during the chase, only weakening when we drove underneath the payload to get ahead of it. We didn't need to use the yagi at all this time.
We managed to receive telemetry all the way to the ground and after landing. It stopped descending at a surprisingly high 361 metres, which turned out to be because it landed 12 metres up a tree in a small forest on a mountain. The first two attempts to recover it failed, finally managing to cut it down on the third go. We used a 10m pole with a hook knife on the end to cut each of the four cords holding the payload up.
All images including the live SSDV images can be seen here: http://www.flickr.com/photos/fsphil/sets/72157626013096240/