Monday, September 25, 2023

Solar shack battery monitor mark 2 - simpler is better

After the failure of my ESP32 web server to monitor battery voltage I reverted back to a simple system with an Arduino Nano reading analog voltage from a 5k-1k resistor divider to bring 15V down to 3V. Every second it takes a reading and sends on serial over USB to a Linux computer.

I love these little nano boards - very cheap and easy to use. The code is very simple, here's a screen shot from my favourite Arduino environment PlatformIO.

The battery (a 105Ah flooded lead acid battery charged from a 100W panel), is charged for some of the day and over night runs the computer and any radios I have on for WSPR. Here's a plot from 5pm until the next 5pm.

It's a deep cycle battery so I think there's a fair bit of voltage drop to go if required.

At the moment I'm taking a sample every second which is clearly way too much and rather hammers the spreadsheet. I'll back it off to every 10 minutes.

I mentioned that I like PlatformIO and one reason is that it's so fast compared to the Arduino IDEs. Here is a screen recording of building and uploading that little sketch above.

This is not sped up! The Arduino IDE v2 is better than v1 but still not a patch on Visual Studio Code with PlatformIO. There's more to set up and learn but it's worth it.

There is one complexity that needs to be solved. Reading ASCII voltage readings from the serial port and writing them to a file is more complex than it should be. I think the problem is that I'm using python 3 which defaults to unicode. I've got it working but it's more complex than it should be.

Writing serial data from Arduino to a file

I ran into a few puzzling issues getting this simple thing to work. Firstly, writing to the file is buffered quite a bit so nothing appears for some time. I thought it wasn't working. In the end I use this command to write the lines written by the voltage logger (now only once a minute) to a file with a prepended timestamp.

nohup tail -f /dev/ttyUSB0 | gawk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }' > voltMinutes.txt&

The file looks like this:

2023-09-26 11:29:07 14.46

2023-09-26 11:29:57 14.40

2023-09-26 11:30:57 14.37

2023-09-26 11:31:57 14.51

2023-09-26 11:32:57 14.46

2023-09-26 11:33:57 14.54

2023-09-26 11:34:57 14.49

2023-09-26 11:35:56 14.46

2023-09-26 11:36:56 14.46

2023-09-26 11:37:56 14.49

2023-09-26 11:38:56 14.46

2023-09-26 11:39:56 14.29

2023-09-26 11:40:56 14.49

The nohup and ampersand mean that I can kick it off and disconnect from the terminal and it keeps going.

Sunday, September 24, 2023

Solar shack battery monitor mark 1 - failed project

The radios in my shack are now powered by a 12V flooded deep cycle lead acid battery with 105Ah capacity charged from a 100W solar panel. So far all seems well. I'd like to know how low the voltage drops in the early morning so my project is a voltage monitor that can be logged to disk.

An ESP32 board with Wifi and an OLED screen was used. The analog input has a resolution of 12 bits. I grabbed bits of sample code from the ESP32 Arduino examples and created a tiny web server that registers itself on the network using multicast DNS so that a web browser can simply poll the ADC value.

The maximum that the analog input can take is 3.3V so I used a resistor divider with 5k and 1k to divide down up to 15V to something the input can handle.

A 7805 regulator was used to give 5V to power the board. All seemed well.

Unfortunately the Wifi is not strong in the shack and the ESP32, while it could see the network on a scan, could not connect.

As you can see from the photo above, I tried cutting the on-board antenna and attaching a wire antenna. I'm not sure that this improved things but in any case it didn't fix my problem.

Of course doing all this over Wifi with a web server is a rather complex arrangement so I have another, simpler plan under way. I'll post when it's been running long enough to draw a graph.

Wednesday, September 20, 2023

WSPR Watch version 4 is out

Timed to coincide with the release of iOS 17, WSPR Watch version 4 is now in the iOS App Store. It's a long overdue re-write of the app in the modern SwiftUI framework. The biggest change is on iPad which (I humbly think) looks great, particularly in dark mode:

There has been a bit of feedback about the changes and I'm working on a 4.1 release in the weeks ahead. My thanks, as always, to the dedicated testers and those that write in with suggestions and feedback.

Low cost Intel PC that runs on 12V battery

As part of my project to convert the shack to off-grid power I thought it might be good to replace the shack laptop (with its mains charger) with a low cost PC that Lindsay, VK3GX, brought to my attention.

The Beelink PC was on special on Amazon so I purchased one for AU$224.25

Others report that the discount varies. I did not choose to pay $30 more to get 16G RAM and 512G SSD.

The machine comes with Windows 11 and it was interesting to go through the Windows setup. They are up to their old tricks. A screen popped up saying that I would get Office 365 free for a year, but would need to give them my credit card. I declined. (Presumably they'll quietly bill people a year later when they've forgotten).

The first thing I did was go to install the Chrome browser. As soon as I went to the download page they tried to talk me out of that.

I'm not sure that my level of trust in Microsoft is a positive factor in choosing a browser.

Windows 11 looks beautiful, it's getting similar to macOS in many ways. I was struck that the application dock is now centred like on the Mac. The login screen on Windows looks like this:

macOS Sonoma looks very similar:

I tried to install Linux Mint Cinnamon in a dual boot configuration but for some reason this didn't work - perhaps some sort of secure boot restriction. In the end I gave up on Windows and wiped the disk to install Linux.

The machine is now running on the shack 12V battery and the x11vnc server means that I can control it remotely. Currently it's connected to a QDX for WSPR and makes a very small dent on the workbench.

There is no noticeable noise from this computer running on 12V DC.

I control the machine using the built-in VNC from macOS.

Works very well over the wifi network.

Sunday, September 17, 2023

Amazingly decodable spots from a QDX transmitter, displayed in WSPR Watch

During the beta phase of iOS 17, which will be released in a day or two, I've been working on a re-write of my iOS app "WSPR Watch" using Apple's fantastic SwiftUI framework. While the re-written app loses a few features of the old version, one big improvement is to how it appears on an iPad.

Highly successful WSPR receiver, Phil, VK7JJ now looks like this on the iPad:

(Click the image for an enlarged version). Now that my radio shack is battery powered (with solar charging), I thought it wise to run something that draws less current than an IC-7300 for full time WSPR operation so I set up the QDX. I think it's not quite as good a receiver as the Icom but there's no doubt that the clean signal it transmits is superior, at least in terms of the number of stations that decode my WSPR signals.

Operating on 20m, just now at dusk, my 4.7W transmission was reported by 168 stations which is pretty good given that I'm in country Victoria and not in the middle or Europe or whatever.

The new version of WSPR Watch is scheduled for release on 18 September, just after iOS 17. It is compatible with iOS 16 but I know there are some users who won't be able to update as they run older devices. They can keep running the old version but I must move on and adopt new technology.

Wednesday, September 13, 2023

Shack is off-grid again

Visiting the emergency communications exercise a few weeks ago inspired me to make sure my radio shack can operate without mains power if required. This could be important if this summer is a fire season as seems possible.

I had a folding solar panel claimed to generate 100W from the old days of my camper van.

For now it's on the ground but I may put it on the roof at a later date for more sun during the day.

I purchased a 105Ah flooded lead acid deep cycle battery for $249. As it's just sitting on the floor weight isn't a problem. 

A cheap Chinese PWM charger got me started and worked fine but I ordered a more efficient MPPT charger made by Renogy. It seemed to work well...

Unfortunately it generates a lot of radio noise. Even up on 20m it leaves bands of noise all over the dial.

The cheap Chinese PWM charger doesn't produce any noticeable noise. (You can see it mounted on the wall with the blue face plate above).

To be fair, my noise floor here is very low and I haven't tried to suppress the noise from the Renogy unit at all so far. It is disappointing though.

I powered my IC-7300 all night receiving WSPR last night and the battery was down to 12.3V in the morning. It is good to know that I can make radio contact after a long term power outage if required. It is a very useful feature of an Amateur radio station.

Monday, September 11, 2023

Shepparton HamFest was excellent

On Sunday I drove two hours to get to the Shepparton Hamfest. A little tiring but an excellent show that was both well attended and had lots to see and possibly buy.

VK3ZYZ had a display of his Arduino based VFOs which he sells as kits but also has built into radios including Codans and even an IC-22 (that brought back fond memories).

There's information and source code available via the SADARC website projects page. The club also has excellent forums with more discussion and information.

I came away with just a few parts including these nice honeycomb trimmer capacitors. 

It was great to catch up with radio friends including VK3EB, VK3ASE, VK3NE and VK3CCR (the last two from the Macedon Ranges Amateur Radio Club). Warm congratulations to the Shepparton organisers for a fantastic day.

Wednesday, August 23, 2023

Joined the Macedon Ranges Amateur Radio Club 80m net over wifi and bluetooth

It's 7C in the shack tonight so I decided to set up the IC-705 and use it remote from the warmth of the house. The client software on macOS is SDR-Control and I was using AirPods bluetooth headphones.

Even running just 10W reports were all good although Graeme, VK3NE, mentioned a bit of boomy audio.

The main issue is the delay when switching between receive and transmit - I doubled with other stations several times. It was mentioned that my final words of an over were chopped off so I think that I need to not switch back to receive for a few seconds after ending what I was saying - perhaps there's an audio buffer to send.

The IC-705 is an amazing radio and it's great that 10W with a good antenna is enough to be easily heard by other stations. Joe, VK3MAB mentioned that I was 10dB over S9.

You can join the MRARC nets if you are in Victoria, Australia too!

SwiftUI Charts to monitor power generation and use

We have 6kW of solar panels here but it's important to know when the sun is shining on them so I can use that power to charge the car or dry clothes. In recent months I've been learning Apple's SwiftUI and one of the gems is the new Charts View. Here's how it looks:

This wonderful chart is created with very little code:

Chart {

                ForEach(model.netHistory) { sample in


                        x: .value("time",,

                        y: .value("Generating", sample.generating)


                    .foregroundStyle(by: .value("", "Generating"))




                        x: .value("time",,

                        y: .value("Using", -sample.using)


                    .foregroundStyle(by: .value("", "Using"))




                        x: .value("time",,

                        y: .value("Net",


                    .foregroundStyle(by: .value("", "Net"))





            .chartForegroundStyleScale(domain: ["Generating", "Using", "Net"], range: [.green, .orange, .blue])

ABC Friends (Southern Bayside Victoria) event at Brighton

It was a pleasure to assist at an event organised by ABC Friends - southern bayside. The topic being discussed was "The ABC Past, Present and Future" and hundreds of people turned up on a cold and somewhat damp evening.

Great to catch up with Zoe Daniel and Dr Gael Jennings. Good to meet John Faine for the first time.

The discussion was wide ranging and animated. It's great to see the deep love for the ABC from the community. ABC Alumni support the wonderful efforts of ABC Friends.

Volunteered at GovHack 2023

After competing in GovHack in 2017 I became heavily involved as a volunteer for a few years. After a break and a move to Melbourne I volunteered to help with GovHack in Victoria.

GovHack encourages software projects that make use of open government data. It's a wonderful contest that lets teams come together and do a quick project in one weekend.

I was tasked with taking photos and enjoyed the challenge of photographing groups.

As a volunteer it was a tiring weekend, I'm not used to standing up for long periods and talking to lots of people. Overall, very rewarding and I look forward to the state and national awards ceremonies in the months ahead.

Sunday, July 30, 2023

Built VK3XU's "Simplex sidebander"

I'm on a bit of a retro transmitter trip at the moment. Armed with some low profile 3.6864 crystals I built the "Simplex Sidebander" described in the first volume of Drew Diamond, VK3XU's wonderful "Radio projects for the radio amateur".

The transmitter is simplicity itself. An NE602 with a crystal pulled up in frequency produces double sideband that goes through a 4 crystal bandpass filter. Three RF gain stages produce about 4W out. The final is a low cost IRF510. Mic amp is a 741. Here's how mine looks:

Despite trimming the oscillator crystal I couldn't get decent sounding sideband out of it. The reason is that the little crystal wouldn't pull high enough. Acting on the advice of SmartFriends™I replaced the single crystal, first with two and then three of the little ones and in the end with three larger crystals which seem to pull more. In the end I have a full size polyvaricon for tuning:

Drew warns that the whole thing needs to be in a shielded box and I can attest to the fact that when attached to my antenna it takes off magnificently. 

The exciter itself seems very narrow to me - here it is fed into a local SDR.

Off to the shops to buy a tin of biscuits... (to get a tin to put it in).

Boxed up and it no longer takes off when connected to the antenna.

I have a bit of instability as you can see in the dips in the AM test signal here:

Saturday, July 01, 2023

Built a low pass filter for using the Minion on 80m

I was horrified when I looked at the spectrum coming from the minion on 80m so clearly a low pass filter is needed. I used the notes from GQRP on low pass filters for my design and it looks good when swept.

My build is not very compact and indeed it's almost the same size as the whole transceiver.

I quite like these boxes, purchased on AliExpress and plan to make low pass filters for 40 and 20m as well.

The filter on a spectrum analyser shows that it's 3dB down at 5.16Mhz and the first harmonic, at about 7MHz would be down 25dB at least.

Tuesday, June 13, 2023

QRPver QRP Minion SDR Transceiver

The QRPVer QRP Minion SDR transceiver I ordered on Feb 3, has just arrived (June 13). So far I'm very impressed. It's very compact, with a beautiful display and enough audio power to be heard clearly.

Operating frequency ranges: 1.8, 3.5, 5, 7, 10, 14, 18, 21, 24, 26-30 MHz.

The unit has a USB port for CAT control and software updates. There's also audio line in and out for digital modes. 

I plugged it in to a 40m dipole and it receives well. I called in to the morning net on 7.1Mhz and was given a 5/5. Another station, unprompted, popped up to say that my audio sounded good.

Here's some video of the Macedon Ranges Amateur Radio Club 80m net with comments from other stations. Note the PL-259 connector on top to show the size.

The company that makes these is in Ukraine and I'm sympathetic to the obvious disruption that's taking place over there. It's amazing that they can keep an export business going. The purchase process was not smooth and, hearing nothing, I thought perhaps my money was gone. Yurii asks that you pay with PayPal and select "friends & family" option which saves him a fee but also means you can't reverse the transaction if the goods don't come. I would advise purchasers to add 3% and pay normally.

Anyhow, all good in the end although my unit arrived with damage to the rear panel but otherwise working well. 

I've written to Yurii to ask about ordering a replacement rear panel. So far, no reply. In the mean time, I've made a replacement rear panel. I skipped the power switch as simply unplugging the 12V is fine for me.

Yikes, no low pass filter!

The manual isn't explicit but another multi band radio from QRPver mentions that the low pass filter is at 30Mhz and external filters should be used for other bands. I can confirm this:

Transmitting on 80m CW the spectrum shows that the first harmonic is down just 4.3dB. 

The waveform on CW looks rather bad.

I did use it into a resonant 80m dipole so there would have been some filtering but this is a concern and an external low pass filter is definitely required for legal (or responsible) operation.

Update from the next post, after building a low pass filter for 80m, the CW waveform looks much better:

A question about tuning

When transmit is keyed the display shows audio level, power out and SWR - very convenient!

Tuning needs a fixed RF output which could be created in CW mode or with a tone on SSB. There is an indicator saying "Tone OFF" here. The user manual describes this as "Tone tune Indicator" and one of the features listed is "Transmit tone to tune the antenna tuner, amplifier."

I can't see how to turn on the tuning tone. Perhaps it's done via CAT from an amplifier? Interested to hear if anyone knows.

There are some more detailed reviews here. The current price is US$410.00. (Microphone sold separately).

Friday, May 19, 2023

Using an SDRPlay RSP1 Clone with CubicSDR on Linux Mint

Here I describe how I've been able to use a SDRPlay RSP1 clone with CubicSDR via SoapySDR on Linux Mint (a Debian/Ubuntu derivative) without using any proprietary software from SDRPlay. This is the device I'm using in this post:

I fully realise that these clone devices are controversial but they are now widely available at low cost and are a copy of an old device, soon to be no longer supported by SDRPlay. 

I respect the folks at SDRPlay and have bought from them in the past. There is some criticism of their closed source driver which runs as root and I think it's great that there is an open source alternative. 

Clicking on the Mirics device will hang CubicSDR.

Unfortunately, the software that ships currently on Linux Mint doesn't work out of the box but some good work by third parties have made it possible with a bit of messing about as I document below.

On a fresh install of Linux Mint 21.1 Cinnamon 64bit on an x86 laptop.

If you plug in the device and look at loaded kernel modules you’ll see two msi… modules like this:

lsmod |head

Module                  Size  Used by

msi001                 20480  1

msi2500                36864  0

To stop these loading, and capturing the device, we need to blacklist them.

  • sudo nano /etc/modprobe.d/blacklist.conf
    • blacklist msi001
    • blacklist msi2500
  • sudo reboot
  • sudo apt install cubicsdr
    • Note that this installs a bunch of soapysdr packages: 

soapyosmo-common0.8 soapysdr-module-all soapysdr0.8-module-airspy soapysdr0.8-module-all

  soapysdr0.8-module-audio soapysdr0.8-module-bladerf soapysdr0.8-module-hackrf

  soapysdr0.8-module-lms7 soapysdr0.8-module-mirisdr soapysdr0.8-module-osmosdr

  soapysdr0.8-module-redpitaya soapysdr0.8-module-remote soapysdr0.8-module-rfspace

  soapysdr0.8-module-rtlsdr soapysdr0.8-module-uhd

That soapysdr0.8-module-mirisdr module has issues and needs to be replaced. While it’s tempting to `sudo apt remove libmirisdr0` this will remove all the other soapy stuff which we need.

We need to build a new version of libmiri and the SoapyMiri driver:

  • sudo apt install libsoapysdr-dev soapysdr-tools
  • sudo apt install git cmake libusb-1.0-0-dev gcc g++
  • git clone
  • cd libmirisdr-5
  • mkdir build
  • cd build
  • cmake ..
  • make
  • sudo make install # puts the library in /usr/local/lib/
  • sudo rm /usr/lib/x86_64-linux-gnu/
  • sudo rm /usr/lib/x86_64-linux-gnu/
  • sudo rm /usr/lib/x86_64-linux-gnu/
  • sudo ln -s /usr/local/lib/ /usr/lib/x86_64-linux-gnu/
  • cd
  • git clone
  • cd SoapyMiri
  • mkdir build
  • cd build
  • cmake ..
  • make
  • sudo cp /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/.
  • sudo rm /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/

SoapySDRUtil --info will now show:

Available factories... airspy, audio, bladerf, hackrf, lime, osmosdr, redpitaya, remote, rfspace, rtlsdr, soapyMiri, uhd

CubicSDR will now run and show soapyMiri

Now you can configure the mirics device and there's even a "flavour" for SDRPlay that is said to make it work better.

I was also able to get the soapyMiri driver working with SDR++ remote.

I hope this helps someone. At least it will be a note for future me.