GNU Radio World

PSK31 Receiver

Decodes a PSK31 QSO from a 40 m recording of 7071 kHz.

Press Load to open this flowgraph in an editor embedded above, then ▶ to run it. Nothing is downloaded until you do.

Open in the full editor ▶ Download the .grc

Blocks used

BlockModuleUsed
VariableGNU Radio3
AGCGNU Radio1
Binary SlicerGNU Radio1
Clock Recovery MMGNU Radio1
Complex To RealGNU Radio1
Costas LoopGNU Radio1
Differential PhasorGNU Radio1
Frequency Xlating FIR FilterGNU Radio1
GR World RecordingGNU Radio1
NoteGNU Radio1
QT GUI Constellation SinkGNU Radio1
QT GUI Waterfall SinkGNU Radio1
Text SinkGNU Radio1
ThrottleGNU Radio1
Varicode Decodergr-ham1

Notes in this flowgraph

Flowgraph source

ham/psk31_receiver.grc
options:
    parameters:
        author: Marc
        copyright: ''
        description: Decodes a PSK31 QSO from a 40 m recording of 7071 kHz.
        generate_options: qt_gui
        id: PSK31_Receiver
        title: PSK31 Receiver
    states:
        coordinate: [10, 10]
        rotation: 0
        state: enabled
blocks:
-   name: psk_offset
    id: variable
    parameters:
        comment: ''
        value: '132'
    states:
        coordinate: [600, 10]
        rotation: 0
        state: enabled
-   name: samp_rate
    id: variable
    parameters:
        comment: ''
        value: '8000'
    states:
        coordinate: [770, 10]
        rotation: 0
        state: enabled
-   name: symbol_rate
    id: variable
    parameters:
        comment: ''
        value: '500'
    states:
        coordinate: [940, 10]
        rotation: 0
        state: enabled
-   name: agc
    id: analog_agc_xx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        gain: '1'
        max_gain: '65536'
        maxoutbuf: '0'
        minoutbuf: '0'
        rate: '0.001'
        reference: '0.1'
        type: complex
    states:
        coordinate: [1120, 210]
        rotation: 0
        state: enabled
-   name: band_waterfall
    id: qtgui_waterfall_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        axislabels: 'True'
        color1: '0'
        comment: ''
        fc: '7071000'
        fftsize: '2048'
        grid: 'False'
        int_max: '0'
        int_min: '-120'
        label1: ''
        legend: 'True'
        maxoutbuf: '0'
        minoutbuf: '0'
        name: 7071 kHz PSK31 watering hole
        samp_rate: samp_rate
        update_time: '0.1'
    states:
        coordinate: [710, 350]
        rotation: 0
        state: enabled
-   name: carrier
    id: digital_costas_loop_cc
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        order: '2'
        use_snr: 'False'
        w: 5*math.pi/100
    states:
        coordinate: [100, 560]
        rotation: 0
        state: enabled
-   name: constellation
    id: qtgui_const_sink_x
    parameters:
        affinity: ''
        alias: ''
        alpha1: '1'
        autoscale: 'False'
        axislabels: 'True'
        color1: '"blue"'
        comment: ''
        grid: 'True'
        label1: ''
        legend: 'True'
        marker1: '0'
        name: Recovered symbols
        size: '512'
        style1: '0'
        tr_chan: '0'
        tr_level: '0'
        tr_mode: qtgui.TRIG_MODE_FREE
        tr_slope: qtgui.TRIG_SLOPE_POS
        tr_tag: ''
        update_time: '0.1'
        width1: '1'
        xmax: '2'
        xmin: '-2'
        ymax: '2'
        ymin: '-2'
    states:
        coordinate: [940, 660]
        rotation: 0
        state: enabled
-   name: differential
    id: digital_diff_phasor_cc
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [940, 560]
        rotation: 0
        state: enabled
-   name: intro
    id: note
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        note: KC3FL (Florida) working XE2BVM (Mexico), 31.25 baud BPSK
    states:
        coordinate: [1120, 10]
        rotation: 0
        state: enabled
-   name: real_part
    id: blocks_complex_to_real
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        vlen: '1'
    states:
        coordinate: [1320, 560]
        rotation: 0
        state: enabled
-   name: slicer
    id: digital_binary_slicer_fb
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [80, 820]
        rotation: 0
        state: enabled
-   name: source19
    id: wasm_gr_world_recording
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        length: '0'
        maxoutbuf: '0'
        minoutbuf: '0'
        offset: '0'
        recording: ham_psk31_7071kHz
        repeat: 'False'
        type: complex
    states:
        coordinate: [10, 190]
        rotation: 0
        state: enabled
-   name: text
    id: wasm_text_sink
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        max_line: '72'
        prefix: '"PSK31: "'
    states:
        coordinate: [630, 820]
        rotation: 0
        state: enabled
-   name: throttle
    id: blocks_throttle2
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        ignoretag: 'True'
        limit: auto
        maximum: '0.1'
        maxoutbuf: '0'
        minoutbuf: '0'
        samples_per_second: samp_rate*10
        type: complex
        vlen: '1'
    states:
        coordinate: [370, 200]
        rotation: 0
        state: enabled
-   name: timing
    id: digital_clock_recovery_mm_xx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        gain_mu: '0.175'
        gain_omega: 0.25*0.175*0.175
        maxoutbuf: '0'
        minoutbuf: '0'
        mu: '0.5'
        omega: symbol_rate/31.25
        omega_relative_limit: '0.005'
        type: complex
    states:
        coordinate: [540, 530]
        rotation: 0
        state: enabled
-   name: tune
    id: freq_xlating_fir_filter_xxx
    parameters:
        affinity: ''
        alias: ''
        center_freq: psk_offset
        comment: ''
        decim: '16'
        maxoutbuf: '0'
        minoutbuf: '0'
        samp_rate: samp_rate
        taps: firdes.low_pass(1, samp_rate, 100, 100)
        type: ccf
    states:
        coordinate: [710, 210]
        rotation: 0
        state: enabled
-   name: varicode
    id: ham_varicode_rx
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [330, 820]
        rotation: 0
        state: enabled
connections:
- [agc, '0', carrier, '0']
- [carrier, '0', timing, '0']
- [differential, '0', real_part, '0']
- [real_part, '0', slicer, '0']
- [slicer, '0', varicode, '0']
- [source19, '0', throttle, '0']
- [throttle, '0', band_waterfall, '0']
- [throttle, '0', tune, '0']
- [timing, '0', constellation, '0']
- [timing, '0', differential, '0']
- [tune, '0', agc, '0']
- [varicode, '0', text, '0']
metadata:
    file_format: 1
    grc_version: 3.11.0.0