Credit up front!
- Clint Turner, KA7OEI, and all his contributors for documenting the FT-817 CAT and EEPROM commands;
- James Buck, VE3BUX, for the FT-857 Arduino library that got this started;
- Michael Sansom, G0POT, for support and putting up with an endless stream of DMs;
- Everyone who puts up tutorials on the Internet allowing us to learn new skills…
I like spending time with my FT-817ND in the great outdoors but it always seems like Yaesu’s choices of functions on the A,B,C buttons has me fiddling around on the tiny front panel when I want to lower power for a tune signal, raise power back up for QSO, switch the CW filter in/out, use the A/B and A=B keys to help me browse around the bands… I just need a couple more buttons! So, I started thinking about adding a small control panel that could be programmed to send a couple of commands to the radio via the CAT port, maybe with a little display alongside some new buttons, effectively adding some new soft-keys. That thought quickly led me to KA7OEI’s amazing work in documenting the FT-817 serial command interface.
It wasn’t long before I was reading the FT-817’s frequency on a small OLED that was lying around the workshop. I then realised the utility of including some of the front panel information in a display that can be more easily read than the radio’s front panel when the rig is on the ground (my normal /P operating position). So, a bit of breadboard prototyping and a couple of KiCad tutorials later, voila:
It seems a lot of people like this idea and I was (easily) persuaded to write a small article on the build for SWLing Post… and that was even picked up by HackADay… fame at last!
This is the page where I’m dropping information on the build if you want to have a go yourself.
Right up front let’s talk about risk and responsibility. Yay!
The intent is to make this information available as a DIY project. That means you’re going to do it yourself, right? So you need to make sure you’re comfortable with the material and you’re able to support yourself as you go. On the plus side this project covers some great topics (microcontrollers, serial data, PCB design…) and there are plenty of Internet tutorials out there to help you learn and grow!
I make no claims that this is the best way to implement this idea. In fact I have very little circuit design experience and my software process is limited to copy/paste/fix/repeat… so there is plenty of scope here for modification and improvement (and my “to do” list is below)!
Most importantly, the documented CAT commands for the FT-817 are pretty limited in what they can do. The main feature I wanted to control on my FT-817 (switching CW filter) requires use of the undocumented EEPROM commands. As KA7OEI wisely points out (at least six times!) incorrect manipulation of the EEPROM may result in an unusable radio and require you to re-enter all of the 76 factory alignment values (which you obviously take the time to record for your individual radio before you try this!). Worst case scenario might be bricking your FT-817. If I did that to mine I would shed a tear, think about the experience and then buy a KX2, I’d get over it. If you don’t feel the same, now is probably the right time to stop reading…
What work am I going to have to do?
- Review the KA7OEI FT-817 commands page (http://www.ka7oei.com/ft817_meow.html). Have a think about what commands you want to work with and how those commands work with the FT-817 interface – you’re probably going to be modifying the Arduino code to suit your needs;
- Review the schematic and PCB layout. Maybe you want to use a different display or a different layout of buttons. Maybe you want to reduce the current consumption. You can redesign it to meet your needs!
- If you’re thinking of adding new features to the device, it might be wise to get the components in and experiment with the circuit on breadboard first. That way you can see if the microcontroller has enough memory for your modified code before you solder one to a PCB. Right now, the Arduino Nano is looking pretty full so this is a real possibility, see notes on choice of microcontroller below;
- Order a PCB (I might consider holding a small stock of these? But I do hate going to the post office…), buy some components. The Bill Of Materials (BOM) will show you what hardware I’m using;
- Build it. Some of these components are surface-mount but easy sizes so this is a great opportunity to gain some experience if you haven’t already. Some of the components may have minimum order quantities from your favourite supplier so this project might work better as a small group build;
- Code it. Given the health warnings above, my Arduino code isn’t safe for public consumption at this time. The schematic, BOM and board files are here for the hardware but you’re on your own for the software right now…
Bill Of Materials
There’s room for a little freedom on the PCB that I’ve made… I placed a couple of rows of headers between the Arduino and display such that you can place jumper wires or resistors to match the pins to your particular display module. I used this Nokia-style module so the pin placement matches this but allows for resistors to be inserted to lower the signals to 3V3 levels. My intention with the headers was that I could convert to a 5V display if I found something else that worked well in sunlight.
Here are the KiCad files I made for the schematic and PCB layout. That should be all you need to re-create the PCB using KiCad which I found to be an excellent alternative to Eagle. From these you can generate your own gerber files or whatever you need to have the PCB made (different fabricators may have different tolerances on the PCB design rules so I leave this part up to you!). This excellent tutorial was all the info I needed to make this PCB so follow along and it will tell you everything you need to know about KiCad – enjoy!
Wait… where’s the Arduino code? Not safe for public consumption yet!
My hacky code is barely readable and, given the health warnings above, I’m not going to release it until it’s had some help from someone that knows what they’re doing. But fear not, see below for some tutorials to get you started. There are also a couple of FT-817 and FT-857 libraries for Arduino out there on the Internet that you should be able to adapt to KA7OEI’s reference on FT-817 commands.
Tutorials I followed
The main tutorials I followed on the Internet to get this thing going are listed below. These should give you a good start on learning what you need to know…
- Get an OLED display running on Arduino
- Drawing and printing on OLED displays
- Nokia display with Arduino
- Arduino timer interrupts
- Using the B0505S-1W and ADUM1201 for DC and data isolation
- KiCAD schematic and PCB tutorial
- VE3BUX Arduino library for FT-857
To Do list
- Consider reducing power consumption…
- Current draw of the “Rev 1” version (Arduino Nano, Nokia 5110 display, ADUM1201, B05050, AP1117 voltage reg.) is about 39 mA @ 10.1 V from the FT-817’s ACC “13.8V” pin;
- This could be reduced by using a lower power Arduino (e.g. Pro Mini) and ditching the voltage regulator for a DC-DC converter. The DC-DC converter part probably needs a bit of skill in the design to make sure it doesn’t produce RFI.
- PCB rework:
- Move PAGE and SHIFT buttons to make room for Nokia display corners (I had to snip and file off the corners of my display PCB);
- Move Q1 and R1 further away from J2 to make room for some helpful pin labels on J2 (RST, DIN, 3V3 etc.);
- Centre the Nokia display between the two button rows;
- Add a large white block of silkscreen to write on each board serial no etc.
- Think about C1 capacitor… what’s a better, more available value? Electrolytic?
- Implement Tx Meter monitoring (mainly for SWR warning purposes);
- Status of KYR, BK, NAR to be shown as WHITE|BLACK text label when ON and vice versa… useful but feels like a lot of code and data traffic required, might not fit on the Arduino Nano;