Arduino USB WSE Hardware Controller
Linrad
is a very powerful SDR that can be used with a variety of hardware.
I have used it with a superb receiver designed and built by Leif,
SM5BSZ, the creator of Linrad. Leif's receiver hardware is
known as the WSE or "Weak Signal Equipment" receiver.
The WSE hardware was designed to communicate with the computer via the
parallel port. Parallel ports have become less common in the
years since the WSE was introduced, and numerous users have reported
problems with using the parallel port with a wide variety of hardware
and software since the introduction of Windows 10.
I have tried several parallel port cards said to work with Windows 10
that have failed to work properly.
Thus I decided to make an Arduino adapter that would act as an interface between a modern PC and the parallel control port on the WSE hardware, allowing the
WSE hardware to be controlled via a USB port.
In order to accomplish this I wrote some code into a dedicated wsusers_hwaredriver.c file to be compiled with Linrad, and of course
also wrote a small Arduino sketch file to run on an
Arduino Demilamove or Uno.
With this combination, the Arduino receives serial data over the USB port
from Linrad and then sends this data to the WSE hardware in the
form the WSE requires, thus eliminating the need for a parallel port.
Not only does this "future-proof" the WSE against the forthcoming
unavailability of parallel ports, but with the current price for
generic Arduino Uno R3s at $3.46 including shipping, the Arduino
solution is much cheaper than buying a parallel port card. Here I am using an
Arduino Duemilanove just because I had several in the junk box, making my cost for this project zero.
There are no "gotchas" to this project. The Linrad file is
here. This file just needs to be renamed to wusers_hwaredriver.c for usage under Windows and
then to be placed in the Linrad source code directory before Linrad is compiled. This interface will not work under Linux.
There also needs to be a text file named "comportfile" (with no file extension) in the Linrad compile directory, containing values for the COM port number of the USB serial port, the USB serial port baudrate,
the number of stop bits, and serial port RTS mode, with each value being placed on a separate line. Without this file, Linrad doesn't know where to send the WSE instructions.
An example of that file is here.
The
Arduino sketch file is here.
Pinouts on
the DB25 from the Arduino to the WSE are the same as when the WSE is used with Linrad's default drive routines:
SELECT (RX10700) = pin 6
SELECT (RX70) = pin 7
SELECT (RX144) = pin 5
SELECT (freq,RXHFA)= pin 3
SELECT (gain,RXHFA)= pin 2
DATA = pin 17
CLOCK = pin 1
DC ground = pin 23
There is additional information on these connections on Leif's website here:
The Arduino Sketch file as written uses the following pinouts on the
Arduino. You just use the same pin numbers regardless of what variety of Arduino you use, or the sketch will not work:
SELECT(gain,RXHFA) = pin 3
SELECT(freq,RXHFA) = pin 4
SELECT(RX144) = pin5
SELECT(RX10700) = pin 6
SELECT(RX70) = pin 7
CLOCK = pin 8
DATA = pin 9
DC ground = DC gnd
The Arduino is powered via the USB port.
When setting up Linrad, select the "WSE" hardware and then accept the default choices of 888 and 10 for the parameters that are requested after you do this.
Copyright 1997-2016 COPYRIGHT Roger Rehr W3SZ. All Rights Reserved
Brought to you by
the folks at W3SZ