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()
TRX_FM_2017.grc
Description: application/gnuradio-grc
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
