I could have gone for the Maestro but I am an inveterate experimenter and derive great satisfaction out of devising mixed hardware/software solutions to awkward problems. So I was drawn to explore the Flex Radio Application Programming Interface (API) in more detail.
Very quickly I came across Endo, IW7DMH's excellent web site. Wow! Endo has done more or less exactly what I had been thinking of. Not only that but he has written a large body of public domain software to present the Flex API as an interface to Arduino-based processors. A sort of an API on top of an API, if you like. I have done quite a lot of work with Arduinos in the past, so this seems perfect.
I have a couple of Arduino processors kicking around the place in need of a project, so I started writing some code to get an idea of how Endo's API on an API works. It turns out to be quite straightforward and even my rusty C skills soon produced results. Next, I started thinking about the major problem areas for the hardware and quickly came up against the need for high quality high resolution rotary encoders for the VFOs. It's possible to spend a lot of money but I soon found these at a very respectable price. A few days later they'd arrived and I was off writing code again!
By now the lack of a Flex radio was starting to become something of an issue. Martin Lynch came to the rescue in exchanged for a large wad of used notes (well... a severe dent in my credit card, to be more accurate) and less than 18 hours later I was unwrapping my new Flex 6500. Within an hour of switching it on I had one VFO control working (sort of - but it proved the concept). I might be the only radio amateur ever whose immediate reaction to the arrival of a new radio is to start writing software for it!
|A snippet of Arduino code|
|I think this is what they call a lash-up|
The other Arduino handles the boring stuff of providing connectivity to all the encoders, switches, LEDs and so on that will festoon the front panel of my controller. The two Arduinos communicate with one-another using serial I/O and a simple protocol than I have devised to keep data transfers as short as possible. All this is working well.
So things are coming along quite nicely. I feel that I am nearing the proof of concept point now, so it's time to start thinking about panel layouts and other implementation details.