My second homebrew Arduino/si5351 Digital VFO-Controller

Back in February 2017 I scratch-built my first Arduino and si5351 VFO. Here’s my second one. It is a generic Nano/si5351 module wired up to Farhan’s Raduino circuit. The si5351 is on an Adafruit breakout which includes a 3.3v regulator and crystal. Everything else is as per Raduino other than the presence of a second 7805 regulator for the LCD (and a 1000uF electrolytic storage capacitor) which will allow testing of Pavel CO7WT’s scheme for saving the VFO frequency to the Arduino’s EEPROM when the power drops.

The base is Veroboard. The sockets are for the Nano, si5351 breakout and two more for the rows of digital and analogue pins that will sense or control rig functions. Another pair underneath the board socket the LCD. This sandwich arrangement seems to be favoured by a number of designers. Raduino, for example. Hans Summers at QRP Labs also does it effectively, as does Mark from Minikits in his M1 kit transceiver.

I used one of the optical encoders from Minikits (for the second time). These are high quality pieces with great bearings and a light feel. The 45mm Collet Knob is also from Minikits. The encoder is a lot larger and heavier than the small cheap mechanical ones found in most VFO kits, but the tuning feel is comparable to many of the commercial transceivers I have used. It is a small luxury in a homebrew rig that adds to the pleasure of use.

I made up a mounting bracket of aluminium right angle stock for the display, board and the encoder. This makes the VFO module self contained. It also means the four M3 LCD panel mounting bolts can be hidden behind the rig’s front panel. The completed assembly can be dropped into the radio case and bolted in a minute.

The Arduino Nano pin usage in this module is as follows:

D0: (Serial)
D1: (Serial)
D2: RotaryEncoder-up
D3: RotaryEncoder-down
D4: Available
D5: Available
D6: Available
D7: Available
D8: LCD-RegisterSelect
D9: LCD-Enable/Clock
D10: LCD-D4
D11: LCD-D5
D12: LCD-D6
D13: LCD-D7

A0: Available
A1: Available
A2: Available
A3: Available
A6: Available
A7: Available.

My design choices mean that VFO/BFO buffering and filtering, and controller or sensing circuitry must be built elsewhere, off the VFO board (examples are components for an S-meter, power meter, and band switching via a 3-bit or I2C multiplexor with relay switching transistors). I think this is a fair trade-off. Although each of these external modules takes space and necessitates additional inter-board wiring, I like that the VFO/Controller module is generic, self-contained, and can be potentially reused down the track.

Hand-crafting a generic VFO/Controller module, particularly one that traces Raduino exactly (excepting tbe power save mod) raises an obvious question. Why? Why not just buy a Raduino? Is there anything about my hand-built unit that differs from Raduino?

One thing’s clear, no dollars were saved scratch-building, my unit cost almost twice as much (around $AUD60) than a Raduino ($AUD38 after conversion). Further, I spent around 12 hours noodling, sketching, soldering and debugging.

It all comes down to how you want to spend your valuable hobby time. If that is scratch-building everything, making a radio with your own bare hands, from the ground up, then hand craft everything and enjoy! But if you prefer making the RF modules more than the MCU (Micro Controller Unit) buy a Raduino and spend your time soldering 2N3904s and IRF510s.

My enjoyment comes from building and then operating a variety of simple and not-so-simple transceivers. The SOTA summits are always calling. So having built two Nano/si5351 VFOs from scratch, I feel like I understand them now. Time now to experiment with some mixer circuits… let’s get some RF up the stick.

My first Raduino should arrive next week.

PS: One final comment on my choice of Liquid Crystal Display. Miniature OLEDs are preferred by some makers to LCDs, which to many are reminiscent of a 1990s FAX machine. The OLEDs are a superior display. The colour screens can mimic high-end commercial transceiver displays. I purchased an OLED last year and blew it up by using a dodgy 7805 regulator. I haven’t bought another one yet.

That experience aside, I am not jumping on the OLED bandwagon, mainly because the tiny size of the displays which are completely out of scale with the rest of the rigs that we thru-hole scratch-builders turn out. A homemade 6 inch wide by 2 inch high front panel sporting a 1.3 inch display with figures in 9 point doesn’t work for me. If I ever adopt surface mount and one-off runs of OshPark PCBs I’ll rethink his position. In the mean time, $5 LCDs are functional, low power consuming and robust displays, and in scale with by builds.

19th March 2018: Jerry W0PWE contacted me a few months back and filled me in on how he took my keyer script from github and merged it into his Arduino controller script. Here’s a picture of his rig, a 5-band CW QRP transceiver, quite similar to my SummitProwler IV project. Love your work Jerry!


Update: May 2018

Since I first built these first two Arduino Nano /si5351 VFO/Controllers I’ve continued rolling them out, for another 3 receivers/transceivers. I’m now well and truly settled on the Raduino circuit and on specific assigned pin uses (for transmit/receive switching, PTT sensing, s-meter, meter, paddle etc), so that I can download a common script into any of these rigs without modification.

Some projects do have specific needs — for example, my latest compact QRP SSB/CW rig (based on the G6LBQ BiTx) for 20 and 40 uses an 8×2 LCD — for these variants I’m writing distinct code statements sandwiched between #defines. Each rig (‘target’) gets a label which is tested in #defines so the appropriate code is compiled.

Below is the VFO/Controller for the compact G6LBQ rig, currently under construction. The Arduino Nano and Adafruit breakout board are clearly visible; to the left of the BoB are three (one per clock) 2N2222 buffers/amplifiers to isolate each si5351 clock from subsequent receiver/transmitter stages.

Tagged , , , , ,

14 thoughts on “My second homebrew Arduino/si5351 Digital VFO-Controller

  1. […] finished my latest Arduino Nano/si5351 VFO/BFO/Controller, I wanted to hook it up to some receiver stages to realise a SSB receiver. My grand plan for these […]


  2. […] for another homebrew rig, with some improvements.  The post describing the VFO is here.   A video of the new rig (receiver only at this stage) is here. […]


  3. Allen says:

    Could I get a diagram and arduino code for this project .


  4. Paul Taylor says:

    On github, prt459/vk3hn_VFO_controller/SP-IV-VFO-Controller


  5. jackmargolis says:

    Does your VFO function just like the Raduino. That is, as far as changing bands, tuning ranges, etc. I’m looking for a VFO that I can use with a DYI superhet for 40 meters.


    • Paul Taylor says:

      Yes. Kind of. My VFO is constructed to the Raduino circuit diagram published on the HFSigs site. VU2ESE has open sourced the hardware and software. If you were to unplug a Raduino and plug in my VFO, flash it with the Bitx script, it should work. All of these Arduino si5351 VFO/BFO/Controllers are similar if not the same. There are multiple hardware / software combinations for tuning, band switching, etc. If you reproduce the Raduino circuit you can run Bitx scripts, if that is of any interest. I haven’t, but it may as well be a Raduino copy as anything else!

      Good luck with your superhet. Arduino and si5351 will be a fine VFO!


      • jackmargolis says:

        Thanks, Paul.
        I would rather use some push buttons to change bands, RIT, etc. Once I get things working on 40 meters (using an IF setting in the script) then I would like to see if can add a TFT LCD display. I want to take things step by step. I only want to use this on a CW rig because I am antenna limited. On 20 Meters, I going to use a QRP labs ProgRock to generate the two frequencies that I need to operate in FT8 mode.

        I have a bunch of breakout boards for the osc. and Nanos in the mail from China.

        There is a kit from UKRAINE that uses two crystals for LO and BFO.

        I have a lot to learn. 73, Jack


      • Paul Taylor says:

        Good luck with your project Jack. I copy code from the hundreds of open sources, try it with a Nano on a breadboard, and when it is working to my satisfaction, copy it into my main script. There is a lot to learn but you can do it step by step, and it is an enjoyable part of making useful things!


  6. Hi
    Where is the programme codes? Please help me.
    Thank you.


  7. jackmargolis says:

    Paul, do any of your DDS VFOs have adjustable RIT settings. I haven’t looked to see if the one used on the Raduinos have that function. I guess SSB operation does need it but I’m sticking with CW and FT8.


    • Paul Taylor says:

      Hi Jack, firstly, all my transmitters, receivers and transceiver projects use the same script, just different paths through it. So there is only one script. You choose the compiler included code pieces by #defining a project label.

      I have not added RIT as it is not a feature I’ve ever found particularly useful. That depends on your operating modes and preferences. It would be easy enough to add. In the analog world you would have a potentiometer to vary a voltage bias on a character in the oscillator LC circuit and a switch to switch it in or out. In the digital world, a pushbutton would place the dial into RIT mode, fix the tuning rate, and bring up the receiver frequency or the offset on the second line of the display. It’s not there now, but wouldn’t be too difficult to add.

      Would you like some help to do it? If you fork my repository on Github, make the changes, I will merge it with the master.

      Oh, one other minor thing, I’ve been picked up on this before, my script is for the si5351 which is a PLL, not a DDS. So my code is a PLL VFO/Controller, not a DDS VFO/Controller. Good to get your facts straight.

      Enjoy your projects and check in if I can help.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Shack of VK2KMI

Ham Radio Blog of VK2KMI

Ham Historian

A passionate amateur looks at Melbourne history


My journey of repairing and recycling anything I put my hands on that I believe is still useful. Not just hardware, but including software with relevant content and issues in the field of Cyber Security, Vulnerability Scanning and Penetration Testing.

G4YDM Ham-Radio and SWL news

Radio craft, homebrew, QRP/SOTA, AM

Amateur radio experiences with VK1DA

Tj Lab


The Microscopic New Yankee Make Shop

Bits of technology and illogic by WA2MZE

Paul Gacek



This blog is no longer in use!

%d bloggers like this: