Skip to content
VK3HN edited this page Jul 25, 2019 · 9 revisions

Welcome to the Arduino_si5351_VFO_Controller_Keyer wiki!

These pages will help you to understand, reuse or repurpose this Arduino/si5351 VFO/Controller/Keyer script.

Should I try this?

Try this script if you want a fairly complete si5351 PLL VFO, any number of VFOs (default is 10), optional BFO, BFO (passband) tuning, optional CW carrier oscillator (at signal frequency), pushbutton controls, basic rig controls including transmit/receive relay switching, receiver muting, S and relative power metering, a tune button, and a semi-breakin CW keyer with memories.

I have a psychological aversion to menus. Therefore there are none ... all functions are associated with physical (short and long-push) pushbuttons. It also means that some things that you might expect to be configurable (such as the CW memory messages) are hard-coded. I do this for simplicity and to ensure I can cram all the features I like into the Nano's small memory.

Warning, code changes ahead

This script is not parameterized. You will have to change it to get it to do anything useful. It will run up on a Raduino but to use it in a project you will have to set project specific parameters. These are obvious things like your IF, exact BFO frequencies, but also analogRead values to make multiplexed push-buttons work. It is offered as a base for your further customisation.

If you take your copy forward for your particular project it will save you lots of time. A number of radio makers have done this with success.

Hardware

The script is designed to target an Arduino Nano, I2C connected si5351, and a 7044 LCD or I2C connected OLED, wired as per Ashar Farhan's Raduino module. The script will come up with just these parts present, and will generate a VFO at signal frequency plus the Intermediate Frequency. Add an encoder and you can tune the VFO. Add pushbuttons and you get access to the 10 VFOs. Add a paddle socket and you have a CW keyer and keyed carrier generator. And so on.

Support for HFSignals' BiTx and uBiTx?

Although the code targets the Raduino module, it is not designed to run a VU2ESE BiTx40 or uBiTx. You could easily use it to drive a BiTx40, but not a uBiTx, which is not a single conversion architecture.

Libraries you will need

Jason NT7S si5351 library is used. Apart from that, most other libraries are common and easily obtained. Sometimes libraries change and I don't find out about it until someone reports the code not compiling. If this happens, raise an Issue and fix it on a branch.

Origins

Since 2017, I've been building a series of homebrew SSB/CW transceivers and receivers, and I have standardised on the Arduino Nano and si5351 PLL. The script derived from several that were popular at the time, but has been extensively customised to suit my homebrewing abilities and interests.

Support

I answer all email enquiries and will support you to get it working. I won't debug your modified code. This is a hobby project, so while I'm happy to hear that you've tried this script, support is on a 'best efforts' basis.

Updates

I update this script regularly. If you want to take a newer version you will need to re-apply your customisations. If you want to report a bug or feature and you don't want to split and hack the code yourself, leave an Issue here.