FM receiver from the Atmel AVR 2004 Design Contest
Just a place holder for a link to an interesting FM receiver that could be used for receiving NOAA polar orbiting satellites. It was an entrance in the Atmel 2004 Design contest. Very neat.
"There is much pleasure in useless knowledge." — Bertrand Russell
Just a place holder for a link to an interesting FM receiver that could be used for receiving NOAA polar orbiting satellites. It was an entrance in the Atmel 2004 Design contest. Very neat.
Well, I thought I had the rotation thing figured out, but I still seem to be missing something. But I did muck around a little bit, thresholding the image in a couple of different ways, making the pair shown below. The one on the left contains mostly the bones, with all the flesh transparent. The one on the right, the exact opposite, with the bones removed and the remaining flesh showing up. I thought they made an interesting pair.
The math for all this is described quite admirably by Tom Malzbender’s paper Fourier Volume Rendering.
Addendum: Here is the raw data slices:
Addendum2: Here is a link to some more interesting volume datasets.
Addendum3: Here’s my attempt at rotation. It doesn’t really work right yet. I think I understand why.
I still check my WSPR station logs each morning when I wake up. This morning I spotted the callsign E51EME, coming from grid square BG08. I’ve come to realize that many of these spots which include only a four element grid designator are spurious bad decodes, and I didn’t recognize the prefix (I’m not much of a DX-er). But still, it decoded multiple times:
Timestamp | Call | MHz | SNR | Drift | Grid | Pwr | Reporter | RGrid | km | az |
---|---|---|---|---|---|---|---|---|---|---|
2009-08-12 12:16 | E51EME | 10.140137 | -22 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 11:44 | E51EME | 10.140136 | -20 | -1 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 11:32 | E51EME | 10.140137 | -18 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 11:24 | E51EME | 10.140136 | -17 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 11:14 | E51EME | 10.140137 | -15 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 11:06 | E51EME | 10.140135 | -12 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 10:56 | E51EME | 10.140137 | -12 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 10:44 | E51EME | 10.140135 | -10 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 10:32 | E51EME | 10.140137 | -11 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 10:12 | E51EME | 10.140137 | -11 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 10:04 | E51EME | 10.140136 | -14 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 09:56 | E51EME | 10.140137 | -17 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 09:44 | E51EME | 10.140136 | -18 | -1 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 09:34 | E51EME | 10.140137 | -18 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 09:24 | E51EME | 10.140136 | -20 | -1 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 09:16 | E51EME | 10.140137 | -19 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 09:04 | E51EME | 10.140136 | -19 | -1 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
2009-08-12 08:52 | E51EME | 10.140136 | -19 | 0 | BG08 | 5 | K6HX | CM87ux | 7649 | 30 |
A quick trip to QRZ.com verified that this was indeed a real call, Bob Sutton from Raratonga, in the Cook Islands. Very cool.
I haven’t been playing with the LEO sats much lately, but it’s good to hear that the South African amateur satellite SumbandilaSat is nearing launch. It has a 2m/70cm FM transponder, and a voice beacon. I’ll try to get more information as the launch date gets closer.
The Computer History Museum is a fascinating place, and here is a link to their collection of still imagery, some of which I have seen before, but some of which I had never seen before.
I’ve been interested in TEMPEST and related technologies for a while. Here’s another link to another paper:
This project investigates a novel eavesdropping technique for spying at a distance on data that is displayed on an arbitrary computer screen, including the currently prevalent LCD monitors. Our technique exploits reflections of the screen’s optical emanations in various objects that one commonly finds in close proximity to the screen and uses those reflections to recover the original screen content. Such objects include eyeglasses, tea pots, spoons, plastic bottles, and even the eye of the user.
We have demonstrated that this attack can be successfully mounted to spy on even small fonts using inexpensive, off-the-shelf equipment (less than 1500 dollars) from a distance of up to 10 meters. Relying on more expensive equipment allowed us to conduct this attack from over 30 meters away, demonstrating that similar attacks are feasible from the other side of the street or from a close-by building. We additionally establish theoretical limitations of the attack; these limitations may help to estimate the risk that this attack can be successfully mounted in a given environment.
While re-reading Ren Ng’s paper on light field cameras, I saw reference to a much earlier paper by Adelson and Wang. I added it to my growing collection of Google Docs for later reference.
I’ve blogged about the experiments of Nyle Steiner before, but just recently got back to his Spark Bang Buzz website again, and found that he’s added a couple of interesting bits. In particular, he shows how to modify a common Cadmium Sulfide Photocell to act like a field effect transistor. The voltage gain provided is quite small (about 1/10) but the power gain is better and the principle is quite interesting. Check it out.
The Amateur Extra test is 50 questions, multiple choice, with 4 answers per question. A passing grade is 35 or more. A few minutes of programming this morning, even before I had any coffee yielded that the exact probability of passing was:
4677523340461106447 ------------------------------ 158456325028528675187087900672
or about 1 in 33.9 billion.
This wasn’t that interesting of a question, but to solve it, I hacked up a quick but limited implementation of rational arithmetic in Python. I was wondering if there was a better way to implement this in Python so overloading would “just work”. I didn’t know how, and the problem was simple enough, so I didn’t try. Here’s my solution.
#!/usr/bin/env python def gcd(a, b): if (a < b): a, b = b, a while b != 0: a, b = b, a%b return a class Rational: def __init__(self, a, b): self.a = a self.b = b def __str__(self): return "[%d / %d]" % (self.a, self.b) def pow(self, p): return Rational(pow(self.a, p), pow(self.b, p)) def mult(self, r): tmpa = self.a * r.a ; tmpb = self.b * r.b ; d = gcd(tmpa, tmpb) return Rational(tmpa//d, tmpb//d) def imult(self, i): tmpa = self.a * i ; tmpb = self.b ; d = gcd(tmpa, tmpb) return Rational(tmpa//d, tmpb//d) def add(self, r): tmpa = self.a * r.b + r.a * self.b tmpb = self.b * r.b d = gcd(tmpa, tmpb) return Rational(tmpa//d, tmpb//d) p = Rational(1, 4) q = Rational(3, 4) def fact(n): c = 1 while n > 1: c = c * n n = n - 1 return c def comb(a, b): return fact(a)/(fact(b)*fact(a-b)) total = Rational(0, 1) for t in range(35, 51): x = p.pow(t).mult(q.pow(50-t)).imult(comb(50, t)) total = total.add(x) print "Exact probability is", total print "Only about 1 in", total.b // total.a, "will pass"
Planet Earth has entered the age of the Personal Satellite with the introduction of Interorbital’s TubeSat Personal Satellite (PS) Kit. The new IOS TubeSat PS Kit is the low-cost alternative to the CubeSat. It has three-quarters of the mass (0.75-kg) and volume of a CubeSat, but still offers plenty of room for most experiments or functions.
The interesting bit? Total cost = $8000, including launch costs. You can use paypal to order one and get a launch slot.
The not so interesting bit? It doesn’t appear that the launch vehicle actually exists.
Via Interorbital Systems – TubeSat Personal Satellite Kit | International Space Fellowship.
So, armed with the SSTV link that I dug out yesterday, and with a couple of hours this morning to tinker, I started working on an SSTV decoder. It’s not much different than the APT and WEFAX decoders I had written before, but they used amplitude modulation of an audio subcarrier, and most (all?) SSTV modes are based upon frequency modulation. But the only real difference is instead of recovering the amplitude of the carrier, you recover the change in phase. I’ll write this up in more detail sometime when I feel like writing, but here’s some example “demodulations”. The first comes from the header:
This is from the beginning of the recording of my Robot36 encoded picture. It starts with the so-called VIS code, which has 300ms of 1900hz audio, 10ms of 1200hz audio, and 300ms of 1900hz audio. You then see the mode indentifier, which begins and ends with 30ms of 1200hz, and with the identifier having ones and zeros encoded as 1100hz and 1300hz audio respectively. Neat!
Looking at a later part, we get this:
This shows scanlines from the image. Between the two tallest peaks, you see two scanlines. The two longer stretches are the intensity information, the two shorter, the R-Y and B-Y color channels.
It won’t be too hard to convert this into a picture, but I’ve been mucking with this too long today. Stay tuned for more developments.
Addendum: The bandpass filter in these examples was probably not positioned optimally (centered on 1500Hz, rather than 1700Hz). I’ve corrected it.
Don’t you hate it when you remember seeing a webpage but can’t remember exactly how to get there? This one took me a bunch of judicious web searching to finally uncover again. It basically details how you might go about making an SSTV demodulator, some of the details of which I was a bit sketchy on. This page not only gives you the answer, but shows some of the mathematics that makes you have some confidence that what you are doing is right. I’m too tired to figure it out tonight, but I’m archiving it for later:
I recall burning three or four weeks of a sabbatical getting Saccade.com on the air with Wordpress. So much tweaking…