AMバンドを、Gqrxとairspyhf_rxで受信してみます。
user1@Asrock ~ % airspyhf_rx -z -d -r stdout -f 0.740 -m on > iq.bin user1@Asrock ~ % python3 pyqtgraph_test2.py
2つのグラフを比べると、ほぼ同じと言えるでしょうか?
Ham Radio Blog
今、PyQtGraphを使おうとしています。
PyQtGraphとは何か?
PyQtGraph is a graphics and user interface library for Python that provides functionality commonly required in engineering and science applications. Its primary goals are 1) to provide fast, interactive graphics for displaying data (plots, video, etc.) and 2) to provide tools to aid in rapid application development (for example, property trees such as used in Qt Designer).
Airspy HF+のユーザーモードドライバがここで提供されています:
https://github.com/airspy/airspyhf
あなたは、サイトに示された手順に従って、ソフトウェアをビルドすることが出来ます。そして、あなたは以下のものを得るでしょう:
user1@Asrock ~ % ls -l /usr/local/bin/airspy* -rwxr-xr-x 1 root root 17184 Jan 7 22:54 /usr/local/bin/airspyhf_gpio -rwxr-xr-x 1 root root 17504 Jan 7 22:54 /usr/local/bin/airspyhf_info -rwxr-xr-x 1 root root 16608 Jan 7 22:54 /usr/local/bin/airspyhf_lib_version -rwxr-xr-x 1 root root 27320 Jan 7 22:54 /usr/local/bin/airspyhf_rx
ツールの1つを試してみましょう。
user1@Asrock ~ % airspyhf_info AirSpy HF library version: 1.4.2 S/N: .......... Part ID: 0x00000001 Firmware Version: R1.00.00 Available sample rate: 768 kS/s
別のツール、airspyhf_rxは、32ビット浮動小数点数のIQ信号を出力します。
user1@Asrock ~ % airspyhf_rx -z -d -r stdout -f 0.810 -m on | csdr octave_complex_c 1024 120000 --2d | octave -i > /dev/null airspyhf_rx Frequency: -f 0.810000MHz (810000 Hz) 0.768000 MS/s IQ Device Serial Number: .......... Stop with Ctrl-C Streaming at 0.768 MS/s Streaming at 0.768 MS/s Streaming at 0.768 MS/s Streaming at 0.658 MS/s Streaming at 0.680 MS/s Streaming at 0.697 MS/s Streaming at 0.697 MS/s Streaming at 0.711 MS/s Streaming at 0.723 MS/s Streaming at 0.732 MS/s Streaming at 0.739 MS/s Streaming at 0.745 MS/s Streaming at 0.749 MS/s Streaming at 0.753 MS/s
最初の行のCSDRはSDR用のDSPタスクを実行するためのコマンドラインツールです。
GNU octaveは、科学プログラミング言語で、プロッティングとビジュアリゼーションのツールを含んでいます。
さて、私はこのAirspy HF+からのIQ信号で何が出来るでしょうか?
Gqrxは、TCP接続を用いて制御を行うことが可能です。
http://gqrx.dk/doc/remote-control
これは、ローカルホストからです。
そして、これはリモートホストからです。
どちらの場合でも、あなたは、リモート制御の設定として、IPv4-mapped IPv6アドレスを与える必要があります。
user1@Asrock ~/Downloads/gqrx-sdr-2.11.5 % grep -r "ffff:127" . ./src/applications/gqrx/remote_control.cpp:#define DEFAULT_RC_ALLOWED_HOSTS "::ffff:127.0.0.1" user1@Asrock ~/Downloads/gqrx-sdr-2.11.5 % grep -r "AF_INET" . user1@Asrock ~/Downloads/gqrx-sdr-2.11.5 %
これは、Airspy HF+をGqrxを介して制御するPythonプログラムの例です。
import numpy as numpy import matplotlib.pyplot as plt import telnetlib HOST = "192.168.0.90" EXPECTED =b"dummy" TOUT = 0.5 tn = telnetlib.Telnet(HOST, 7356) xvalue = [] yvalue = [] tn.read_until(EXPECTED, timeout=TOUT*5) tn.write(b"M CW 1000\n") print(tn.read_until(EXPECTED, timeout=TOUT).decode('ascii'), end="") for freq_hz in range(500000, 1700000, 1000): freq=b"F "+str(freq_hz).encode('ascii')+b"\n" tn.write(freq) tn.read_until(EXPECTED, timeout=TOUT) tn.write(b"f\n") f = int(tn.read_until(EXPECTED, timeout=TOUT).decode('ascii')) xvalue.append(f) print(f) tn.write(b"l\n") l = float(tn.read_until(EXPECTED, timeout=TOUT).decode('ascii')) yvalue.append(l) print(l) plt.figure(1, figsize=(8,8)) plt.subplot(111) plt.title('Airspy HF+') plt.xlabel('Freq [Hz]') plt.ylabel('Signal Strength [dBm]') plt.grid(True) plt.plot(xvalue, yvalue, color='blue', linewidth=1) plt.show()
私は、ゆっくりとGitHubからGitLabへ移行中です。
ここに、私がRigExpert AA-30.Zeroのために書いた(ほぼ)全てのプログラムがあります。
あなたは、あなたのプロジェクトをGitHubからGitLabへインポートすることが出来ます。