Friday, March 15, 2024

Handy breakout board for Raspberry Pi Pico

Just picked up a few of these breakout boards. I'm not sure that I like the screw terminals but it is handy having LEDs on each GPIO pin.


 I'm really getting in to the RP2040 and recently ordered some boards with USB-C connectors.

MicroPython is great for most things, there is support for the Arduino runtime library and I can drop down to the native toolchain if required.

Sunday, March 10, 2024

A pleasant trip north via "The Dish"

A friend had some boxes of yachting gear left in Melbourne and I kindly agreed to drive it up to him at Dorrigo NSW. Along the way I visited John, VK2ASU, Merv and Dallas, VK3EB. 

On the way back I dropped in a Parkes and took another look at the CSIRO Dish.

It was a long drive in the Jimny and to avoid the high noise level I listened to podcasts in noise cancelling headphones.

I stopped for two nights at Port Macquarie and was interested to note that a podcast I listened to later, which was obviously downloaded while I was there, had local Port Macquarie targeted ads inserted in-line.

The return trip was more rapid and the final run from Dubbo to Drummond was a marathon in hot conditions.

It was good to get away and to catch up with friends. It's good to be back.

Here's a circularly polarised log periodic antenna.

Here's an Apollo 11 S band OMT:


S Band is 2.4–2.483 GHz. I think an OMT is an Orthomode transducer which is a waveguide component referred to as a polarisation duplexer.

Here's an impressive bit of work, a C30 Converter:



Monday, February 26, 2024

Simple Arduino rotary tuning knob for SDR

I like using SDR++ to remote control my AirSpy receiver but I was missing the tuning knob. SDR++ can be tuned with the mouse wheel but I find it a bit difficult.

Using an Arduino UNO R4 Minima I've made a very simple Rotary encoder that sends left or right arrow keys to the computer. I can't get the interrupt driven encoder code to work so I'm just polling but it seems fine for me. 


Soon I'll box it up for desktop use.

Embarrassingly little code is needed for this.

#include <Keyboard.h>
#include <Rotary.h>

Rotary r = Rotary(2, 3);

void setup() {
Keyboard.begin();
r.begin(true);
delay(1000);
}

void loop() {
unsigned char result = r.process();
if (result) {
if(result == DIR_CW) {
Keyboard.press(KEY_RIGHT_ARROW);
delay(10);
Keyboard.releaseAll();
} else {
Keyboard.press(KEY_LEFT_ARROW);
delay(10);
Keyboard.releaseAll();
}
}
}

Here it is all boxed up like a bought one:



Sunday, February 25, 2024

Wyndham Amateur Radio Club radiofest a good show

It's only a few short weeks since the Ballarat hamfest but as I live pretty close it was a no-brainer to head over. There was an excellent turnout and the new venue, Rowsley Hall, wasn't really spacious enough for everyone to get in.



Lots of interesting older gear to look at. I was tempted by the high voltage variable capacitors.





In the end I came away with a 1994 edition of the ARRL Antenna Handbook. It has calculations written in it by a previous owner.

Friday, February 23, 2024

New radio streaming iOS app - Sound Salvation

The name is inspired by a line from Elvis Costello's song "Radio Radio". I like to listen to radio in an earpiece when I wake during the night. Where I live there is no FM (or DAB+) and the house interferes with AM reception so I've been trying various radio streaming apps.

The apps I've tried are often very annoying in one way or another. Some force ads on the listener - one even made me watch a full screen video ad after a while. Many have various types of in-app purchases or subscriptions.

Sound Salvation is low cost (AU$2). It doesn't collect any information on users. It doesn't show any ads in the app. The radio station directory comes from https://www.radio-browser.info/ which has over 46,000 stations in its database. The only monitoring the app does is to send a "click" to Radio Browser for each play of a station for their popularity ranking.

You can add your own station if you know the streaming URL. The app also supports a URL Scheme so that opening a URL on device like the following one will add a station to the list.

soundsalvation://add/?title=Radio%20National%20Sydney&url=http%3A%2F%2Flive-radio01.mediahubaustralia.com%2F2RNW%2Fmp3%2F 




Being a brand new app I decided to use the very latest Apple technology so it's built in SwiftUI and uses SwiftData for the database. The experience was a very smooth one but means that the app requires iOS 17 and above and I know that's a problem for some people with older devices.

Like all good apps, I wrote this for myself. If you want to stream radio, please give it a go.

Update

Well, I'm slightly boggled to see that currently Sound Salvation is the number 1 paid app in the Entertainment category.


Just ahead of "iFart" and that's undoubtedly a high bar. ;-)

Thursday, February 15, 2024

Listening to shortwave on my 80m loop antenna

Recently I strung 80m of wire up in a loop attached to trees. It's not as good as my dipole for transmitting but it makes an excellent receive antenna. I've got an AirSpy HF+ SDR running with SDR++ in server mode so I can tune from the house (which is separate from the shack). This is running over two Wifi links but as you'll see it's a pretty good experience.


I'm currently reading Geoff Heriot's excellent book about International Broadcasting titled "International Broadcasting and Its Contested Role in Australian Statecraft - Middle Power, Smart Power". An informed and thoughtful examination of the topic.

Saturday, February 10, 2024

WSPR Watch 4.10 - fixed a long standing thread crash

WSPR Watch, my iOS app for quickly looking at spots on WSPRnet, is 12 years old. During that time it has been updated as the software tools and frameworks have changed.

First it was Objective C and UIKit. Next came the move to Swift. Version 4 was a move to SwiftUI.

I've always used background threads for doing the time-consuming requests to the different data sources. Most recently I've been using async/await and Actors. 

When I moved the app from storyboards to SwiftUI about half of the old code was no longer required. Things look much neater now. For a long time I've had a few crash reports coming in. These have been mostly in the map view. This app really hammers the map by drawing, sometimes, 10,000 or more overlays on it. 

I'd heard of the ThreadSanitiser that is part of the LLVM toolchain and available in Xcode. When I turned it on and ran the app in a Simulator it quickly showed me three data races that I hadn't noticed. My mistake was adding to an Array from a background thread when that Array was also available from other threads.

Having fixed these, I am now seeing zero crashes from users of version 4.9 and later. I expect to see a few due to being out of memory of killed in other ways but so far it looks good.

My thanks, as always, to my wonderful testers and users for their suggestions.