options: parameters: author: '' catch_exceptions: 'True' category: '[GRC Hier Blocks]' cmake_opt: '' comment: '' copyright: '' description: '' gen_cmake: 'On' gen_linking: dynamic generate_options: no_gui hier_block_src_path: '.:' id: fft_detector max_nouts: '0' output_language: python placement: (0,0) qt_qss_theme: '' realtime_scheduling: '' run: 'True' run_command: '{python} -u {filename}' run_options: prompt sizing_mode: fixed thread_safe_setters: '' title: fft_detector window_size: (1000,1000) states: bus_sink: false bus_source: false bus_structure: null coordinate: [8, 8] rotation: 0 state: enabled blocks: - name: filter1 id: variable parameters: comment: '' value: firdes.low_pass (1, samp_rate, 500e3, 300e3, window.WIN_BLACKMAN_HARRIS) states: bus_sink: false bus_source: false bus_structure: null coordinate: [464, 16.0] rotation: 0 state: true - name: filter2 id: variable parameters: comment: '' value: firdes.low_pass(1,samp_rate, 5e3, 3e3, window.WIN_HANN) states: bus_sink: false bus_source: false bus_structure: null coordinate: [696, 16.0] rotation: 0 state: true - name: freq id: variable parameters: comment: '' value: py_module.work(func_probe) states: bus_sink: false bus_source: false bus_structure: null coordinate: [368, 16.0] rotation: 0 state: true - name: func_probe id: variable_function_probe parameters: block_id: vec_probe comment: '' function_args: '' function_name: level poll_rate: '100' value: '0' states: bus_sink: false bus_source: false bus_structure: null coordinate: [1312, 128.0] rotation: 0 state: enabled - name: max_f id: variable parameters: comment: '' value: 2.46e9 states: bus_sink: false bus_source: false bus_structure: null coordinate: [536, 16.0] rotation: 0 state: disabled - name: min_f id: variable parameters: comment: '' value: 2.4e9 states: bus_sink: false bus_source: false bus_structure: null coordinate: [456, 16.0] rotation: 0 state: disabled - name: samp_rate id: variable parameters: comment: '' value: 20e6 states: bus_sink: false bus_source: false bus_structure: null coordinate: [184, 12] rotation: 0 state: enabled - name: blocks_complex_to_mag_squared_0 id: blocks_complex_to_mag_squared parameters: affinity: '' alias: '' comment: '' maxoutbuf: '0' minoutbuf: '0' vlen: '2048' states: bus_sink: false bus_source: false bus_structure: null coordinate: [840, 120.0] rotation: 0 state: true - name: blocks_integrate_xx_0 id: blocks_integrate_xx parameters: affinity: '' alias: '' comment: '' decim: '10' maxoutbuf: '0' minoutbuf: '0' type: float vlen: '2048' states: bus_sink: false bus_source: false bus_structure: null coordinate: [840, 192.0] rotation: 0 state: true - name: blocks_keep_one_in_n_0 id: blocks_keep_one_in_n parameters: affinity: '' alias: '' comment: '' maxoutbuf: '0' minoutbuf: '0' n: '1' type: complex vlen: '2048' states: bus_sink: false bus_source: false bus_structure: null coordinate: [368, 272.0] rotation: 0 state: true - name: blocks_nlog10_ff_0 id: blocks_nlog10_ff parameters: affinity: '' alias: '' comment: '' k: '-100' maxoutbuf: '0' minoutbuf: '0' n: '10' vlen: '2048' states: bus_sink: false bus_source: false bus_structure: null coordinate: [840, 280.0] rotation: 0 state: true - name: blocks_stream_to_vector_0_0 id: blocks_stream_to_vector parameters: affinity: '' alias: '' comment: '' maxoutbuf: '0' minoutbuf: '0' num_items: '2048' type: complex vlen: '1' states: bus_sink: false bus_source: false bus_structure: null coordinate: [368, 216.0] rotation: 0 state: true - name: dc_blocker_xx_0 id: dc_blocker_xx parameters: affinity: '' alias: '' comment: '' length: '1024' long_form: 'True' maxoutbuf: '0' minoutbuf: '0' type: cc states: bus_sink: false bus_source: false bus_structure: null coordinate: [368, 136.0] rotation: 0 state: true - name: fft_vxx_0 id: fft_vxx parameters: affinity: '' alias: '' comment: '' fft_size: '2048' forward: 'True' maxoutbuf: '0' minoutbuf: '0' nthreads: '1' shift: 'True' type: complex window: window.blackmanharris(2048) states: bus_sink: false bus_source: false bus_structure: null coordinate: [576, 192.0] rotation: 0 state: true - name: osmosdr_source_0 id: osmosdr_source parameters: affinity: '' alias: '' ant0: '' ant1: '' ant10: '' ant11: '' ant12: '' ant13: '' ant14: '' ant15: '' ant16: '' ant17: '' ant18: '' ant19: '' ant2: '' ant20: '' ant21: '' ant22: '' ant23: '' ant24: '' ant25: '' ant26: '' ant27: '' ant28: '' ant29: '' ant3: '' ant30: '' ant31: '' ant4: '' ant5: '' ant6: '' ant7: '' ant8: '' ant9: '' args: hackrf=0 bb_gain0: '0' bb_gain1: '20' bb_gain10: '20' bb_gain11: '20' bb_gain12: '20' bb_gain13: '20' bb_gain14: '20' bb_gain15: '20' bb_gain16: '20' bb_gain17: '20' bb_gain18: '20' bb_gain19: '20' bb_gain2: '20' bb_gain20: '20' bb_gain21: '20' bb_gain22: '20' bb_gain23: '20' bb_gain24: '20' bb_gain25: '20' bb_gain26: '20' bb_gain27: '20' bb_gain28: '20' bb_gain29: '20' bb_gain3: '20' bb_gain30: '20' bb_gain31: '20' bb_gain4: '20' bb_gain5: '20' bb_gain6: '20' bb_gain7: '20' bb_gain8: '20' bb_gain9: '20' bw0: 20e6 bw1: '0' bw10: '0' bw11: '0' bw12: '0' bw13: '0' bw14: '0' bw15: '0' bw16: '0' bw17: '0' bw18: '0' bw19: '0' bw2: '0' bw20: '0' bw21: '0' bw22: '0' bw23: '0' bw24: '0' bw25: '0' bw26: '0' bw27: '0' bw28: '0' bw29: '0' bw3: '0' bw30: '0' bw31: '0' bw4: '0' bw5: '0' bw6: '0' bw7: '0' bw8: '0' bw9: '0' clock_source0: '' clock_source1: '' clock_source2: '' clock_source3: '' clock_source4: '' clock_source5: '' clock_source6: '' clock_source7: '' comment: '' corr0: '0' corr1: '0' corr10: '0' corr11: '0' corr12: '0' corr13: '0' corr14: '0' corr15: '0' corr16: '0' corr17: '0' corr18: '0' corr19: '0' corr2: '0' corr20: '0' corr21: '0' corr22: '0' corr23: '0' corr24: '0' corr25: '0' corr26: '0' corr27: '0' corr28: '0' corr29: '0' corr3: '0' corr30: '0' corr31: '0' corr4: '0' corr5: '0' corr6: '0' corr7: '0' corr8: '0' corr9: '0' dc_offset_mode0: '0' dc_offset_mode1: '0' dc_offset_mode10: '0' dc_offset_mode11: '0' dc_offset_mode12: '0' dc_offset_mode13: '0' dc_offset_mode14: '0' dc_offset_mode15: '0' dc_offset_mode16: '0' dc_offset_mode17: '0' dc_offset_mode18: '0' dc_offset_mode19: '0' dc_offset_mode2: '0' dc_offset_mode20: '0' dc_offset_mode21: '0' dc_offset_mode22: '0' dc_offset_mode23: '0' dc_offset_mode24: '0' dc_offset_mode25: '0' dc_offset_mode26: '0' dc_offset_mode27: '0' dc_offset_mode28: '0' dc_offset_mode29: '0' dc_offset_mode3: '0' dc_offset_mode30: '0' dc_offset_mode31: '0' dc_offset_mode4: '0' dc_offset_mode5: '0' dc_offset_mode6: '0' dc_offset_mode7: '0' dc_offset_mode8: '0' dc_offset_mode9: '0' freq0: freq freq1: 100e6 freq10: 100e6 freq11: 100e6 freq12: 100e6 freq13: 100e6 freq14: 100e6 freq15: 100e6 freq16: 100e6 freq17: 100e6 freq18: 100e6 freq19: 100e6 freq2: 100e6 freq20: 100e6 freq21: 100e6 freq22: 100e6 freq23: 100e6 freq24: 100e6 freq25: 100e6 freq26: 100e6 freq27: 100e6 freq28: 100e6 freq29: 100e6 freq3: 100e6 freq30: 100e6 freq31: 100e6 freq4: 100e6 freq5: 100e6 freq6: 100e6 freq7: 100e6 freq8: 100e6 freq9: 100e6 gain0: '100' gain1: '10' gain10: '10' gain11: '10' gain12: '10' gain13: '10' gain14: '10' gain15: '10' gain16: '10' gain17: '10' gain18: '10' gain19: '10' gain2: '10' gain20: '10' gain21: '10' gain22: '10' gain23: '10' gain24: '10' gain25: '10' gain26: '10' gain27: '10' gain28: '10' gain29: '10' gain3: '10' gain30: '10' gain31: '10' gain4: '10' gain5: '10' gain6: '10' gain7: '10' gain8: '10' gain9: '10' gain_mode0: 'False' gain_mode1: 'False' gain_mode10: 'False' gain_mode11: 'False' gain_mode12: 'False' gain_mode13: 'False' gain_mode14: 'False' gain_mode15: 'False' gain_mode16: 'False' gain_mode17: 'False' gain_mode18: 'False' gain_mode19: 'False' gain_mode2: 'False' gain_mode20: 'False' gain_mode21: 'False' gain_mode22: 'False' gain_mode23: 'False' gain_mode24: 'False' gain_mode25: 'False' gain_mode26: 'False' gain_mode27: 'False' gain_mode28: 'False' gain_mode29: 'False' gain_mode3: 'False' gain_mode30: 'False' gain_mode31: 'False' gain_mode4: 'False' gain_mode5: 'False' gain_mode6: 'False' gain_mode7: 'False' gain_mode8: 'False' gain_mode9: 'False' if_gain0: '100' if_gain1: '20' if_gain10: '20' if_gain11: '20' if_gain12: '20' if_gain13: '20' if_gain14: '20' if_gain15: '20' if_gain16: '20' if_gain17: '20' if_gain18: '20' if_gain19: '20' if_gain2: '20' if_gain20: '20' if_gain21: '20' if_gain22: '20' if_gain23: '20' if_gain24: '20' if_gain25: '20' if_gain26: '20' if_gain27: '20' if_gain28: '20' if_gain29: '20' if_gain3: '20' if_gain30: '20' if_gain31: '20' if_gain4: '20' if_gain5: '20' if_gain6: '20' if_gain7: '20' if_gain8: '20' if_gain9: '20' iq_balance_mode0: '0' iq_balance_mode1: '0' iq_balance_mode10: '0' iq_balance_mode11: '0' iq_balance_mode12: '0' iq_balance_mode13: '0' iq_balance_mode14: '0' iq_balance_mode15: '0' iq_balance_mode16: '0' iq_balance_mode17: '0' iq_balance_mode18: '0' iq_balance_mode19: '0' iq_balance_mode2: '0' iq_balance_mode20: '0' iq_balance_mode21: '0' iq_balance_mode22: '0' iq_balance_mode23: '0' iq_balance_mode24: '0' iq_balance_mode25: '0' iq_balance_mode26: '0' iq_balance_mode27: '0' iq_balance_mode28: '0' iq_balance_mode29: '0' iq_balance_mode3: '0' iq_balance_mode30: '0' iq_balance_mode31: '0' iq_balance_mode4: '0' iq_balance_mode5: '0' iq_balance_mode6: '0' iq_balance_mode7: '0' iq_balance_mode8: '0' iq_balance_mode9: '0' maxoutbuf: '2048' minoutbuf: '2048' nchan: '1' num_mboards: '1' sample_rate: samp_rate sync: sync time_source0: '' time_source1: '' time_source2: '' time_source3: '' time_source4: '' time_source5: '' time_source6: '' time_source7: '' type: fc32 states: bus_sink: false bus_source: false bus_structure: null coordinate: [80, 132.0] rotation: 0 state: true - name: py_module id: epy_module parameters: alias: '' comment: '' source_code: "# this module will be imported in the into your flowgraph\r\n\r\n\ import numpy as np\r\nimport os\r\nimport time \r\n\r\nimport matplotlib.pyplot\ \ as plt\r\nimport math\r\n\r\n\r\n##################################\r\n# frequency\ \ change params\r\n##################################\r\n\r\nmin_f = 0.400e9\ \ # 2.38e9\r\nmax_f = 0.500e9 # 2.52e9\r\nstep_f = 1e6 # 10e6\r\nf = min_f +\ \ step_f / 2\r\n\r\n\r\n##################################\r\n# spectrum\r\n\ ##################################\r\n\r\nbins = 2048\r\nsavepath = 'C:/Users/ftlen/Work/GNU\ \ Radio/fft_detector/pics/433/'\r\n#savepath = 'C:/Users/ftlen/\u0420\u0430\u0431\ \u043E\u0447\u0438\u0439 \u0441\u0442\u043E\u043B/\u043D\u0438\u043A\u0438\u0442\ \u0430/'\r\n#filetag = '433_transmitter_denis_teleskop_'\r\nfiletag = '433_noise_office_teleskop_'\r\ \n\r\nfileit = 1\r\nsplit_size = 1_000_000\r\nmax_its = 10\r\nmax_iter = 0\r\ \n\r\nlast_spectrum_arr = np.array([])\r\nsignal_arr = np.array([])\r\n\r\n\ def set_spec_arr_zero(): \r\n global bins, min_f, max_f, step_f\r\n arr\ \ = np.array([-100] * int(((max_f - min_f) / step_f - 1) * bins), dtype=np.float32)\r\ \n return arr\r\n\r\nlast_spectrum_arr = set_spec_arr_zero()\r\n\r\n\r\n\ def moving_average(x, w=50):\r\n return np.convolve(x, np.ones(w), 'valid')\ \ / w\r\n##################################\r\n# main\r\n##################################\r\ \n\r\ndef work(lvl):\r\n global f, min_f, max_f, step_f\r\n global last_spectrum_arr,\ \ bins\r\n global savepath, filetag, fileit\r\n global signal_arr, split_size\r\ \n global max_its, max_iter\r\n #print('wrk')\r\n if f >= max_f - step_f:\r\ \n f = min_f + step_f / 2\r\n #print('!', last_spectrum_arr.shape)\r\ \n last_spectrum_arr = moving_average(last_spectrum_arr)\r\n plt.ylim(-100,\ \ -50)\r\n plt.xlim(min_f, max_f)\r\n x = np.linspace(min_f, max_f,\ \ len(last_spectrum_arr))\r\n plt.plot(x, last_spectrum_arr)\r\n \ \ plt.savefig(savepath + filetag + str(fileit))\r\n fileit += 1\r\n\ \ plt.close()\r\n last_spectrum_arr = set_spec_arr_zero()\r\n\ \ return f\r\n\r\n y = np.array(lvl).ravel()\r\n if len(y) == 2048:\r\ \n arr = y # / np.linalg.norm(y)\r\n\r\n x1 = int((f-min_f)/step_f\ \ * bins - bins/2)\r\n x2 = int((f-min_f)/step_f * bins + bins/2)\r\n\ \r\n override_arr = last_spectrum_arr[x1:x2]\r\n\r\n #override_arr\ \ = np.maximum(arr, override_arr)\r\n override_arr = np.mean( np.array([\ \ arr, override_arr ]), axis=0 )\r\n\r\n last_spectrum_arr[x1:x2] = override_arr\r\ \n\r\n if max_iter == max_its:\r\n f += step_f\r\n \ \ max_iter = 0\r\n else:\r\n max_iter += 1\r\n return\ \ f\r\n " states: bus_sink: false bus_source: false bus_structure: null coordinate: [1312, 232.0] rotation: 0 state: enabled - name: vec_probe id: blocks_probe_signal_vx parameters: affinity: '' alias: '' comment: '' type: float vlen: '2048' states: bus_sink: false bus_source: false bus_structure: null coordinate: [1096, 192.0] rotation: 0 state: enabled connections: - [blocks_complex_to_mag_squared_0, '0', blocks_integrate_xx_0, '0'] - [blocks_integrate_xx_0, '0', blocks_nlog10_ff_0, '0'] - [blocks_keep_one_in_n_0, '0', fft_vxx_0, '0'] - [blocks_nlog10_ff_0, '0', vec_probe, '0'] - [blocks_stream_to_vector_0_0, '0', blocks_keep_one_in_n_0, '0'] - [dc_blocker_xx_0, '0', blocks_stream_to_vector_0_0, '0'] - [fft_vxx_0, '0', blocks_complex_to_mag_squared_0, '0'] - [osmosdr_source_0, '0', dc_blocker_xx_0, '0'] metadata: file_format: 1 grc_version: 3.10.7.0