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;
- Pavel Milanes Costa, CO7WT, for the ft817 Arduino library work;
- 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.
THIS PROJECT IS A WORK IN PROGRESS – PROCEED BELOW AT YOUR OWN RISK!
ALSO NOTE THIS PROJECT IS IN ACTIVE DEVELOPMENT AND LIKELY TO CHANGE WHILE THIS NOTE REMAINS HERE.
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…
NOTE: I’ve had some possible issues from powering this PCB from the standard FT-817 ACC socket. I have now implemented the VK4GHZ 12V ACC modification on my FT-817 to beef up the power output from this socket and that seems to be working well. It is an aim of future revisions to reduce the current draw of this project so that problem might go away… but at this time it is recommended to perform the VK4GHZ mod.
What work are you 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 (send PCB files off to a manufacturer like JLCPCB or PCBWay) and 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;
- Modify your FT-817. See note above, the recommendation at this time is to perform the VK4GHZ 12V ACC mod to the FT-817 in order to beef up the power output from the ACC socket.
- Code it. The code for the Arduino is a work in progress and it is not the intention to implement every possible function on the FT-817, merely the functions I use. However, once you’ve understood the basic idea of how the functions on the project work you should be able to adapt it to meet your own needs.
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!
My hacky code is isn’t great. Pavel Milanes Costa, CO7WT, has taken some of the ideas here and produced a working library for the FT-817 that includes functions to read and write to the EEPROM. Pavel’s code is clean and readable so this gives a great boost to this project and makes it much easier to write functions for the FT-817.
It is not the intention of this project to write code for every conceivable function on the FT-817, I only need to write code for the functions that I use when I’m working my radio… You need something else? The information on KA7OEI’s page will tell you what commands or bytes/bits you need to manipulate on the radio. Some items are controlled by CAT commands, some are ‘global’ settings on the EEPROM and some are specific to the VFO/band memory slots on the EEPROM. I have implemented functions using each of these types so you should find a similar working function in the sketch/library code and adapt to suit your needs.
My Arduino code for this PCB is still a work in progress but you can view it on my GitHub repo.
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;