- Notifications
You must be signed in to change notification settings - Fork7
4x1md/ft817_cat_python
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Python implementation of CAT system for Yaesu FT-817ND.
According to Yaesu FT-817ND's manual, the CAT System allows the transceiver to be controlled by a personal computer. The purpose of this project is to learn this system for later implementing it using an AVR microcontroller.
The program is written in Python and usesserial
library to connect to the transceiver. It runs as console application in text mode.
- This program is provided as is and I'm not responsible for any damage it may cause.
- Before using this program make sure you completely understand what you are doing.
- Before sending any commands to your transceiver make a backup copy of factory calibration settings in service menu. There aresources which state that some commands may completely erase it. This may result in need to send the transceiver to Yaesu for realignment.
Yaesu FT-817ND's is connected to PC through a COM port. I used one of many USB to COM boards available on eBay and AliExpress for a couple of dollars. The port is connected toTXD
andRXD
pins of theACC
connector located on the rear panel of the transceiver. Refer toYaesu FT-817ND's Operation Manual for more details.
Programming cable can also be used and will work fine with this program.
The program is implemented asFT817
class with following methods:
__init__(self, serial_port, serial_speed, serial_stopbits)
: constructor which starts serial connection and resets transceiver state variablesself._freq
,self._mode
,self._squelch
andself._s_meter
.
read_frequency(self)
: reads frequency and mode data and stores it inself._freq
andself._mode
variables.
read_rx_status(self)
: reads receiver status (S-level, squelch state, CTCSS/DCS code match and discriminator centering) and stores S-level and squelch state inself._s_meter
andself._squelch
variables.
get_s_meter_string(self, s_meter)
: generates S-meter string for second line of output.
get_trx_state_string(self)
: generates two lines of text which include frequency, modulation, squelch level and S-meter data.
loop(self, samples_per_sec)
: reads data from the transceiver as many times per second as defined insamples_per_sec
variable.
FT817
class contains the following settings and constants:
SERIAL_SPEED
,SERIAL_STOPBITS
: COM port speed and stopbits accordingly. By default FT-817 CAT interface is set to 4800 bps with two stop bits.
SERIAL_TIMEOUT
: sets COM port reading timeout to avoid program blocking if the transceiver is not connected to the port or is turned off.
CMD_READ_FREQ
,CMD_READ_RX_STATUS
: byte sequences to send to the trasceiver to read frequency and RX status accordingly.
SERIAL_PORT
: COM port name where FT-817ND transceiver is connected.
SAMPLES_PER_SEC
: number of times per second to query the transceiver.
Run thetrx_monitor.py
file in Python interpreter.
The output consists of two lines which are pretty self explanatory.
43872500Hz FM SQL: OFF
S3+00 |||............
The first line shows frequency, mode (AM, FM, SSB, PKT etc.) and squelch state. The second line is S-Meter which shows S-level and dB over S9 and a simple scale where 15 dots correspond to S0 and 15 pipes correspond to S9+20dB.
Program output in console with no signal and squelch on (left) and with squelch off (right):
You are more than welcome to contact me with any questions, suggestions or propositions regarding this project. You can:
- Visitmy QRZ.COM page
- Visitmy Facebook profile
- 📧 Write me an email to iosaaris =at= gmail dot com
If you like this project, or found here some useful information and want to say thanks, or encourage me to do more, you can buy me a coffee!
You can aslo make a donation with PayPal:
73 de 4X1MD ex 4X5DM