Simple 3.3V USB-UART Clone Interface for Yaesu VX-2
People have been making UART cloning interfaces for the single-pin serial on TRRS 3.5 mm plug to Yaesu radios like the VX-2 for years. Unfortunately, those years mean that many people were making RS-232 to TTL converters and waxing poetic about using two or more transistors to implement the level shifting between the ±5 V or more interface and 3.3 V for the radio. Heck, some even implemented a whole zener and PNP linear regulator to ensure a safe pull-up voltage was presented to the radio. But wait, we've got chips that go from USB to right where we need the signal levels…
(Styled as a recipe blog post; skip to the end for the ingredients and assembly steps after the story)
After giving up on a commercial interface that purported to provide a direct USB to Yaesu TRRS that promptly stopped working after cloning the blank configuration off of my VX-2 once, I turned to the available DIY options. Attempting for frugality (I mean, the VX-2 was free to me, I just had to supply aftermarket batteries and antennae) I didn't feel like shelling out for either a molded cable or breakout board for a full FTDI USB-UART implementation. I settled on the low cost option of SparkFun's DEV-14050 at Digikey. You can get two for less than the price of one (legit) FTDI!
SparkFun Serial Basic Breakout - CH340G (DEV-14050 from SparkFun) |
For the other end, I finally got around to using my Tensility 10-02046 that I acquired years ago with the VX-2. (the cable material is awesome, I use a similar cable-only option for my custom headphone cables, but that's another discussion of old projects) Anyway, the white wire corresponds to the first ring on the TRRS which is our desired Yaesu data pin for the radio. A quick check of the powered-on radio shows that there's a ~3.0 V pull-up on the data pin, as expected from something that would use a radio-to-radio passive cloning cable.
Pull-up: check. Single pin data interface: check. UART with 3.3 V RX and push-pull TX: check. Now what goes in the middle?
Obviously we can't just tie TX and RX together directly. That pesky push-pull output will prevent our single wire UART from being able to receive from the radio which is part of the point of this whole setup! It just won't do and we want something simple, here. Any sort of open-drain implementation ends up with us facing an inverter and needing an extra stage or something.
Then started my experimentation for this exercise. Since UART TX idles high, would a resistor between TX and RX work? Looking for random parts pointed me to the bottom of the dead HLG-320H torn down here previously. Soldering the shield of the cable onto the GND pin of a 6-pin header to plug into the USB-UART board, then the white wire to pin 5 and the resistor 4 to 5. Alas, no, a 1k between the pins with the radio on the RX side didn't result in any connection to the radio.
Next, how about a diode from RX to TX and connect the radio bus to RX? Well, the closest source of random diodes was the A quick identification pointed out some SOD-323 devices that weren't marked with reddes starting with "ZD", so probably close enough. Then, success! The VX-2 Commander software loopback test functioned and both CHIRP and VX-2 Commander could read from the radio. Oh, wait, writing… Yeah, cloning to the radio with my nice planned CHIRP memories worked right up until the end where there VX-2 lit up with a simple ERROR on the screen. Cloning back off of it would show that the data got there (99.9%, it seems), since all the memories were there, but the transmission error somewhere in the process meant that nothing was saved upon reboot to normal mode.
What now? I tried 1k and 10k off the power supply in parallel to the diode, but that just resulted in no communication to the radio, even if loopback worked. At this point, my digital engineering expertise finally kicked in and reminded me that voltage thresholds were an important thing. The trusty multimeter said that the salvaged diode (and many of its peers on the board) had a 500-600 mV forward voltage at a low test current. For a 3 V interface, oops, that's probably too much to meet V_IL reliably on the radio!
A new diode was needed. Soon enough, an unrelated project had me with a tiny power Schottky diode: a Toshiba CUS08F30,H3F. Multimeter gave about 140 mV at room temperature (under 100 mV just after soldering, as it happens)! Now that, that's what we need to provide a V_OL from the board, right?
Yup! Successful clone to the VX-2 from CHIRP. With that out of the way, I can consider optimizing the design later.
Final implementation on the polarized pin header. Featuring the remains of the HLG-320H in the background. |
Shopping List
- SparkFun DEV-14050
- Tensility 10-02046 or other TRRS cable to bare wires, you could even salvage the cable to smashed headphones
- Toshiba CUS08F30,H3F or other very low Vf Schottky diode
- 6 pin 0.1" pin strip, optionally with retention latch to polarize it to the board
You'll also need solder and iron, plus tweezers for manipulating your diode on the pin strip.
- Plug the pin strip into the DEV-14050 to establish pin order
- Solder the shield of the cable to the GND pin
- Solder the Schottky diode from pin 5 to pin 4 (cathode towards TX)
- Solder the first ring wire to pin 5
- Mask off the mic and speaker of the cable
- Plug-and-play (Windows 10, at least)
The most obvious improvement is making this permanent. Removing the 6-pin socket from the back of the DEV-14050 and adding the diode plus wire connections directly to the connector pads on the board would reduce the number of moving parts. Some glue on the solder joints to strain relieve the wires and heat shrink tube over the board would firm things up as a single unit. Some additional hot glue to make sure there's gap filler between the large heat shrink and the outer insulation of the cable would be ideal.
Comments
Post a Comment