Dear all

I've been testing an FM tranceptor over an Ettus E310, and after 10 or 15
seconds i get UUUUU in the screen, maybe some of my parameters are wrong.

When i'm transmitting audio fron a wav file only, the undersampling never
happends, it only ocurs when i add the audio source block.

I'm attaching the grc file.

BR
Gabriel Pechiarovich Salas
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
##################################################
# GNU Radio Python Flow Graph
# Title: Transceptor FM
# Author: DMR_Marcianito100%
# Generated: Sat Apr 22 12:03:11 2017
##################################################

from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import filter
from gnuradio import gr
from gnuradio import uhd
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
import time


class TRX__VOZ_2017_r02(gr.top_block):

    def __init__(self, audio2=15, faudio1=700, faudio2=1300, rxfreq=467.7125e6, rxgain=0.5, sel=0, txfreq=467.7125e6, txgain=0.5, umbral=-90, audio1=1):
        gr.top_block.__init__(self, "Transceptor FM")

        ##################################################
        # Parameters
        ##################################################
        self.audio2 = audio2
        self.faudio1 = faudio1
        self.faudio2 = faudio2
        self.rxfreq = rxfreq
        self.rxgain = rxgain
        self.sel = sel
        self.txfreq = txfreq
        self.txgain = txgain
        self.umbral = umbral
        self.audio1 = audio1

        ##################################################
        # Variables
        ##################################################
        self.audio_rate = audio_rate = 32000

        ##################################################
        # Blocks
        ##################################################
        self.usrp_simple_sink_x_0 = uhd.usrp_sink(
        	",".join(("", "")),
        	uhd.stream_args(
        		cpu_format="fc32",
        		channels=range(1),
        	),
        )
        self.usrp_simple_sink_x_0.set_samp_rate(audio_rate*10)
        self.usrp_simple_sink_x_0.set_center_freq(txfreq, 0)
        self.usrp_simple_sink_x_0.set_normalized_gain(txgain, 0)
        self.usrp_simple_sink_x_0.set_antenna("TX/RX", 0)
        self.uhd_usrp_source_0 = uhd.usrp_source(
        	",".join(("", "")),
        	uhd.stream_args(
        		cpu_format="fc32",
        		channels=range(1),
        	),
        )
        self.uhd_usrp_source_0.set_samp_rate(audio_rate*10)
        self.uhd_usrp_source_0.set_center_freq(rxfreq, 0)
        self.uhd_usrp_source_0.set_normalized_gain(rxgain, 0)
        self.uhd_usrp_source_0.set_antenna("RX2", 0)
        self.low_filter = filter.fir_filter_fff(1, firdes.low_pass(
        	1, audio_rate, 4e3, 1e3, firdes.WIN_HAMMING, 6.76))
        self.blocks_wavfile_source_0 = blocks.wavfile_source("/home/root/Queen_-_Killer_Queen.wav", True)
        self.blocks_multiply_const_vxx_1_0 = blocks.multiply_const_vff((0.2, ))
        self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vff((0.8, ))
        self.blocks_multiply_const_vxx_0_0_0 = blocks.multiply_const_vff((audio1, ))
        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((audio2*8, ))
        self.blocks_add_xx_0 = blocks.add_vff(1)
        self.blks_nbfm_tx_0 = analog.nbfm_tx(
        	audio_rate=audio_rate,
        	quad_rate=audio_rate*10,
        	tau=75e-6,
        	max_dev=2500,
                )
        self.audio_source_0 = audio.source(32000, "", True)
        self.audio_sink_0 = audio.sink(32000, "", True)
        self.analog_simple_squelch_cc_0 = analog.simple_squelch_cc(umbral, 1)
        self.analog_nbfm_rx_0 = analog.nbfm_rx(
        	audio_rate=audio_rate,
        	quad_rate=audio_rate*10,
        	tau=75e-6,
        	max_dev=2500,
          )
        self.analog_fm_preemph_0 = analog.fm_preemph(fs=32000, tau=75e-6)
        self.analog_fm_deemph_0 = analog.fm_deemph(fs=audio_rate, tau=75e-6)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_fm_deemph_0, 0), (self.blocks_multiply_const_vxx_0, 0))    
        self.connect((self.analog_fm_preemph_0, 0), (self.blocks_multiply_const_vxx_0_0_0, 0))    
        self.connect((self.analog_nbfm_rx_0, 0), (self.analog_fm_deemph_0, 0))    
        self.connect((self.analog_simple_squelch_cc_0, 0), (self.analog_nbfm_rx_0, 0))    
        self.connect((self.audio_source_0, 0), (self.blocks_multiply_const_vxx_1, 0))    
        self.connect((self.blks_nbfm_tx_0, 0), (self.usrp_simple_sink_x_0, 0))    
        self.connect((self.blocks_add_xx_0, 0), (self.analog_fm_preemph_0, 0))    
        self.connect((self.blocks_multiply_const_vxx_0, 0), (self.audio_sink_0, 0))    
        self.connect((self.blocks_multiply_const_vxx_0_0_0, 0), (self.low_filter, 0))    
        self.connect((self.blocks_multiply_const_vxx_1, 0), (self.blocks_add_xx_0, 0))    
        self.connect((self.blocks_multiply_const_vxx_1_0, 0), (self.blocks_add_xx_0, 1))    
        self.connect((self.blocks_wavfile_source_0, 0), (self.blocks_multiply_const_vxx_1_0, 0))    
        self.connect((self.low_filter, 0), (self.blks_nbfm_tx_0, 0))    
        self.connect((self.uhd_usrp_source_0, 0), (self.analog_simple_squelch_cc_0, 0))    

    def get_audio2(self):
        return self.audio2

    def set_audio2(self, audio2):
        self.audio2 = audio2
        self.blocks_multiply_const_vxx_0.set_k((self.audio2*8, ))

    def get_faudio1(self):
        return self.faudio1

    def set_faudio1(self, faudio1):
        self.faudio1 = faudio1

    def get_faudio2(self):
        return self.faudio2

    def set_faudio2(self, faudio2):
        self.faudio2 = faudio2

    def get_rxfreq(self):
        return self.rxfreq

    def set_rxfreq(self, rxfreq):
        self.rxfreq = rxfreq
        self.uhd_usrp_source_0.set_center_freq(self.rxfreq, 0)

    def get_rxgain(self):
        return self.rxgain

    def set_rxgain(self, rxgain):
        self.rxgain = rxgain
        self.uhd_usrp_source_0.set_normalized_gain(self.rxgain, 0)
        	

    def get_sel(self):
        return self.sel

    def set_sel(self, sel):
        self.sel = sel

    def get_txfreq(self):
        return self.txfreq

    def set_txfreq(self, txfreq):
        self.txfreq = txfreq
        self.usrp_simple_sink_x_0.set_center_freq(self.txfreq, 0)

    def get_txgain(self):
        return self.txgain

    def set_txgain(self, txgain):
        self.txgain = txgain
        self.usrp_simple_sink_x_0.set_normalized_gain(self.txgain, 0)
        	

    def get_umbral(self):
        return self.umbral

    def set_umbral(self, umbral):
        self.umbral = umbral
        self.analog_simple_squelch_cc_0.set_threshold(self.umbral)

    def get_audio1(self):
        return self.audio1

    def set_audio1(self, audio1):
        self.audio1 = audio1
        self.blocks_multiply_const_vxx_0_0_0.set_k((self.audio1, ))

    def get_audio_rate(self):
        return self.audio_rate

    def set_audio_rate(self, audio_rate):
        self.audio_rate = audio_rate
        self.low_filter.set_taps(firdes.low_pass(1, self.audio_rate, 4e3, 1e3, firdes.WIN_HAMMING, 6.76))
        self.uhd_usrp_source_0.set_samp_rate(self.audio_rate*10)
        self.usrp_simple_sink_x_0.set_samp_rate(self.audio_rate*10)


def argument_parser():
    parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
    parser.add_option(
        "-v", "--audio2", dest="audio2", type="eng_float", default=eng_notation.num_to_str(15),
        help="Set Ganancia parlante [default=%default]")
    parser.add_option(
        "-a", "--faudio1", dest="faudio1", type="eng_float", default=eng_notation.num_to_str(700),
        help="Set Frecuencia de audio 1 [default=%default]")
    parser.add_option(
        "-b", "--faudio2", dest="faudio2", type="eng_float", default=eng_notation.num_to_str(1300),
        help="Set Frecuencia de audio 2 [default=%default]")
    parser.add_option(
        "-r", "--rxfreq", dest="rxfreq", type="eng_float", default=eng_notation.num_to_str(467.7125e6),
        help="Set Frec. de  Recepcion [default=%default]")
    parser.add_option(
        "-G", "--rxgain", dest="rxgain", type="eng_float", default=eng_notation.num_to_str(0.5),
        help="Set Ganancia de RF Recepcion [default=%default]")
    parser.add_option(
        "-s", "--sel", dest="sel", type="intx", default=0,
        help="Set Selector [default=%default]")
    parser.add_option(
        "-t", "--txfreq", dest="txfreq", type="eng_float", default=eng_notation.num_to_str(467.7125e6),
        help="Set Frec. de  Transmision [default=%default]")
    parser.add_option(
        "-g", "--txgain", dest="txgain", type="eng_float", default=eng_notation.num_to_str(0.5),
        help="Set Ganancia de RF Transmision [default=%default]")
    parser.add_option(
        "-u", "--umbral", dest="umbral", type="eng_float", default=eng_notation.num_to_str(-90),
        help="Set Umbral [default=%default]")
    parser.add_option(
        "-m", "--audio1", dest="audio1", type="eng_float", default=eng_notation.num_to_str(1),
        help="Set Ganancia microfono [default=%default]")
    return parser


def main(top_block_cls=TRX__VOZ_2017_r02, options=None):
    if options is None:
        options, _ = argument_parser().parse_args()

    tb = top_block_cls(audio2=options.audio2, faudio1=options.faudio1, faudio2=options.faudio2, rxfreq=options.rxfreq, rxgain=options.rxgain, sel=options.sel, txfreq=options.txfreq, txgain=options.txgain, umbral=options.umbral, audio1=options.audio1)
    tb.start()
    try:
        raw_input('Press Enter to quit: ')
    except EOFError:
        pass
    tb.stop()
    tb.wait()


if __name__ == '__main__':
    main()

Attachment: TRX_FM_2017.grc
Description: application/gnuradio-grc

_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to