Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Adalm Pluto, PlutoSDR u.a.
#21
Guten Tag.

Da ich auch nach längerer Suche keine Möglichkeit gefunden habe in GnuRadio Untermodule zu erstellen um den Sender übersichtlicher zu gestalten, habe ich mich an ein Neudesign gewagt. Durch Neuplatzierung einiger Blöcke ist das Sendeprogramm sogar noch etwas sparsamer im Umgang mit dem Prozessor.  Ich denke jetzt ist das ganze auch übersichtlicher gestaltet.

   

Links im Bild ist die MPX-Signalerzeugung im Basisband zu sehen. Es sind 5 UKW-Stationen die dann im rechten Teil um eine frei einstellbare Mittenfrequenz abgelegt werden. Den Kanalabstand zur Mittenfrequenz kann man in den Signalgeneratorblöcken festlegen. Das aus vielen UKW-Stationen zusammengebaute Basisband wird mit dem Signalblock PlutoSDRSink über USB zum Adalm Pluto übertragen und ausgesendet. 

   

Ich habe zunächst einen Adapter SMA auf F-Buchse, einen zusätzlichen Bandpass und eine Teleskopantenne an den Pluto angeschlossen und die Sendeleistung so geregelt das die Stationen nur auf dem eigenen Grundstück hörbar waren. Im Spektrum sind auch keine Oberwellen auszumachen die durch Grenzwertverletzung eine Störung anderer Frequenzbereiche und Grundstücke verursachen würden. Leistungsmäßig bin ich hier im mW-Bereich, mehr als die päbstlich festgelegten 50nW, aber halt kontrolliert in der Reichweite. 
Das hat also schon sehr gut funktioniert. Die Tuner habe ich von allen TAD getrennt und auf die Endstücken in jeden Raum einen UKW-Dipol angesteckt. Damit empfange ich neben dem sowieso vorhandenen lokalen UKW-Rundfunk in den Lücken auch meine eigenerzeugten Stationen. Ich denke das wäre eine praxistaugliche Lösung und man umgeht das Docsis3.1 Problem so generell. 

Den von GNU-Radio aus dem Diagramm erzeugten Programmcode meines 5-UKW-Stationen Senders hänge ich mal an. 
Man braucht am Modulationsrechner also nur den Adalm Pluto anstecken und das erzeugte Pythonprogramm aufrufen.
Das Modulationssignal wird von fünf vlc Programmen mit unterschiedlichen Internetradioadressen in die Dateien fifo1 bis fifo5 gestreamt.  Diese sind jeweils 128 MB groß und puffern somit einige Sekunden lang unkomprimiertes 2k-Audio. Wenn jemand mehr als 5 Kanäle benötigt, braucht er nur das Signaldiagramm erweitern und von GNU-Radio ein neues Pythonprogramm erstellen lassen. Mein alter Laptop der als Signalquelle für das Adalm SDR herhält schafft vom Prozesser her die Erzeugung von 9 UKW-Sendern. Danach fängt die Wiedergabe an zu stottern. Noch mehr Sender benötigen also einen besseren PC oder einen zweiten PC und Adalm Pluto. Der Pluto ist gerade für 132 Euro bei mouser.de zu bekommen, die Lieferzeit aus den USA ist sehr kurz. 2-3 Tage. Zoll fällt nicht an, da Niederlassung in Deutschland ist. 

PHP-Code:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
##################################################
# GNU Radio Python Flow Graph
# Title: Pluto Multiple Stereofm Tx
# Generated: Thu Dec 10 09:50:22 2020
##################################################


if __name__ == '__main__':
 
   import ctypes
    import sys
    if sys
.platform.startswith('linux'):
 
       try:
 
           x11 ctypes.cdll.LoadLibrary('libX11.so')
 
           x11.XInitThreads()
 
       except:
 
           print "Warning: failed to XInitThreads()"

from gnuradio import analog
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import filter
from gnuradio import gr
from gnuradio import iio
from gnuradio import wxgui
from gnuradio
.eng_option import eng_option
from gnuradio
.fft import window
from gnuradio
.filter import firdes
from gnuradio
.wxgui import fftsink2
from gnuradio
.wxgui import forms
from gnuradio
.wxgui import waterfallsink2
from grc_gnuradio import wxgui 
as grc_wxgui
from optparse import OptionParser
import wx


class pluto_multiple_stereoFM_tx(grc_wxgui.top_block_gui):

 
   def __init__(self):
 
       grc_wxgui.top_block_gui.__init__(selftitle="Pluto Multiple Stereofm Tx")
 
       _icon_path "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png"
 
       self.SetIcon(wx.Icon(_icon_pathwx.BITMAP_TYPE_ANY))

 
       ##################################################
 
       # Variables
 
       ##################################################
 
       self.samp_rate samp_rate 44100
        self
.Sendefrequenz_0 Sendefrequenz_0 88600000
        self
.Pilot_Amplitude Pilot_Amplitude 0.1
        self
.Amplitude38kHz Amplitude38kHz 0.1

        
##################################################
 
       # Blocks
 
       ##################################################
 
       _Sendefrequenz_0_sizer wx.BoxSizer(wx.VERTICAL)
 
       self._Sendefrequenz_0_text_box forms.text_box(
 
        parent=self.GetWin(),
 
        sizer=_Sendefrequenz_0_sizer,
 
        value=self.Sendefrequenz_0,
 
        callback=self.set_Sendefrequenz_0,
 
        label='Sender_Basisband_Mittenfrequenz',
 
        converter=forms.float_converter(),
 
        proportion=0,
 
       )
 
       self._Sendefrequenz_0_slider forms.slider(
 
        parent=self.GetWin(),
 
        sizer=_Sendefrequenz_0_sizer,
 
        value=self.Sendefrequenz_0,
 
        callback=self.set_Sendefrequenz_0,
 
        minimum=87500000,
 
        maximum=108000000,
 
        num_steps=100,
 
        style=wx.SL_HORIZONTAL,
 
        cast=float,
 
        proportion=1,
 
       )
 
       self.Add(_Sendefrequenz_0_sizer)
 
       _Pilot_Amplitude_sizer wx.BoxSizer(wx.VERTICAL)
 
       self._Pilot_Amplitude_text_box forms.text_box(
 
        parent=self.GetWin(),
 
        sizer=_Pilot_Amplitude_sizer,
 
        value=self.Pilot_Amplitude,
 
        callback=self.set_Pilot_Amplitude,
 
        label='Pilot_Amplitude',
 
        converter=forms.float_converter(),
 
        proportion=0,
 
       )
 
       self._Pilot_Amplitude_slider forms.slider(
 
        parent=self.GetWin(),
 
        sizer=_Pilot_Amplitude_sizer,
 
        value=self.Pilot_Amplitude,
 
        callback=self.set_Pilot_Amplitude,
 
        minimum=0,
 
        maximum=1,
 
        num_steps=100,
 
        style=wx.SL_HORIZONTAL,
 
        cast=float,
 
        proportion=1,
 
       )
 
       self.Add(_Pilot_Amplitude_sizer)
 
       _Amplitude38kHz_sizer wx.BoxSizer(wx.VERTICAL)
 
       self._Amplitude38kHz_text_box forms.text_box(
 
        parent=self.GetWin(),
 
        sizer=_Amplitude38kHz_sizer,
 
        value=self.Amplitude38kHz,
 
        callback=self.set_Amplitude38kHz,
 
        label='Amplitude38kHz',
 
        converter=forms.float_converter(),
 
        proportion=0,
 
       )
 
       self._Amplitude38kHz_slider forms.slider(
 
        parent=self.GetWin(),
 
        sizer=_Amplitude38kHz_sizer,
 
        value=self.Amplitude38kHz,
 
        callback=self.set_Amplitude38kHz,
 
        minimum=0,
 
        maximum=1,
 
        num_steps=100,
 
        style=wx.SL_HORIZONTAL,
 
        cast=float,
 
        proportion=1,
 
       )
 
       self.Add(_Amplitude38kHz_sizer)
 
       self.wxgui_waterfallsink2_0 waterfallsink2.waterfall_sink_c(
 
        self.GetWin(),
 
        baseband_freq=Sendefrequenz_0,
 
        dynamic_range=100,
 
        ref_level=0,
 
        ref_scale=2.0,
 
        sample_rate=2084000,
 
        fft_size=1024,
 
        fft_rate=15,
 
        average=False,
 
        avg_alpha=None,
 
        title='Waterfall Plot',
 
       )
 
       self.Add(self.wxgui_waterfallsink2_0.win)
 
       self.wxgui_fftsink2_1 fftsink2.fft_sink_c(
 
        self.GetWin(),
 
        baseband_freq=Sendefrequenz_0,
 
        y_per_div=10,
 
        y_divs=10,
 
        ref_level=0,
 
        ref_scale=2.0,
 
        sample_rate=2084000,
 
        fft_size=1024,
 
        fft_rate=15,
 
        average=False,
 
        avg_alpha=None,
 
        title='FFT Plot',
 
        peak_hold=False,
 
       )
 
       self.Add(self.wxgui_fftsink2_1.win)
 
       self.rational_resampler_xxx_2_1_1 filter.rational_resampler_ccc(
 
               interpolation=2084000,
 
               decimation=1000000,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_2_1_0_0_0 filter.rational_resampler_ccc(
 
               interpolation=1000000,
 
               decimation=samp_rate*4,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_2_1_0_0 filter.rational_resampler_ccc(
 
               interpolation=1000000,
 
               decimation=samp_rate*4,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_2_1_0 filter.rational_resampler_ccc(
 
               interpolation=1000000,
 
               decimation=samp_rate*4,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_2_1 filter.rational_resampler_ccc(
 
               interpolation=1000000,
 
               decimation=samp_rate*4,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_2 filter.rational_resampler_ccc(
 
               interpolation=1000000,
 
               decimation=samp_rate*4,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0_1_0_0_0 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0_1_0_0 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0_1_0 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0_1 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0_0_0_0_0_0 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0_0_0_0_0 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0_0_0_0 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0_0_0 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0_0 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.rational_resampler_xxx_0 filter.rational_resampler_fff(
 
               interpolation=4,
 
               decimation=1,
 
               taps=None,
 
               fractional_bw=None,
 
       )
 
       self.pluto_sink_0 iio.pluto_sink(''int(Sendefrequenz_0), int(2084000), int(20000000), 0x8000False0''True)
 
       self.low_pass_filter_0_1_0_0_0 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_1_0_0 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_1_0 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_1 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0_0_0_0_0 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0_0_0_0 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0_0_0 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0_0 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0 filter.fir_filter_fff(1firdes.low_pass(
 
        1samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.blocks_wavfile_source_0_0_0_0_0 blocks.wavfile_source('fifo1'True)
 
       self.blocks_wavfile_source_0_0_0_0 blocks.wavfile_source('fifo2'True)
 
       self.blocks_wavfile_source_0_0_0 blocks.wavfile_source('fifo3'True)
 
       self.blocks_wavfile_source_0_0 blocks.wavfile_source('fifo4'True)
 
       self.blocks_wavfile_source_0 blocks.wavfile_source('fifo5'True)
 
       self.blocks_sub_xx_0_0_0_0_0 blocks.sub_ff(1)
 
       self.blocks_sub_xx_0_0_0_0 blocks.sub_ff(1)
 
       self.blocks_sub_xx_0_0_0 blocks.sub_ff(1)
 
       self.blocks_sub_xx_0_0 blocks.sub_ff(1)
 
       self.blocks_sub_xx_0 blocks.sub_ff(1)
 
       self.blocks_multiply_xx_1_0_0_0 blocks.multiply_vcc(1)
 
       self.blocks_multiply_xx_1_0_0 blocks.multiply_vcc(1)
 
       self.blocks_multiply_xx_1_0 blocks.multiply_vcc(1)
 
       self.blocks_multiply_xx_1 blocks.multiply_vcc(1)
 
       self.blocks_multiply_xx_0_0_0_0_0 blocks.multiply_vff(1)
 
       self.blocks_multiply_xx_0_0_0_0 blocks.multiply_vff(1)
 
       self.blocks_multiply_xx_0_0_0 blocks.multiply_vff(1)
 
       self.blocks_multiply_xx_0_0 blocks.multiply_vff(1)
 
       self.blocks_multiply_xx_0 blocks.multiply_vff(1)
 
       self.blocks_multiply_const_vxx_0_2_0 blocks.multiply_const_vcc((0.2, ))
 
       self.blocks_multiply_const_vxx_0_2 blocks.multiply_const_vcc((0.2, ))
 
       self.blocks_multiply_const_vxx_0_1 blocks.multiply_const_vcc((0.2, ))
 
       self.blocks_multiply_const_vxx_0_0 blocks.multiply_const_vcc((0.2, ))
 
       self.blocks_multiply_const_vxx_0 blocks.multiply_const_vcc((0.2, ))
 
       self.blocks_add_xx_2 blocks.add_vcc(1)
 
       self.blocks_add_xx_1_0_0_0_0 blocks.add_vff(1)
 
       self.blocks_add_xx_1_0_0_0 blocks.add_vff(1)
 
       self.blocks_add_xx_1_0_0 blocks.add_vff(1)
 
       self.blocks_add_xx_1_0 blocks.add_vff(1)
 
       self.blocks_add_xx_1 blocks.add_vff(1)
 
       self.blocks_add_xx_0_0_0_0_0 blocks.add_vff(1)
 
       self.blocks_add_xx_0_0_0_0 blocks.add_vff(1)
 
       self.blocks_add_xx_0_0_0 blocks.add_vff(1)
 
       self.blocks_add_xx_0_0 blocks.add_vff(1)
 
       self.blocks_add_xx_0 blocks.add_vff(1)
 
       self.band_pass_filter_0_0_0_0_0 filter.fir_filter_fff(1firdes.band_pass(
 
        1samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.band_pass_filter_0_0_0_0 filter.fir_filter_fff(1firdes.band_pass(
 
        1samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.band_pass_filter_0_0_0 filter.fir_filter_fff(1firdes.band_pass(
 
        1samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.band_pass_filter_0_0 filter.fir_filter_fff(1firdes.band_pass(
 
        1samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.band_pass_filter_0 filter.fir_filter_fff(1firdes.band_pass(
 
        1samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.analog_sig_source_x_1_0_0_0 analog.sig_source_c(1000000analog.GR_COS_WAVE, -40000010)
 
       self.analog_sig_source_x_1_0_0 analog.sig_source_c(1000000analog.GR_COS_WAVE40000010)
 
       self.analog_sig_source_x_1_0 analog.sig_source_c(1000000analog.GR_COS_WAVE, -20000010)
 
       self.analog_sig_source_x_1 analog.sig_source_c(1000000analog.GR_COS_WAVE20000010)
 
       self.analog_sig_source_x_0_0 analog.sig_source_f(samp_rate*4analog.GR_COS_WAVE38000Amplitude38kHz0)
 
       self.analog_sig_source_x_0 analog.sig_source_f(samp_rate*4analog.GR_COS_WAVE19000Pilot_Amplitude0)
 
       self.analog_frequency_modulator_fc_0_0_0_0_0 analog.frequency_modulator_fc(0.9)
 
       self.analog_frequency_modulator_fc_0_0_0_0 analog.frequency_modulator_fc(0.9)
 
       self.analog_frequency_modulator_fc_0_0_0 analog.frequency_modulator_fc(0.9)
 
       self.analog_frequency_modulator_fc_0_0 analog.frequency_modulator_fc(0.9)
 
       self.analog_frequency_modulator_fc_0 analog.frequency_modulator_fc(0.9)
 
       self.analog_fm_preemph_0_0_1_1_0_0_0 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)
 
       self.analog_fm_preemph_0_0_1_1_0_0 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)
 
       self.analog_fm_preemph_0_0_1_1_0 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)
 
       self.analog_fm_preemph_0_0_1_1 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)
 
       self.analog_fm_preemph_0_0_1_0_0_0_0_0 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)
 
       self.analog_fm_preemph_0_0_1_0_0_0_0 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)
 
       self.analog_fm_preemph_0_0_1_0_0_0 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)
 
       self.analog_fm_preemph_0_0_1_0_0 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)
 
       self.analog_fm_preemph_0_0_1_0 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)
 
       self.analog_fm_preemph_0_0_1 analog.fm_preemph(fs=samp_ratetau=50e-6fh=-1.0)

 
       ##################################################
 
       # Connections
 
       ##################################################
 
       self.connect((self.analog_fm_preemph_0_0_10), (self.blocks_add_xx_00))
 
       self.connect((self.analog_fm_preemph_0_0_10), (self.blocks_sub_xx_00))
 
       self.connect((self.analog_fm_preemph_0_0_1_00), (self.blocks_add_xx_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_00), (self.blocks_sub_xx_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_0_00), (self.blocks_add_xx_0_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_0_00), (self.blocks_sub_xx_0_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_0_0_00), (self.blocks_add_xx_0_0_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_0_0_00), (self.blocks_sub_xx_0_0_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_0_0_0_00), (self.blocks_add_xx_0_0_0_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_0_0_0_00), (self.blocks_sub_xx_0_0_0_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_0_0_0_0_00), (self.blocks_add_xx_0_0_0_0_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_0_0_0_0_00), (self.blocks_sub_xx_0_0_0_0_01))
 
       self.connect((self.analog_fm_preemph_0_0_1_10), (self.blocks_add_xx_0_00))
 
       self.connect((self.analog_fm_preemph_0_0_1_10), (self.blocks_sub_xx_0_00))
 
       self.connect((self.analog_fm_preemph_0_0_1_1_00), (self.blocks_add_xx_0_0_00))
 
       self.connect((self.analog_fm_preemph_0_0_1_1_00), (self.blocks_sub_xx_0_0_00))
 
       self.connect((self.analog_fm_preemph_0_0_1_1_0_00), (self.blocks_add_xx_0_0_0_00))
 
       self.connect((self.analog_fm_preemph_0_0_1_1_0_00), (self.blocks_sub_xx_0_0_0_00))
 
       self.connect((self.analog_fm_preemph_0_0_1_1_0_0_00), (self.blocks_add_xx_0_0_0_0_00))
 
       self.connect((self.analog_fm_preemph_0_0_1_1_0_0_00), (self.blocks_sub_xx_0_0_0_0_00))
 
       self.connect((self.analog_frequency_modulator_fc_00), (self.rational_resampler_xxx_20))
 
       self.connect((self.analog_frequency_modulator_fc_0_00), (self.rational_resampler_xxx_2_10))
 
       self.connect((self.analog_frequency_modulator_fc_0_0_00), (self.rational_resampler_xxx_2_1_00))
 
       self.connect((self.analog_frequency_modulator_fc_0_0_0_00), (self.rational_resampler_xxx_2_1_0_00))
 
       self.connect((self.analog_frequency_modulator_fc_0_0_0_0_00), (self.rational_resampler_xxx_2_1_0_0_00))
 
       self.connect((self.analog_sig_source_x_00), (self.blocks_add_xx_11))
 
       self.connect((self.analog_sig_source_x_00), (self.blocks_add_xx_1_01))
 
       self.connect((self.analog_sig_source_x_00), (self.blocks_add_xx_1_0_01))
 
       self.connect((self.analog_sig_source_x_00), (self.blocks_add_xx_1_0_0_01))
 
       self.connect((self.analog_sig_source_x_00), (self.blocks_add_xx_1_0_0_0_01))
 
       self.connect((self.analog_sig_source_x_0_00), (self.blocks_multiply_xx_00))
 
       self.connect((self.analog_sig_source_x_0_00), (self.blocks_multiply_xx_0_00))
 
       self.connect((self.analog_sig_source_x_0_00), (self.blocks_multiply_xx_0_0_00))
 
       self.connect((self.analog_sig_source_x_0_00), (self.blocks_multiply_xx_0_0_0_00))
 
       self.connect((self.analog_sig_source_x_0_00), (self.blocks_multiply_xx_0_0_0_0_00))
 
       self.connect((self.analog_sig_source_x_10), (self.blocks_multiply_xx_11))
 
       self.connect((self.analog_sig_source_x_1_00), (self.blocks_multiply_xx_1_01))
 
       self.connect((self.analog_sig_source_x_1_0_00), (self.blocks_multiply_xx_1_0_01))
 
       self.connect((self.analog_sig_source_x_1_0_0_00), (self.blocks_multiply_xx_1_0_0_01))
 
       self.connect((self.band_pass_filter_00), (self.blocks_add_xx_12))
 
       self.connect((self.band_pass_filter_0_00), (self.blocks_add_xx_1_02))
 
       self.connect((self.band_pass_filter_0_0_00), (self.blocks_add_xx_1_0_02))
 
       self.connect((self.band_pass_filter_0_0_0_00), (self.blocks_add_xx_1_0_0_02))
 
       self.connect((self.band_pass_filter_0_0_0_0_00), (self.blocks_add_xx_1_0_0_0_02))
 
       self.connect((self.blocks_add_xx_00), (self.rational_resampler_xxx_0_00))
 
       self.connect((self.blocks_add_xx_0_00), (self.rational_resampler_xxx_0_0_00))
 
       self.connect((self.blocks_add_xx_0_0_00), (self.rational_resampler_xxx_0_0_0_00))
 
       self.connect((self.blocks_add_xx_0_0_0_00), (self.rational_resampler_xxx_0_0_0_0_00))
 
       self.connect((self.blocks_add_xx_0_0_0_0_00), (self.rational_resampler_xxx_0_0_0_0_0_00))
 
       self.connect((self.blocks_add_xx_10), (self.analog_frequency_modulator_fc_00))
 
       self.connect((self.blocks_add_xx_1_00), (self.analog_frequency_modulator_fc_0_00))
 
       self.connect((self.blocks_add_xx_1_0_00), (self.analog_frequency_modulator_fc_0_0_00))
 
       self.connect((self.blocks_add_xx_1_0_0_00), (self.analog_frequency_modulator_fc_0_0_0_00))
 
       self.connect((self.blocks_add_xx_1_0_0_0_00), (self.analog_frequency_modulator_fc_0_0_0_0_00))
 
       self.connect((self.blocks_add_xx_20), (self.rational_resampler_xxx_2_1_10))
 
       self.connect((self.blocks_multiply_const_vxx_00), (self.blocks_add_xx_20))
 
       self.connect((self.blocks_multiply_const_vxx_0_00), (self.blocks_add_xx_21))
 
       self.connect((self.blocks_multiply_const_vxx_0_10), (self.blocks_add_xx_22))
 
       self.connect((self.blocks_multiply_const_vxx_0_20), (self.blocks_add_xx_23))
 
       self.connect((self.blocks_multiply_const_vxx_0_2_00), (self.blocks_add_xx_24))
 
       self.connect((self.blocks_multiply_xx_00), (self.band_pass_filter_00))
 
       self.connect((self.blocks_multiply_xx_0_00), (self.band_pass_filter_0_00))
 
       self.connect((self.blocks_multiply_xx_0_0_00), (self.band_pass_filter_0_0_00))
 
       self.connect((self.blocks_multiply_xx_0_0_0_00), (self.band_pass_filter_0_0_0_00))
 
       self.connect((self.blocks_multiply_xx_0_0_0_0_00), (self.band_pass_filter_0_0_0_0_00))
 
       self.connect((self.blocks_multiply_xx_10), (self.blocks_multiply_const_vxx_0_00))
 
       self.connect((self.blocks_multiply_xx_1_00), (self.blocks_multiply_const_vxx_0_10))
 
       self.connect((self.blocks_multiply_xx_1_0_00), (self.blocks_multiply_const_vxx_0_20))
 
       self.connect((self.blocks_multiply_xx_1_0_0_00), (self.blocks_multiply_const_vxx_0_2_00))
 
       self.connect((self.blocks_sub_xx_00), (self.rational_resampler_xxx_00))
 
       self.connect((self.blocks_sub_xx_0_00), (self.rational_resampler_xxx_0_10))
 
       self.connect((self.blocks_sub_xx_0_0_00), (self.rational_resampler_xxx_0_1_00))
 
       self.connect((self.blocks_sub_xx_0_0_0_00), (self.rational_resampler_xxx_0_1_0_00))
 
       self.connect((self.blocks_sub_xx_0_0_0_0_00), (self.rational_resampler_xxx_0_1_0_0_00))
 
       self.connect((self.blocks_wavfile_source_00), (self.low_pass_filter_00))
 
       self.connect((self.blocks_wavfile_source_01), (self.low_pass_filter_0_00))
 
       self.connect((self.blocks_wavfile_source_0_01), (self.low_pass_filter_0_0_00))
 
       self.connect((self.blocks_wavfile_source_0_00), (self.low_pass_filter_0_10))
 
       self.connect((self.blocks_wavfile_source_0_0_01), (self.low_pass_filter_0_0_0_00))
 
       self.connect((self.blocks_wavfile_source_0_0_00), (self.low_pass_filter_0_1_00))
 
       self.connect((self.blocks_wavfile_source_0_0_0_01), (self.low_pass_filter_0_0_0_0_00))
 
       self.connect((self.blocks_wavfile_source_0_0_0_00), (self.low_pass_filter_0_1_0_00))
 
       self.connect((self.blocks_wavfile_source_0_0_0_0_01), (self.low_pass_filter_0_0_0_0_0_00))
 
       self.connect((self.blocks_wavfile_source_0_0_0_0_00), (self.low_pass_filter_0_1_0_0_00))
 
       self.connect((self.low_pass_filter_00), (self.analog_fm_preemph_0_0_10))
 
       self.connect((self.low_pass_filter_0_00), (self.analog_fm_preemph_0_0_1_00))
 
       self.connect((self.low_pass_filter_0_0_00), (self.analog_fm_preemph_0_0_1_0_00))
 
       self.connect((self.low_pass_filter_0_0_0_00), (self.analog_fm_preemph_0_0_1_0_0_00))
 
       self.connect((self.low_pass_filter_0_0_0_0_00), (self.analog_fm_preemph_0_0_1_0_0_0_00))
 
       self.connect((self.low_pass_filter_0_0_0_0_0_00), (self.analog_fm_preemph_0_0_1_0_0_0_0_00))
 
       self.connect((self.low_pass_filter_0_10), (self.analog_fm_preemph_0_0_1_10))
 
       self.connect((self.low_pass_filter_0_1_00), (self.analog_fm_preemph_0_0_1_1_00))
 
       self.connect((self.low_pass_filter_0_1_0_00), (self.analog_fm_preemph_0_0_1_1_0_00))
 
       self.connect((self.low_pass_filter_0_1_0_0_00), (self.analog_fm_preemph_0_0_1_1_0_0_00))
 
       self.connect((self.rational_resampler_xxx_00), (self.blocks_multiply_xx_01))
 
       self.connect((self.rational_resampler_xxx_0_00), (self.blocks_add_xx_10))
 
       self.connect((self.rational_resampler_xxx_0_0_00), (self.blocks_add_xx_1_00))
 
       self.connect((self.rational_resampler_xxx_0_0_0_00), (self.blocks_add_xx_1_0_00))
 
       self.connect((self.rational_resampler_xxx_0_0_0_0_00), (self.blocks_add_xx_1_0_0_00))
 
       self.connect((self.rational_resampler_xxx_0_0_0_0_0_00), (self.blocks_add_xx_1_0_0_0_00))
 
       self.connect((self.rational_resampler_xxx_0_10), (self.blocks_multiply_xx_0_01))
 
       self.connect((self.rational_resampler_xxx_0_1_00), (self.blocks_multiply_xx_0_0_01))
 
       self.connect((self.rational_resampler_xxx_0_1_0_00), (self.blocks_multiply_xx_0_0_0_01))
 
       self.connect((self.rational_resampler_xxx_0_1_0_0_00), (self.blocks_multiply_xx_0_0_0_0_01))
 
       self.connect((self.rational_resampler_xxx_20), (self.blocks_multiply_const_vxx_00))
 
       self.connect((self.rational_resampler_xxx_2_10), (self.blocks_multiply_xx_10))
 
       self.connect((self.rational_resampler_xxx_2_1_00), (self.blocks_multiply_xx_1_00))
 
       self.connect((self.rational_resampler_xxx_2_1_0_00), (self.blocks_multiply_xx_1_0_00))
 
       self.connect((self.rational_resampler_xxx_2_1_0_0_00), (self.blocks_multiply_xx_1_0_0_00))
 
       self.connect((self.rational_resampler_xxx_2_1_10), (self.pluto_sink_00))
 
       self.connect((self.rational_resampler_xxx_2_1_10), (self.wxgui_fftsink2_10))
 
       self.connect((self.rational_resampler_xxx_2_1_10), (self.wxgui_waterfallsink2_00))

 
   def get_samp_rate(self):
 
       return self.samp_rate

    def set_samp_rate
(selfsamp_rate):
 
       self.samp_rate samp_rate
        self
.low_pass_filter_0_1_0_0_0.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_1_0_0.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_1_0.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_1.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0_0_0_0_0.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0_0_0_0.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0_0_0.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0_0.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0_0.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.low_pass_filter_0.set_taps(firdes.low_pass(1self.samp_rate150002000firdes.WIN_HAMMING6.76))
 
       self.band_pass_filter_0_0_0_0_0.set_taps(firdes.band_pass(1self.samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.band_pass_filter_0_0_0_0.set_taps(firdes.band_pass(1self.samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.band_pass_filter_0_0_0.set_taps(firdes.band_pass(1self.samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.band_pass_filter_0_0.set_taps(firdes.band_pass(1self.samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.band_pass_filter_0.set_taps(firdes.band_pass(1self.samp_rate*423000530002000firdes.WIN_HAMMING6.76))
 
       self.analog_sig_source_x_0_0.set_sampling_freq(self.samp_rate*4)
 
       self.analog_sig_source_x_0.set_sampling_freq(self.samp_rate*4)

 
   def get_Sendefrequenz_0(self):
 
       return self.Sendefrequenz_0

    def set_Sendefrequenz_0
(selfSendefrequenz_0):
 
       self.Sendefrequenz_0 Sendefrequenz_0
        self
._Sendefrequenz_0_slider.set_value(self.Sendefrequenz_0)
 
       self._Sendefrequenz_0_text_box.set_value(self.Sendefrequenz_0)
 
       self.wxgui_waterfallsink2_0.set_baseband_freq(self.Sendefrequenz_0)
 
       self.wxgui_fftsink2_1.set_baseband_freq(self.Sendefrequenz_0)
 
       self.pluto_sink_0.set_params(int(self.Sendefrequenz_0), int(2084000), int(20000000), 0''True)

 
   def get_Pilot_Amplitude(self):
 
       return self.Pilot_Amplitude

    def set_Pilot_Amplitude
(selfPilot_Amplitude):
 
       self.Pilot_Amplitude Pilot_Amplitude
        self
._Pilot_Amplitude_slider.set_value(self.Pilot_Amplitude)
 
       self._Pilot_Amplitude_text_box.set_value(self.Pilot_Amplitude)
 
       self.analog_sig_source_x_0.set_amplitude(self.Pilot_Amplitude)

 
   def get_Amplitude38kHz(self):
 
       return self.Amplitude38kHz

    def set_Amplitude38kHz
(selfAmplitude38kHz):
 
       self.Amplitude38kHz Amplitude38kHz
        self
._Amplitude38kHz_slider.set_value(self.Amplitude38kHz)
 
       self._Amplitude38kHz_text_box.set_value(self.Amplitude38kHz)
 
       self.analog_sig_source_x_0_0.set_amplitude(self.Amplitude38kHz)


def main(top_block_cls=pluto_multiple_stereoFM_txoptions=None):

 
   tb top_block_cls()
 
   tb.Start(True)
 
   tb.Wait()


if 
__name__ == '__main__':
 
   main() 


Mit freundlichen Grüßen Ronald
Zitieren


Gehe zu: