Monday, December 28, 2020

Messages from Space

Between Christmas and New Year's Day, 2020, the International Space Station is celebrating 20 years of ARISS (Amateur Radio on the International Space Station) by sending slow-scan TV images back to Earth. SSTV is something like a fax, sending one line at a time. To receive these images, you need an FM receiver tuned to 145.800 MHz. Unlike many other signals from space, you don't need a Yagi antenna. Because the signal from the ISS is relatively strong, the ground plane antenna I made worked just fine. The audio then needs to be sent to your computer for processing. I used an application called QSSTV. To know when the ISS is going to be overhead an iPhone app like SatSat works very well. There are web sites that track the ISS, too. Overhead passes come in groups of two or three per day spaced 90 minutes apart.

It took me three passes to get it right. 

For the first pass, I tried recording on my iPhone. I though I was recording, but alas, I wasn't.

On the second pass, I connected the radio output to my computer and recorded the signal with Audacity. I saved in several formats, but when I tried importing it into QSSTV, I got  an invalid header error.

On the third pass, I tried QSSTV in live mode with automatic save enabled. There are some noise artifacts because the pass wasn't particularly high above the horizon, but I did get an image. ISS been sending images of different contacts that have made and organizations they have worked with. This image shows astronauts on the space station along with members of AMSAT, the Amateur Radio Satellite Corporation. At the bottom are the Russian and American call signs used aboard ISS: RU0ISS and NA1SS.


Friday, December 25, 2020

Raspberry Pi Password Tricks

With a whole fleet of Raspberry Pi boards, it's sometimes a chore remembering all the passwords. Short of writing the password on a post-it stuck to each Pi, here are a few tricks.

Set up ssh authentication. If you haven't already, generate the private/public key-pair on your workstation. 

ssh-keygen

Answer all questions with <Enter>. 

This will generate your private key.

~/.ssh/id_rsa

And your public key.

~/.ssh/id_rsa.pub

Now copy your public key to the raspberry pi.

ssh-copy-id pi@raspberry.lan

Now you no longer need a password when logging in from your workstation because the pi trusts it.

ssh pi@raspberry.lan

You will still need the password when logging in from other devices, but if you ever forget it, you can do a password reset without knowing the password with the following command.

sudo passwd pi


Wednesday, December 23, 2020

Orbits of the Galilean Moons

In the previous post I described my measurements of Jupiter's moons - four of which were discovered by Galileo. One fascinating thing about the inner three moons is that they are tidally locked into a [4:2:1] orbital resonance. That means that Io orbits twice as fast as Europa, which orbits twice as fast as Ganymede. I though it would be neat to take some measurements of these moons and try to verify that resonance. Observing an orbiting object side-on, it appears to oscillate back and forth in a sinusoidal pattern; that is, as long is the orbit isn't too elliptical. Fortunately these moons have a small eccentricity. I was able to get five measurements over a week, and then one more, three weeks later. That's not many. Ganymede, the outer-most of the three tidally locked moons orbits Jupiter once per week, so I figured I had enough samples to get it's orbital period. The other two moons, having periods of half and one quarter of Ganymede were too under-sampled to make the calculation, but I figured if I plotted their predicted orbits based on the Ganymede data I could claim success if the few sample points I had lined up on the predicted curve. 

 To fit a sine wave to my data points I used the curve_fit function in the SciPi Python library. You can find the source code to the Python script I wrote here. Plugging the data in, I got this:

The dots are the measured distances and the line is the best-fit curve. The calculated orbital period was 7.22 days. According to Wikipedia, the actual orbital period is 7.15 days. Looks like I'm off by about 1%. Not bad at all. 

Now to overlay the predicted and measured orbits of Europa and Io. When I first did this, the measured points were nowhere near the predicted curve. It turns out that each moon is 180 out of phase with its neighbor. I hadn't seen that mentioned in any of the literature. I did, however, notice it in an animated simulation of the orbits of the three moons. When I added the phase shift, the dots stayed pretty close to the line, although not perfectly. I'm sure there was plenty of measurement error in my technique!
Now that Jupiter is starting to be obscured by the setting sun, I don't think I'll be able to take more measurements until next year when Jupiter is once more visible.


Tuesday, December 22, 2020

Jupiter, Saturn, and the Galilean Moons

Jupiter has been on my mind recently. First of all, I've been watching all the action happening on Ganymede in The Expanse on Amazon Prime 😁. And then, Saturn came into its closest conjunction with Jupiter in 800 years. Over the past few weeks I've been listening to Prof. Richard Pogge's Astronomy 161 lectures and I was particularly fascinated by his lecture on Jupiter in which he explained how the Galilean moons of Jupiter are tidally locked in orbital ratios of 4:2:1. 

Here's what I set out to do:

1. Measure the closest conjunction of Saturn.

How close in the sky will Saturn be to Jupiter?

NASA published 0.1 degrees or 6 arc-minutes or 360 arc-minutes. Not many significant figures here.

Astronomy Now published 6 arc-minutes or 360 arc-seconds. Not many significant figures here, either.

When the Curves Line Up published 377 arc-seconds. More significant figures doesn't equal more accuracy, but I'll go with this number. 

Several sources published 6 arc-seconds, but that seems like a misprint.

On the day of conjunction, December 21st, 2020, I was initially plagued with fog and then high clouds. They did eventually clear enough for me to photograph the two planets.


For the measurement, I used a Canon SL1 camera with a 300 mm f5.6 lens. Exposure was 1/60th of a second and ISO setting was 3200.  I tried manual focus, but it was just too fussy. Fortunately Jupiter is bright enough that auto-focus worked. To minimize vibration, I put the camera on a tripod, and put the camera in "live" mode to lock up the mirror. I then used a remote to trigger the camera.


I took photos with these and other settings in raw mode. I then selected the best candidate for measurement and opened it in UFRaw and exported it into .ppm format. I could then use GIMP to mark the coordinates in pixels on the image by moving the cursor over each planet, and reading the coordinates in the lower left. To calculate the distance in pixels I used the following formula:


Now we have the distance in pixels. To convert the distance to an angle, we need to get the resolution of of the camera in terms of an angle, rather than pixels. The trick is to take the arc-tangent of the distance between pixels over the focal length, then do some unit conversions to get arc-seconds. 



aps-c dimensionwidth
pixels5280
mm22.2
mm/pixel4.20E-03
focal length (mm)300
rad/pixel1.40E-05
deg/pixel8.03E-04
arc-sec/pixel2.9

With a distance of  126.6 pixels between Jupiter and Saturn, and a camera resolution of 2.9 arc seconds, we get a distance of 366 arc-seconds, which is within about 3% of the published value. Not bad.

2. Show Orbital Ratios of the Moons of Jupiter.

About a month before the conjunction I started taking practice photographs of Jupiter. I noticed that if I made the exposure long enough, I could see the Galilean moons of Jupiter. Sometimes I also saw interesting things like spent boosters. On the top is Jupiter with Europa to the left. Ganymede and Callisto are to the right. At the bottom is a spent Zenit-2 rocket body which just happened to pass by as I snapped the photo.


I started taking photos every other day, starting on November 23rd, but my efforts were hampered by bad weather, so I wasn't able to get as many shots as I would have liked. However, I was able to make six measurements.

This table uses the methods shown in section one to show the distance from Jupiter to its Galilean moons as a function of the number of days since my first observation.

daysIoEuropaGanymedeCallisto
0.00.0-67.7148.6433.9
2.076.3115.1164.0336.1
4.092.6-147.2-210.655.2
6.057.4151.8-92.0-253.8
8.00.0-118.0237.4-413.2
26.0-84.4-107.5-232.5-405.0

When plotted, they should look like sine waves, but I really don't have enough data points. Since Io orbits about as often as I was taking measurements, it almost looks like it wasn't moving. This is called aliasing. It's what makes wagon wheels in movies look like they're moving backwards. I think there may be have enough data points to curve fit Ganymede, though. Then I can see if sine waves of 2x and 4x Ganymede's frequency overlay Europa and Io, thus confirming tidal lock. Callisto is not in tidal lock, but it does look that I got half an orbit.

I was going to do the sinusoidal curve fit in a spreadsheet, but I decided it would be more fun and more useful to do it in Python. That will be the subject of the next post.