2017年12月9日土曜日

Raspberry Pi + SDRで流星雨の電波観測を試してみる

RTL-SDRをRaspberry Piと組み合わせてスペアナ表示など機能をフルに使用するとCPU稼働率が100%を超え音切れが発生したりアプリが異常終了してしまう現象がありました。

Raspberry Pi3では発生しない(しにくい)のですが、初期モデルであるRaspberry Pi model B,B+
では、顕著に発生します。

B,B+にRTL-SDRは不向きかと思い始めましたが良い方法を思いつきました。

それはRaspberry PiにUSB接続と、Wifi管理処理だけを行わせ、Qt(GUI)環境下でスペアナ表示のFFTや復調処理など重い処理をPCか、別のRaspberry Piにお任せすることのできるSDRサーバーともいえる構成でデータ転送には有線LANか無線LANを使用したTCP接続で行う方法です。

以下にその手順を示します。
ここでは、有線LAN、無線LANの接続の方法には触れませんがお持ちの環境下でRaspberry PiのLAN接続は済ませておいてください。
また、Port5900(UDP/TCP VNC)と Port 1234 (UDP/TCP VLC data stream)を使用します。ルータやファイアウォールなどこのポートをあけておいてください。

使い方を確認するためにヘルプを表示します。

pi@SDRPI0:~/gqrx-2.6-rpi2-2 $ rtl_tcp --help
rtl_tcp: invalid option -- '-'
rtl_tcp, an I/Q spectrum server for RTL2832 based DVB-T receivers

Usage:  [-a listen address]
        [-p listen port (default: 1234)]
        [-f frequency to tune to [Hz]]
        [-g gain (default: 0 for auto)]
        [-s samplerate in Hz (default: 2048000 Hz)]
        [-b number of buffers (default: 15, set by library)]
        [-n max number of linked list buffers to keep (default: 500)]
        [-d device index (default: 0)]
        [-P ppm_error (default: 0)]
pi@SDRPI0:~/gqrx-2.6-rpi2-2 $


ここで Raspberry Pi B+ で実行可能なサンプリング周波数は2.048MHzか1.4MHzで、defalt値の2048MHzだと判りました。
ということで2.048MHzを指定します。

gain は 0:自動
最大は29です。
ここでは 28を指定しています。


pi@SDRPI0:~/gqrx-2.6-rpi2-2 $rtl_tcp -a 0.0.0.0 -s 1024000 -g 28
Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Tuned to 100000000 Hz.
listening...
Use the device argument 'rtl_tcp=0.0.0.0:1234' in OsmoSDR (gr-osmosdr) source
to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...).
client accepted!
set sample rate 2048000
set freq correction 0
set freq 100005982
set agc mode 0
set gain mode 1
set tuner gain by index 0
set freq 743262
[R82XX] PLL not locked!
set freq 10743262
[R82XX] PLL not locked!
set freq 20743262
set freq 30743262
set freq 40743262
set freq 50743262
set freq 60743262
set freq 70743262
set freq 71743262
set freq 72743262
set freq 73743262
set freq 74743262
set freq 75743262
set freq 76743262
set freq 77743262
set freq 78743262
set freq 78843262

set tuner gain by index 28
set tuner gain by index 29


CPU 負荷は90と余裕がないですが何とか動いているといった感じになります。
地元コミュニティFMを受信してみました。






pi@SDRPI0:~ $ nano wakeupSDRPI.sh
pi@SDRPI0:~ $


cd /home/pi/
rtl_tcp -a 0.0.0.0 -s 1024000 -g 28

パーミッションを実行可能なファイルに変更します。
pi@SDRPI0:~ $chmod 744 wakeupSDRPI.sh





pi@SDRPI0:~ $ ls -l .
合計 9448
-rw-r--r-- 1 pi pi 1510065 12月 8 21:19 2017-12-08-211944_1824x984_scrot.png
-rw-r--r-- 1 pi pi 2067113 12月 9 19:26 2017-12-09-192602_1824x984_scrot.png
drwxr-xr-x 2 pi pi 4096 9月 8 01:13 Desktop
drwxr-xr-x 5 pi pi 4096 9月 8 00:45 Documents
drwxr-xr-x 2 pi pi 4096 9月 8 01:13 Downloads
drwxr-xr-x 2 pi pi 4096 9月 8 01:13 Music
drwxr-xr-x 2 pi pi 4096 9月 8 01:13 Pictures
drwxr-xr-x 2 pi pi 4096 9月 8 01:13 Public
drwxr-xr-x 2 pi pi 4096 9月 8 01:13 Templates
drwxr-xr-x 2 pi pi 4096 9月 8 01:13 Videos
drwxr-xr-x 5 pi pi 4096 12月 9 10:25 gqrx-2.6-rpi2-2
-rw-r--r-- 1 pi pi 6048888 5月 25 2017 gqrx-2.6-rpi2-2.tar.xz
drwxr-xr-x 2 pi pi 4096 9月 8 00:45 python_games
-rwxr--r-- 1 pi pi 50 12月 9 20:01 wakeupSDRPI.sh
pi@SDRPI0:~ $


wakeupSDRPI.sh

autostartファイルを編集します

pi@SDRPI0:~ $ nano ~/.config/lxsession/LXDE-pi/autostart
pi@SDRPI0:~ $



@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@point-rpi

@/home/pi/wakeupSDRPI.sh



これで wakeupSDRPI.shがログイン起動時に自動実行されGQRXが自動起動することになります。






人工衛星(435MHz JAMSAT)を追いかける その⑦受信アプリインストール 実践編4

gqrxのインストールも終盤です。

予め、ダウンロード後解凍したフォルダに移動しておきます。
場所は
pi@SDRPI0:~/gqrx-2.6-rpi2-2 $

です。
もし違っていたのなら

$cd /home/pi/gqrx-2.6-rpi2-2
で移動しておきましょう。


pi@SDRPI0:~/gqrx-2.6-rpi2-2 $
pi@SDRPI0:~/gqrx-2.6-rpi2-2 $ sudo apt-get updatepi@SDRPI0:~/gqrx-2.6-rpi2-2 $ sudo apt-get upgrade
 pi@SDRPI0:~/gqrx-2.6-rpi2-2 $
sudo reboot


GUIツールQtをインストールします。

pi@SDRPI0:~/gqrx-2.6-rpi2-2 $ sudo apt-get install libqt5gui5 libqt5core5a libqt5network5


パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
libqt5core5a はすでに最新バージョン (5.7.1+dfsg-3+rpi1) です。
libqt5core5a は手動でインストールしたと設定されました。
libqt5gui5 はすでに最新バージョン (5.7.1+dfsg-3+rpi1) です。
libqt5gui5 は手動でインストールしたと設定されました。
libqt5network5 はすでに最新バージョン (5.7.1+dfsg-3+rpi1) です。
libqt5network5 は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。
pi@SDRPI0:~/gqrx-2.6-rpi2-2 $ sudo apt-get install libqt5widgets5 libqt5svg5 libportaudio2

ではインストールのためのセットアップスクリプトを実行します。
この作業は自動的に行われます。
エラーが発生せず終了するはずです。

  pi@SDRPI0:~/gqrx-2.6-rpi2-2 $./setup_gqrx.sh




では動作を確認します。

  pi@SDRPI0:~/gqrx-2.6-rpi2-2 $ ./run_gqrx.sh

これでインストールは完了です。

自動起動登録するか ショートカットを作成しておくと便利でしょう。


人工衛星(435MHz JAMSAT)を追いかける その⑥受信アプリインストール 実践編3



ここで rootから抜けます 重要
root@SDRPI0:/# exit
ログアウト

さていよいよチューナーソフトといってもfacade つまり表面的なGUI「お面」であるgqrxをインストールします。

これはRaspberry Pi 2とPi 3ではインストールするパッケージが違います。また 旧モデルの model B および B+では下記の方法では動作しません。推測ですがCPUの処理能力からも model B B+はお勧めしません。
では始めましょう


raspberry pi 2の場合

pi@SDRPI0:~ $ wget https://github.com/csete/gqrx/releases/download/v2.6/gqrx-2.6-rpi2-2.tar.xz

--2017-12-08 23:59:55--  https://github.com/csete/gqrx/releases/download/v2.6/gqrx-2.6-rpi2-2.tar.xz
github.com (github.com) をDNSに問いあわせています... 192.30.255.113, 192.30.255.112
github.com (github.com)|192.30.255.113|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://github-production-release-asset-2e65be.s3.amazonaws.com/1033271/b33d79de-ebab-11e6-8983-d1d30e4dba6b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20171208%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20171208T145956Z&X-Amz-Expires=300&X-Amz-Signature=0a6a326040ee0306ddb55e5adbb8de9c62f5534f31a5d5c84a4bb54d254720b0&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dgqrx-2.6-rpi2-2.tar.xz&response-content-type=application%2Foctet-stream [続く]
--2017-12-08 23:59:56--  https://github-production-release-asset-2e65be.s3.amazonaws.com/1033271/b33d79de-ebab-11e6-8983-d1d30e4dba6b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20171208%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20171208T145956Z&X-Amz-Expires=300&X-Amz-Signature=0a6a326040ee0306ddb55e5adbb8de9c62f5534f31a5d5c84a4bb54d254720b0&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dgqrx-2.6-rpi2-2.tar.xz&response-content-type=application%2Foctet-stream
github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com) をDNSに問いあわせています... 54.231.11.144
github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|54.231.11.144|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 6048888 (5.8M) [application/octet-stream]
`gqrx-2.6-rpi2-2.tar.xz' に保存中
gqrx-2.6-rpi2-2.tar.xz      100%[==========================================>]   5.77M  56.5KB/s    in 92s
2017-12-09 00:01:28 (64.4 KB/s) - `gqrx-2.6-rpi2-2.tar.xz' へ保存完了 [6048888/6048888]
pi@SDRPI0:~ $


解凍します。

pi@SDRPI0:~ $ tar xvf gqrx-2.6-rpi2-2.tar.xz

gqrx-2.6-rpi2-2/
gqrx-2.6-rpi2-2/gqrx_runtime.env
gqrx-2.6-rpi2-2/data/
gqrx-2.6-rpi2-2/data/rtl-sdr.rules
:
:

gqrx-2.6-rpi2-2/bin/fftw-wisdom-to-conf
gqrx-2.6-rpi2-2/setup_gqrx.sh
gqrx-2.6-rpi2-2/changelog.txt
pi@SDRPI0:~ $

2017年12月8日金曜日

人工衛星(435MHz JAMSAT)を追いかける その⑥受信アプリインストール 実践編2

少し間が開いてしまいましたが、受信アプリのインストール方法をご紹介いたします。

起動するためには、5V 2AのACアダプタ HDMI接続可能なモニタディスプレイとケーブル
USB キーボードとマウス
そしてLANケーブルとインターネット環境が必要になります。


前回作成した Raspbian Stretch のイメージを書き込んだSDカードをRaspberry Piに装着して起動します。

LXterminalを起動します。
上端のメニューバーのアイコンを見つけてクリックしてください。


アプリケーションをインストールする前に、Raspbianのアップデートを済ませておきます。
アップデートには管理者権限が必要です。rootログインします。

pi@SDRPI0:~ $ sudo su - <-- rootになります。
root@SDRPI0:~# apt-get update <--パッケージリストの読み込み
ヒット:1 http://archive.raspberrypi.org/debian stretch InRelease
ヒット:2 http://mirrordirector.raspbian.org/raspbian stretch InRelease
パッケージリストを読み込んでいます... 完了
root@SDRPI0:~# apt-get upgrade   <--- アップデート
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージは保留されます:
  gstreamer1.0-omx raspberrypi-ui-mods
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。
root@SDRPI0:~#





OSのバージョンのを確認します。
root@SDRPI0:~# uname -a

Linux SDRPI0 4.9.59+ #1047 Sun Oct 29 11:47:10 GMT 2017 armv6l GNU/Linux
root@SDRPI0:~# cat /etc/os-release

PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
root@SDRPI0:~#


RTL-SDRをRaspberry Pi のUSBポートに接続します
lsusbコマンドで認識されているUSBデバイスを表示します。

root@SDRPI0:~# lsusb
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@SDRPI0:~# lsusb
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying ReceiverBus 001 Device 005: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-TBus 001 Device003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@SDRPI0:~#


SDRチューナーが認識されていますね。

この確認ができたのならドライバをインストールします。

root@SDRPI0:~# apt-get install rtl-sdr
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  librtlsdr0
以下のパッケージが新たにインストールされます:
  librtlsdr0 rtl-sdr
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 2 個。
76.8 kB のアーカイブを取得する必要があります。
この操作後に追加で 261 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://archive.raspberrypi.org/debian stretch/main armhf librtlsdr0 armhf 0.5.3-11+rpt1 [25.1 kB]
取得:2 http://archive.raspberrypi.org/debian stretch/main armhf rtl-sdr armhf 0.5.3-11+rpt1 [51.7 kB]
76.8 kB を 2秒 で取得しました (27.2 kB/s)
以前に未選択のパッケージ librtlsdr0:armhf を選択しています。
(データベースを読み込んでいます ... 現在 122961 個のファイルとディレクトリがインストールされています。)
.../librtlsdr0_0.5.3-11+rpt1_armhf.deb を展開する準備をしています ...
librtlsdr0:armhf (0.5.3-11+rpt1) を展開しています...
以前に未選択のパッケージ rtl-sdr を選択しています。
.../rtl-sdr_0.5.3-11+rpt1_armhf.deb を展開する準備をしています ...
rtl-sdr (0.5.3-11+rpt1) を展開しています...
librtlsdr0:armhf (0.5.3-11+rpt1) を設定しています ...
libc-bin (2.24-11+deb9u1) のトリガを処理しています ...
man-db (2.7.6.1-2) のトリガを処理しています ...
rtl-sdr (0.5.3-11+rpt1) を設定しています ...
root@SDRPI0:~#



root@SDRPI0:~# rtl_test
Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Sampling at 2048000 S/s.
Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.
Reading samples in async mode...
lost at least 72 bytes
^CSignal caught, exiting!
User cancel, exiting...
Samples per million lost (minimum): 2
Reattached kernel driver
root@SDRPI0:~#









ラグチューキーパー Ragchew keeper rev4.3 復刻予定版 その⑤

 自動配線と ベタGND の配置が終わりました。 配線ルールは0.7mmです。 0.8mmでは自動配線が完了せずにジャンパーが数本残ってしまいました。 あとは削ってみてどうかといったところです。