KCC Quizzes AQQ303 about the radius of a circle
1. Quote of the month: "When I die, I want to die like my grandfather who died peacefully in his sleep. Not screaming like all the passengers in his car" - Will Rogers
2. Quiz AQQ304 about finding the radius of a circle
Good luck, and try to be
View All
August Monthly Blog Quiz! Read the blog, take the quiz, and you could win a gift card
Important: Read the blog first . The quiz questions are all based on the content of the blog:
Stay in the loop and win! Read the blog Current Output Driving Industrial Loops , then take our quick five-question quiz for a chance to win a gift card
View All
I HAVE TRIED ALL POSSIBLE INSTALLATION PROCEDURES BUT STILL GETTING THE IIO ERROR CONSISTENTLY. I HAVE USED THE FOLLOWING LINK TO INSTALL DEPENDENCIES AND THEN INSTALLED GNU RADIO 3.10.5.
https://wiki.analog.com/resources/tools-software/linux-software/gnuradio#download_and_build_libiio
AFTER THE INSTALLATION I AM FACING THE FOLLOWING ERROR:
<<< Welcome to GNU Radio Companion 3.10.5.0 >>>
Block paths:
/usr/share/gnuradio/grc/blocks
Loading: "/home/cipl/tyest1.grc"
>>> Done
Generating: '/home/cipl/tyest1.py'
Executing: /usr/bin/python3 -u /home/cipl/tyest1.py
Traceback (most recent call last):
File "/home/cipl/tyest1.py", line 169, in <module>
main()
File "/home/cipl/tyest1.py", line 147, in main
tb = top_block_cls()
File "/home/cipl/tyest1.py", line 99, in __init__
self.iio_fmcomms2_source_0 = iio.fmcomms2_source_fc32('ip:192.168.1.173', [True, True, False, False], 32768)
AttributeError: module 'gnuradio.iio' has no attribute 'fmcomms2_source_fc32'
>>> Done (return code 1)
PLEASE HELP WITH THE INSTALLATION PROCESS .
THANK YOU
Moved to Virtual Classroom for ADI University Program section.
Thanks,
Dragos
Can you provide the full python code?
-Travis
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# SPDX-License-Identifier: GPL-3.0
#
# GNU Radio Python Flow Graph
# Title: Adalm-Pluto Radar
# GNU Radio version: 3.10.4.0
from packaging.version import Version as StrictVersion
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 PyQt5 import Qt
from gnuradio import qtgui
from gnuradio.filter import firdes
import sip
from gnuradio import analog
from gnuradio import filter
from gnuradio import gr
from gnuradio.fft import window
import sys
import signal
from argparse import ArgumentParser
from gnuradio.eng_arg import eng_float, intx
from gnuradio import eng_notation
from gnuradio import iio
from gnuradio.qtgui import Range, GrRangeWidget
from PyQt5 import QtCore
from gnuradio import qtgui
class Radar(gr.top_block, Qt.QWidget):
def __init__(self):
gr.top_block.__init__(self, "Adalm-Pluto Radar", catch_exceptions=True)
Qt.QWidget.__init__(self)
self.setWindowTitle("Adalm-Pluto Radar")
qtgui.util.check_set_qss()
try:
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
except:
pass
self.top_scroll_layout = Qt.QVBoxLayout()
self.setLayout(self.top_scroll_layout)
self.top_scroll = Qt.QScrollArea()
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
self.top_scroll_layout.addWidget(self.top_scroll)
self.top_scroll.setWidgetResizable(True)
self.top_widget = Qt.QWidget()
self.top_scroll.setWidget(self.top_widget)
self.top_layout = Qt.QVBoxLayout(self.top_widget)
self.top_grid_layout = Qt.QGridLayout()
self.top_layout.addLayout(self.top_grid_layout)
self.settings = Qt.QSettings("GNU Radio", "Radar")
try:
if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
self.restoreGeometry(self.settings.value("geometry").toByteArray())
else:
self.restoreGeometry(self.settings.value("geometry"))
except:
pass
##################################################
# Variables
##################################################
self.tx_att = tx_att = 70
self.tone_freq = tone_freq = 500
self.samp_rate = samp_rate = 2.304e6
self.rx_gain = rx_gain = 20
##################################################
# Blocks
##################################################
self._tx_att_range = Range(0, 100, 1, 70, 200)
self._tx_att_win = GrRangeWidget(self._tx_att_range, self.set_tx_att, "'tx_att'", "counter_slider", float, QtCore.Qt.Horizontal, "value")
self.top_layout.addWidget(self._tx_att_win)
self._tone_freq_range = Range(1, 1000, 1, 500, 200)
self._tone_freq_win = GrRangeWidget(self._tone_freq_range, self.set_tone_freq, "'tone_freq'", "counter_slider", float, QtCore.Qt.Horizontal, "value")
self.top_layout.addWidget(self._tone_freq_win)
self._rx_gain_range = Range(0, 73, 1, 20, 200)
self._rx_gain_win = GrRangeWidget(self._rx_gain_range, self.set_rx_gain, "'rx_gain'", "counter_slider", float, QtCore.Qt.Horizontal, "value")
self.top_layout.addWidget(self._rx_gain_win)
self.qtgui_time_sink_0 = qtgui.time_sink_c(
1024, #size
samp_rate, #samp_rate
"", #name
1, #number of inputs
None # parent
)
self.qtgui_time_sink_0.set_update_time(0.10)
self.qtgui_time_sink_0.set_y_axis(-1, 1)
self.qtgui_time_sink_0.set_y_label('Amplitude', "")
self.qtgui_time_sink_0.enable_tags(True)
self.qtgui_time_sink_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "")
self.qtgui_time_sink_0.enable_autoscale(False)
self.qtgui_time_sink_0.enable_grid(False)
self.qtgui_time_sink_0.enable_axis_labels(True)
self.qtgui_time_sink_0.enable_control_panel(False)
self.qtgui_time_sink_0.enable_stem_plot(False)
labels = ['', '', '', '', '',
'', '', '', '', '']
widths = [1, 1, 1, 1, 1,
1, 1, 1, 1, 1]
colors = ['blue', 'red', 'green', 'black', 'cyan',
'magenta', 'yellow', 'dark red', 'dark green', 'dark blue']
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0]
styles = [1, 1, 1, 1, 1,
1, 1, 1, 1, 1]
markers = [-1, -1, -1, -1, -1,
-1, -1, -1, -1, -1]
for i in range(2):
if len(labels[i]) == 0:
if (i % 2 == 0):
self.qtgui_time_sink_0.set_line_label(i, "Re{{Data {0}}}".format(i/2))
else:
self.qtgui_time_sink_0.set_line_label(i, "Im{{Data {0}}}".format(i/2))
else:
self.qtgui_time_sink_0.set_line_label(i, labels[i])
self.qtgui_time_sink_0.set_line_width(i, widths[i])
self.qtgui_time_sink_0.set_line_color(i, colors[i])
self.qtgui_time_sink_0.set_line_style(i, styles[i])
self.qtgui_time_sink_0.set_line_marker(i, markers[i])
self.qtgui_time_sink_0.set_line_alpha(i, alphas[i])
self._qtgui_time_sink_0_win = sip.wrapinstance(self.qtgui_time_sink_0.qwidget(), Qt.QWidget)
self.top_layout.addWidget(self._qtgui_time_sink_0_win)
self.qtgui_freq_sink_0 = qtgui.freq_sink_c(
1024, #size
window.WIN_BLACKMAN_hARRIS, #wintype
0, #fc
samp_rate, #bw
"", #name
1,
None # parent
)
self.qtgui_freq_sink_0.set_update_time(0.10)
self.qtgui_freq_sink_0.set_y_axis((-140), 10)
self.qtgui_freq_sink_0.set_y_label('Relative Gain', 'dB')
self.qtgui_freq_sink_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "")
self.qtgui_freq_sink_0.enable_autoscale(False)
self.qtgui_freq_sink_0.enable_grid(False)
self.qtgui_freq_sink_0.set_fft_average(1.0)
self.qtgui_freq_sink_0.enable_axis_labels(True)
self.qtgui_freq_sink_0.enable_control_panel(False)
self.qtgui_freq_sink_0.set_fft_window_normalized(False)
labels = ['', '', '', '', '',
'', '', '', '', '']
widths = [1, 1, 1, 1, 1,
1, 1, 1, 1, 1]
colors = ["blue", "red", "green", "black", "cyan",
"magenta", "yellow", "dark red", "dark green", "dark blue"]
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0]
for i in range(1):
if len(labels[i]) == 0:
self.qtgui_freq_sink_0.set_line_label(i, "Data {0}".format(i))
else:
self.qtgui_freq_sink_0.set_line_label(i, labels[i])
self.qtgui_freq_sink_0.set_line_width(i, widths[i])
self.qtgui_freq_sink_0.set_line_color(i, colors[i])
self.qtgui_freq_sink_0.set_line_alpha(i, alphas[i])
self._qtgui_freq_sink_0_win = sip.wrapinstance(self.qtgui_freq_sink_0.qwidget(), Qt.QWidget)
self.top_layout.addWidget(self._qtgui_freq_sink_0_win)
self.low_pass_filter_0 = filter.fir_filter_ccf(
50,
firdes.low_pass(
1,
samp_rate,
(tone_freq*2),
250,
window.WIN_HAMMING,
6.76))
self.iio_pluto_source_0 = iio.fmcomms2_source_fc32('' if '' else iio.get_pluto_uri(), [True, True], 32768)
self.iio_pluto_source_0.set_len_tag_key('packet_len')
self.iio_pluto_source_0.set_frequency(3500000000)
self.iio_pluto_source_0.set_samplerate(int(samp_rate))
self.iio_pluto_source_0.set_gain_mode(0, 'manual')
self.iio_pluto_source_0.set_gain(0, rx_gain)
self.iio_pluto_source_0.set_quadrature(True)
self.iio_pluto_source_0.set_rfdc(True)
self.iio_pluto_source_0.set_bbdc(True)
self.iio_pluto_source_0.set_filter_params('Auto', '', 0, 0)
self.iio_pluto_sink_0 = iio.fmcomms2_sink_fc32('' if '' else iio.get_pluto_uri(), [True, True], 32768, False)
self.iio_pluto_sink_0.set_len_tag_key('')
self.iio_pluto_sink_0.set_bandwidth((int(samp_rate/2)))
self.iio_pluto_sink_0.set_frequency(3500000000)
self.iio_pluto_sink_0.set_samplerate(int(samp_rate))
self.iio_pluto_sink_0.set_attenuation(0, tx_att)
self.iio_pluto_sink_0.set_filter_params('Auto', '', 0, 0)
self.analog_sig_source_0 = analog.sig_source_c(samp_rate, analog.GR_SIN_WAVE, tone_freq, 1, 0, 0)
##################################################
# Connections
##################################################
self.connect((self.analog_sig_source_0, 0), (self.iio_pluto_sink_0, 0))
self.connect((self.iio_pluto_source_0, 0), (self.low_pass_filter_0, 0))
self.connect((self.low_pass_filter_0, 0), (self.qtgui_freq_sink_0, 0))
self.connect((self.low_pass_filter_0, 0), (self.qtgui_time_sink_0, 0))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "Radar")
self.settings.setValue("geometry", self.saveGeometry())
self.stop()
self.wait()
event.accept()
def get_tx_att(self):
return self.tx_att
def set_tx_att(self, tx_att):
self.tx_att = tx_att
self.iio_pluto_sink_0.set_attenuation(0,self.tx_att)
def get_tone_freq(self):
return self.tone_freq
def set_tone_freq(self, tone_freq):
self.tone_freq = tone_freq
self.analog_sig_source_0.set_frequency(self.tone_freq)
self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate, (self.tone_freq*2), 250, window.WIN_HAMMING, 6.76))
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.analog_sig_source_0.set_sampling_freq(self.samp_rate)
self.iio_pluto_sink_0.set_bandwidth((int(self.samp_rate/2)))
self.iio_pluto_sink_0.set_samplerate(int(self.samp_rate))
self.iio_pluto_source_0.set_samplerate(int(self.samp_rate))
self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate, (self.tone_freq*2), 250, window.WIN_HAMMING, 6.76))
self.qtgui_freq_sink_0.set_frequency_range(0, self.samp_rate)
self.qtgui_time_sink_0.set_samp_rate(self.samp_rate)
def get_rx_gain(self):
return self.rx_gain
def set_rx_gain(self, rx_gain):
self.rx_gain = rx_gain
self.iio_pluto_source_0.set_gain(0, self.rx_gain)
def main(top_block_cls=Radar, options=None):
if gr.enable_realtime_scheduling() != gr.RT_OK:
print("Error: failed to enable real-time scheduling.")
if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
style = gr.prefs().get_string('qtgui', 'style', 'raster')
Qt.QApplication.setGraphicsSystem(style)
qapp = Qt.QApplication(sys.argv)
tb = top_block_cls()
tb.start()
tb.show()
def sig_handler(sig=None, frame=None):
tb.stop()
tb.wait()
Qt.QApplication.quit()
signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler)
timer = Qt.QTimer()
timer.start(500)
timer.timeout.connect(lambda: None)
qapp.exec_()
if __name__ == '__main__':
main()
Can you manually specify the context as the IP of your Pluto? Are you able to access Pluto through IP of other tools like IIO-Scope?
-Travis
Can you manually specify the context as the IP of your Pluto? Are you able to access Pluto through IP of other tools like IIO-Scope?
-Travis
Im getting the same error while just trying to rx in the FM demod tutorial
89echo can you create a separate thread with the flowgraph and the output of an "iio_info -S" scan from the terminal.
-Travos