Skip to main content

GNU Radio CW filter

An alternative to the Collins 300 Hz CW filter for the FT817 (well not really - that combination is excellent for CW and much better performance than many more expensive radios - but this is an excellent sw alternative) is this simple GNU Radio Python application which uses the Kaiser CW bandpass FIR filter below. The audio output is connected to the microphone input of a Ubuntu 11.10, 64bit OS on a Toshiba Satellite L650 laptop. Output is from the laptop headphone socket. Python code is as follows:

#!/usr/bin/env python

#------------------------------------------------------------------------------------
# Program uses the (previous) Python Bandpass filter
# module to provide the Kaiser bandpass filter taps.
# Mic input, cw filter, gain adjust and headphone   
# blocks are cascaded.                              
#                                                   
# You should kill this prog with ^c (not ^z) OR...  
# kill the terminal session                         
#-----------------------------------------------------------------------------------


from gnuradio import gr
from gnuradio import audio
from bpf_class import Bandpass
 
class cw_filter(gr.top_block):
    def __init__(self):
        gr.top_block.__init__(self)
 
        sample_rate = 44100
        kaiser_bpf = Bandpass()
        cw_flr = gr.fir_filter_fff(1, kaiser_bpf.taps)

        audio_mic = audio.source(sample_rate, "plughw:0,0")
        amp = gr.multiply_const_ff(0.5)
        dst = audio.sink (sample_rate, "")

        self.connect (audio_mic, cw_flr, amp, dst)

if __name__ == '__main__':
    try:
        cw_filter().run()
    except [[KeyboardInterrupt]]:
        pass

Comments

Popular posts from this blog

FT 817 Power Amplifier

This very simple 2 Fet power amplifier easily achieves 250W output with an FT817 5W drive. The key design details as follows: 3:1 broadband input transformer matches the 5.5 ohm gate load resistor (4 x 22 ohms in parallel) to the 50 ohms required by the FT817 . The 4:1 output broadband transformer presents 3 ohms (16:1 impedance ratio) to the balanced HEXFET pair each mounted on a 3mm copper heat spreader which is insulated from the 2 1w/degC heatsinks. These are blown cool by a fan underneath. The power supply required is 28v at 30 amps. The amp is around 50% efficient with a standing 750mAmp temperature compensated bias. An IC 703, with 10watts output will drive the output to around 400 watts. The output filter shown is a 5 pole topband filter with T130-2 torroids and 400v silver mica caps. Peak output voltage on 160 metres with 5 watts drive is 160v or 320v p-p in 50 ohms equating to 250watts. This is slightly higher than the reading on the 3kw MFJ power meter. The inline F...

Splunk Cheat Sheet (Linux)

1. set root's password:  sudo su passwd root Enter new UNIX password: < new_root_password > Retype new UNIX password: < new_root_password > passwd: password updated successfully # su - 2. Remove any existing Splunk directories & create user etc: # rm -rf /opt/splunkforwarder # userdel -r splunk # this will remove as above if user splunk's home directory # groupadd siem # useradd -g siem -s /bin/bash -d /home/siem -m siem # vi ~/.profile # chage -I -1 -m -0 -M -99999 -E -1 siem If above fails because of multiple passwd fails: # pam_tally --reset check with #chage -l siem # uname -a # check OS version # dpkg -i splunk-4.3.1...........intel.deb # chown -R siem:siem /opt/splunk # su - siem : $SPLUNK_HOME/bin/splunk start --accept-license : $SPLUNK_HOME/bin/splunk edit user admin -password newpassword -role admin -auth admin:changeme 3. vi ~/.profile (as follows) (OR .bash_profile) # ~/.profile: executed by the command interpreter for log...
Beautiful Soup HTML parsing The following Python code fetches the specific windspeed web page and extracts the timestamp, average windspeed, direction, gust speed and writes out data to a date stamped file named say /home/user/wind_data/windspeed_date(2015-04-21-12).txt. Schedule a cron job to run this every day at midnight say. The windspeed file can be selected for a particular day and processed by graph.py.  #!/usr/bin/python import os import requests import time from bs4 import BeautifulSoup date_stamp = time.strftime('%Y-%m-%d-%H',(time.localtime(time.time()))) outfile = os.path.join(os.path.expanduser('~'), 'wind_data', "windspeed_%s.txt"%date_stamp) f = open(outfile,'w') list = [] r = requests.get("http://xxxxx.wwww.yyyyy") soup = BeautifulSoup(r.content) table = soup.find("table", {"id":"grid"}) for line in table.findAll('tr'): for l in line.findAll('td'): ...