2019年10月6日日曜日

2D グラフ リアルタイム表示



2019年07月10日に更新

PythonでGUI画面とリアルタイムグラフ表示する

前提

急にGUIを作れと言われた。ボタンとかでいろいろ制御できるリアルタイムグラフ描画をしたいが、性能は問われない。
gnuplot触ったことないし、C#もよくわからんが、Pythonは触ったことあるのでmatplotlibを使ってみる。
難しいこととか変な(?)ライブラリへの依存はしたくないのでPython3系のtkinterを使う。
表示したいのは以下。
  • 折れ線グラフ複数
  • カラーマップと対応するカラーバー
  • 制御用のボタンとか
事前にpip install numpy matplotlibしておく必要がある。
(Ubuntuの場合はその前にsudo apt install python3-pip python3-tkしておく)

詳細

最初の一歩

ボタンとグラフを同時に表示する必要があるので、matplotlib.orgの検索窓にでtkinterと入れてみる。
するとEmbedding in Tkが一番上にある。
それから、リアルタイム描画ということでアニメーションする必要があるので、同様にanimationと入れてみる。
すると、今度は少し下のほうにAnimated line plotが見つかる。
今回はボタンなどを配置しつつアニメーションしたいので上記二つを組み合わせる必要がある。

Animated plot in Tk

Embedding in TkAnimated line plotを合体して、少し整理した。
#!/usr/bin/env python3


# https://matplotlib.org/gallery/user_interfaces/embedding_in_tk_sgskip.html
# https://matplotlib.org/gallery/animation/simple_anim.html


import tkinter

from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.figure import Figure
import matplotlib.animation as animation

import numpy as np


def _quit():
    root.quit()     # stops mainloop
    root.destroy()  # this is necessary on Windows to prevent
                    # Fatal Python Error: PyEval_RestoreThread: NULL tstate


def init():  # only required for blitting to give a clean slate.
    line.set_ydata(np.sin(x))
    return line,


def animate(i):
    line.set_ydata(np.sin(x + i))  # update the data.
    return line,


root = tkinter.Tk()
root.wm_title("Embedding in Tk anim")

fig = Figure()
# FuncAnimationより前に呼ぶ必要がある
canvas = FigureCanvasTkAgg(fig, master=root)  # A tk.DrawingArea.

x = np.arange(0, 3, 0.01)  # x軸(固定の値)
l = np.arange(0, 8, 0.01)  # 表示期間(FuncAnimationで指定する関数の引数になる)
plt = fig.add_subplot(111)
plt.set_ylim([-1.1, 1.1])
line, = plt.plot(x, np.sin(x))

ani = animation.FuncAnimation(fig, animate, l,
    init_func=init, interval=10, blit=True,
    )

toolbar = NavigationToolbar2Tk(canvas, root)
canvas.get_tk_widget().pack()

button = tkinter.Button(master=root, text="Quit", command=_quit)
button.pack()

tkinter.mainloop()
ボタンとかは、普通にtkinterで配置できる。

見た目

Embedding_in_Tk_anim.gif

注意点

  • animation.FuncAnimation()で返ってくるオブジェクト(上記コードではani)の参照がない(?)とグラフが更新されないことがある。
    クラスにした場合は、self.aniとかに格納して大事に持っておく必要がある。
    (上記コードでは、ani = ...がないとだめかもしれない。)
  • set_ydata()とかset_data()では、データ以外の表示は更新されない。
    Y軸範囲を自動追従したい場合とかは、自前でset_ylim()する必要がある。
  • blit=Trueだとグラフが更新されない(軸ラベルだけの更新とかが反映されない)ことがある。
    ボタンでX軸表示モード変えたいのに変わらない時はblit=Falseにしてみるといいかもしれない。

python 3D



https://qiita.com/orange_u/items/8a1e285a45093857aef7  を参照

Python 3:3次元グラフの書き方(matplotlib, pyplot, mplot3d, MPL)

この記事は最終更新日から1年以上が経過しています。

3次元のグラフの書き方

ニューラルネットワークの学習で現れる,偏微分(勾配)の理解のため3次元グラフを描いてみる.(参考:数値微分)
Pythonで,NumPyとmatplotlibを使って3次元グラフを描く

準備

  • 3次元なのでmpl_toolkits.mplot3dなどをインポート
ex1-1.py
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
  • 引数の2乗和を計算する関数を例として考える
ex1-2.py
def func1(x, y):
    return x**2 + y**2
  • 描写データの作成
    • 3次元で描写するには2次元メッシュが必要
    • 2次元配列をarangeを用いて作る
    • x, y をそれぞれ1次元領域で分割する
ex1-3.py
x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-3.0, 3.0, 0.1)
  • 2次元メッシュはmeshgridでつくる
    • Xの行にxの行列を,Yは列にyの配列を入れたものになっている
ex1-3.py
X, Y = np.meshgrid(x, y)
Z = func1(X, Y)
  • グラフの作成
    • figureで2次元の図を生成する
    • その後,Axes3D関数で3次元にする
ex1-4.py
fig = plt.figure()
ax = Axes3D(fig)
  • 軸ラベルの設定
ex1-5.py
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("f(x, y)")
-グラフ描写
ex1-6.py
ax.plot_wireframe(X, Y, Z)
plt.show()

以上をまとめて実装すれば,以下のような3次元のグラフが描画されます.


ex1.png

plotのプロパティとして,color(線の色),linestyle(線の種類),マーカーの種類などが変更できる.

2019年9月24日火曜日



インストールするツールを選択、デフォルトの設定で特に問題ないと思います。
次の画面ではインストール先を選択します。デフォルトでは/tools/Xilinxとなっているので問題なければインストールを開始する。時間は40分くらい

Cable_driverのインストール

ボードもしくはプログラミングケーブル用のデバイスドライバーはインストールされていませんので、これらは個別にインストールする必要があります。/tools/Xilinxにインストールした場合、インストールは次のようにします。
cd /tools/Xilinx/Vivado/2019.1/data/xicom/cable_drivers/lin64/install_script/install_drivers/
sudo ./install_drivers 

Vivadoの設定

このままではterminalでvivadoと打ってもvivadoは立ち上がりません。なので、まず、好きなエディタで~/.bashrcを開き、
sudo emacs ~/.bashrc 
以下のコードを付け加え、settings64.shを走らせるようにする。
source /tools/Xilinx/SDK/2019.1/settings64.sh 
保存をし、~/.bashrcをsourceする。
source ~/.bashrc

2019年9月17日火曜日



ルスクリプトを作成してpythonファイルを複数回動かす



この記事は最終更新日から1年以上が経過しています。

シェルスクリプトを作成してpythonファイルを複数回動かす

実施環境

  • OS:Ubuntu 14.04.4 LTS

今回のディレクトリ構成例

home
└── user1
  └── src
   ├─── test.sh
   └─── test.py

手順

  1. 動かしたいpythonファイルを用意する
  2. シェルスクリプトを作成する
  3. シェルスクリプトを実行する

1. 動かしたいpythonファイルを用意する

test.py

test.py
# -*- coding: utf-8 -*-

print u'こんにちは'.encode('UTF-8')

2. シェルスクリプトを作成する

test.sh

test.sh
#!/bin/sh

ARRAY=(1 2 3 4)

for num in ${ARRAY[@]}; do
    /usr/bin/python /home/user1/src/test.py
    echo $num"回目のループです"
done

3. シェルスクリプトを実行する

下記のコマンドで起動するシェルスクリプトを指定しつつ実行する
コマンド:bash /home/user1/src/test.sh

実行結果例

リポジトリ変更など


リポジトリの変更

デフォルトでは海外サーバーにリポジトリのデータを取りに行ってしまいます。
これだと通信速度が遅くなってしまうので、日本のサーバーに切り替えます。
次のコマンドを入力して、切り替えてください。
sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list

パッケージのアップデート

あくまでLinuxが乗っかっているので、パッケージのアップデートも日々行ってください。
コマンドはいつも通りですが、紹介します。
sudo apt update
sudo apt upgrade
まだ若干不安定で、aptコマンドの進捗バーがちらついたりなど
色々おかしくなることがありますが、温かい目で見守っていきましょう。
たまに描画がストップして、固まったようになってしまうことがありますが、
こうなった場合は一度Enterキーを押してあげると治りますので試してみてください。

https://qiita.com/Aruneko/items/c79810b0b015bebf30bb 参照

2019年8月27日火曜日

SDRやっとこさ

すごく参考になる。サイトのメモ
https://www.ishikawa-lab.com/index.html 石川氏のサイトから

RaspberryPiによるADS-B受信機
SDR(Software Defined Radio)「ソフトウエアラジオ」という方式があります。これは出力や周波数帯、変調方式などが異なるさまざまな無線通信手段を、1台の無線機のソフトウエアを書き換えることで対 応する技術です。言いかえると、汎用的なハードウエアを用いて通信を行い、従来は半導体が行ってきた方式依存の処理の大部分をソフトウエアで行います。新 しい通信方式が登場すると新しいソフトウエアを取得して通信機器に送り込むことで、ハードウエアを交換する必要がありません。
 これを実現するために従来は、高度な信号処理プロセッサを用いる必要があり、手が出せませんでしたが、QSTというアマチュア無線の雑誌2013年1月号に、パソコン用のUSBタイプのワンセグTVチューナー(日本の方式とは異なるDVB-T方式)を用いると簡単に実現できることが発表され、一躍世界に広がりました。
Cheap and Easy SDR
 これはQST 2013年1月号のタイトルです。ドングル(Dongle)とは「コンピューターのUSBポートに接続する小さな装置」を指 すため、もっぱらこのチューナーは「ドングル」と呼ばれます。価格は20ドル前後と手ごろであり、生産は中国、日本でもインターネット通販で安価に手に入ります。
 さて、そのソフトウエアラジオでなにを受信するかですが、ADS-B(Automatic Dependent Surveillance-Broadcast)を受信しようと思います。
 ADS-Bは航空機から1090MHzの周波数で、航空機識別子、GPSによる現在位置、高度、速度などを含む信号をたえず放送的に発信しており、この情報を地上や航空機間で利用することでより安全に航空機を運用できるようにするものです。近年これに対応したトランスポンダを搭載する航空機が増えてきています。それを受信し、パソコン地図上に仮想レーダのように、航空機を表示しようとするものです。
 (2019/07/29更新)

 仮想レーダ画面
Flightradar24へ情報を提供する
Flightradar24(フライトレーダー24)は飛行中の民間航空機の現在位置をリアルタイム表示するWebサービスです。Wikipediaによると、2006年、2名のスウェーデンの航空ファンがヨーロッパ北部・中部のADS-B受信ネットワークの構築をスタートし、たくさんの人誰で受信したADS-BのデータをFlightradar24のサーバに送信できるシステムとして公開されたため、世界各国の航空ファ ンによってレーダーの対応範囲は拡大し、現在はヨーロッパ、アメリカをはじめとして世界中ひろくボランティアが参加者がいます。従来は航空管制官やパイロットしか知ることのできなかった航空機の位置情報・飛行経路が手軽に取得できるため、航空事故発生時にマスメディアの情報源として用いられることもあるようです。Flightradar24が推奨するADS-B受信機がありますが高価(800ユーロ)で、ここに述べてきたDVB-Tドングルとソフトウェアラジオによる受信機が普及したため、一気に情報提供者が増加しています。
 ここではRaspberryPiによるADS-B受信機でFlightradar24に情報をアップし、ボランティアの仲間入りをしたいと思います。
 
 2019年5月、いままで動いていたfr24feedが動かなくなり、RaspberryPiを2台使う新しい方式に変更しました。(2019/07/28)


ドングル(DVB-T+DAB+FM USB チューナー RTL2832U+R820T)はアマゾンで入手できます。簡易包装で送られてきたセットはドングルの他にアンテナとリモコン、CDがついており、これが1000円~2000円(価格は時々変わる)。リモコン、CDの使い道はありませんがアンテナは、さまざまな実験用に使えましすし、特殊なMCXコネクタはあとで部品として貴重です。
 ドングルのなかをのぞいてみると、キー部品の信号処理LSI Realtek RTL2832U とチューナLSI Rafael Micro R820T がみえます。
 一部に、ドングルの製造が雑で、USBの接続が不安定、あるいは周波数がずれているなどの報告がありますが、そのようなことはなく、充分安定に使えました。
なお、デコーダーチップのRTL2832Uを積んだチューナーとSDRソフトを使ったソフトウェア受信をRTL-SDRと呼んでいます。

 RaspberryPiでソフトウエアラジオを動かすために必要なソフトを準備します。手順はこちらを参考にしました。

1. 必要なパッケージをインストール
$ sudo apt-get update
$ sudo apt-get install git
$ sudo apt-get install cmake
$ sudo apt-get install libusb-1.0-0.dev
$ sudo apt-get install build-essential
$ sudo apt-get install pkg-config


2. rtl-sdrのソースの取得
つぎに最も重要なソウトウェアラジオ用パッケージであるrtl-sdrを本家からインストールします。
$ git clone git://git.osmocom.org/rtl-sdr.git

3. rtl-sdrをビルド
$ cd rtl-sdr
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
$ sudo ldconfig
$ sudo cp rtl-sdr.rules /etc/udev/rules.d/


4./etc/modprobe.d/ディレクトリにrtl-tcp-blacklist.confというファイルを下記の内容で作成

$ sudo nano /etc/modprobe.d/rtl-tcp-blacklist.conf 
blacklist dvb_usb_rtl28xxu
blacklist rtl2830
blacklist dvb_usb_v2
blacklist dvb_core
一度念のためリブートしておきます。

上のようにドングルをRaspberryPiのUSBにさし、つぎの確認を行います。
$ lsusb
Bus 001 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T

$ rtl_test
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
・・・・


 これでソフトラジオがRaspberryPiで実現できましたので、試しにFMラジオを受信してみます。例えば79.5MHzにチューニングする場合
次のコマンドをRaspberryPiのコマンドラインから入力します。
$ rtl_fm -f 79.5M -M fm -s 200000 -r 48000 - | aplay -r 48k -f S16_LE

RaspberryPiのイヤホンジャックにイヤホンをさしこむと、FM埼玉が聞こえます。

次にRaspberryPiのソフトラジオをWindows親機からリモート操作する練習を行います。

1.Windowsパソコン側のSDRソフトのダウンロード
 SDRSharpというソフトを使います。Dawnloadsページ
  http://sdrsharp.com/index.php/downloads 
を開きます。

 Dawnloadsページの中ほど「Important note for RTL-SDR users」の項目にある、
 sdr-install.zip ファイルをダウンロードします。

2.ファイルの解凍とインストール
 PCがインターネットアクセスできる環境であることを確認し、解凍したフォルダの中の、install.bat をダブルクリックします。自動的にsdrsharpフォルダーが作成され、その中にSDR#の必要なファイル群がインターネット経由でダウンロードされます。ダウンロードが終了し たら、sdrsharpフォルダーを開き、中に、 zadig.exe と SDRSharp.exe が保存されていることを確認します。

3.RaspberryPiで次を実行

$ rtl_tcp -a 0.0.0.0

4.Windows側でSDRSharp.exe を起動すると、次のような画面が現れる
 Source のプルダウンメニューを RTL-SDR/TCP とし、歯車形のConfigure ボタンをクリック
サブウィンドウが現れるので、Hostに、RaspberryPiのIPアドレスを記入し、Port が1234を確認しクローズ
Radio のWFM ボタンを指定
一番上の大きな数字に、受信したい放送局の周波数を指定
3角のスタートボタンをクリック



 右側のスライダを適宜調整すると、このような画面があらわれます。またパソコンのスピーカから音声が聞こえます。
終了するには、RaspberryPi側でctr-C
Modesdeco2を導入
いよいよ、ADS-Bの受信設定です。ADS-Bの情報を受信しそれをデコードするフリーソフトには、いくつかあります。ここでは評判の良いModesdeco2を使います。上で説明したソフトラジオ用のデコーダソフトは使わず、これだけで動作するようです。こちらを参考にしました。
1.まずは、 RaspberryPi用の modesdeco2 のダウンロードです。
$ wget https://drive.google.com/open?id=1WhheW-I4_1sb3VUXa9bcs8XEkh9fn_Lh

2.ファイルを展開します
$ tar xfz modesdeco2_rpi2-3_deb9_20180729.tgz

3.これでソフトの準備が出来ました。たくさんのパラメータ指定があります。しらべるには
$ ./modesdeco2 --help

4. modesdeco2の起動
 設置されているサイトの、緯度経度を調べておきます。60進ではなく少数以下4桁まで指定します。そしてつぎのように起動します。
$ ./modesdeco2 --gain 49.6 --avrmlat 30002 --rbs --location 35.xxxx:139.xxxx --web 8080
2015-04-03 12:48:31.428 INFO ModeSDeco2 v.20150321
2015-04-03 12:48:31.482 INFO Magnetic declinations coefficient file wmm.cof load successful
2015-04-03 12:48:31.513 INFO Using device: 0 mnf: Realtek prod: RTL2838UHIDIR serial: 00000001
2015-04-03 12:48:32.034 INFO Supported Gains (dB): 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
2015-04-03 12:48:32.036 INFO Sample Rate: 2.0 MHz
2015-04-03 12:48:32.038 INFO Freq: 1090.0 MHz
2015-04-03 12:48:32.039 INFO Freq Correction: 0 ppm
2015-04-03 12:48:32.093 INFO Gain: 49.6 dB
ADS-Bが正常に動き出しました。
--avrmlat 30002 はAVR format with MLAT style timestampsで、のちほどつかいます。

4.LANにつながっている、パソコンのブラウザからアドレスを
http://192.168.x.xxx:8080/

とすれば、このページのトップのような仮想レーダの画面が映し出されます。

RaspberryPiからFlightradar24へ情報をアップロードする(これをフィードといいます)プログラムをインストールします。最新の方法はこちらにあります。 またマニュアルがこちらです。(2019/07/28更新)

マニュアルによれば、デコードソフトdump1090が自動でインストールされ、以前に比べ格段に簡単になっています。私の場合はうえで構成したModesdeco2(アドレスは192.168.x.xxx)はそのまま生かして、Flightradar24へのフィードだけを、LAN接続された別のRaspberryPi(アドレスは192.168.x.yyy)から行うこととしました。

別のRaspberryPiからつぎのコマンドを実行し、fr24feedをインストールします。
$ sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"

事前準備
1.ADS-B受信機をこのコンピュータに接続するかLAN経由でアクセスできるようにしておくこと
2.アンテナの緯度 アンテナの経度 アンテナの海抜の正確な値を準備(MLATの場合)
3.ただしいメールアドレス
4.このコンピュータですでに fr24feed が動いているならば、停止しておく : sudo systemctl stop fr24feed

次のコマンドで設定していく
$ fr24feed --signup
(一部省略 すでにシェアリングキーを持っている場合の例)


Welcome to the FR24 Decoder/Feeder sign up wizard!

Before you continue please make sure that:

1 - Your ADS-B receiver is connected to this computer or is accessible over network
2 - You know your antenna's latitude/longitude up to 4 decimal points and the altitude in feet
3 - You have a working email address that will be used to contact you
4 - fr24feed service is stopped. If not, please run: sudo systemctl stop fr24feed

To terminate - press Ctrl+C at any point ( Ctrl+C で途中放棄できる)


Step 1.1 - Enter your email address (username@domain.tld)
$username@domain.tld (自分のアドレス)

Step 1.2 - If you used to feed FR24 with ADS-B data before enter your sharing key.
If you don't remember your sharing key, pelase use the retrival form:
https://feed.flightradar24.com/forgotten_key.php

Otherwise leave this field empty and continue.
$:シェアリングキー (すでにシェアリングキーを持っている場合)

Verifying sharing key...OK



Step 1.3 - Would you like to participate in MLAT calculations? (yes/no)$:yes

IMPORTANT: For MLAT calculations the antenna's location should be entered very precise!

Step 3.A - Enter antenna's latitude (DD.DDDD)
$:北緯

Step 3.B - Enter antenna's longitude (DDD.DDDD)
$:東経

Step 3.C - Enter antenna's altitude above the sea level (in feet)
$:海抜

Using latitude: DD.DDDD, longitude: DDD.DDDD, altitude: xxxft above sea level

Step 4.1 - Receiver selection (in order to run MLAT please use DVB-T stick with dump1090 utility bundled with fr24feed):

1 - DVBT Stick (USB)
-----------------------------------------------------
2 - SBS1/SBS1er (USB/Network)
3 - SBS3 (USB/Network)
4 - ModeS Beast (USB/Network)
5 - AVR Compatible (DVBT over network, etc) (今回はこれ)
6 - microADSB (USB/Network)
7 - SBSx via Basestation (localhost:30006)


Enter your receiver type (1-7)$:5

Step 4.2 - Please select connection type:

1 - Network connection
2 - USB directly to this computer

Enter your connection type (1-2)$:1

Step 4.3A - Please enter your receiver's IP address/hostname
$:192.168.x.xxx (modesdeco2 のアドレス)

Step 4.3B - Please enter your receiver's data port number
$:30002 (avrmlatのポート番号)

Step 5.1 - Would you like to enable RAW data feed on port 30334 (yes/no)$:no

Step 5.2 - Would you like to enable Basestation data feed on port 30003 (yes/no)$:no

Step 6A - Please select desired logfile mode:
0 - Disabled
1 - 48 hour, 24h rotation
2 - 72 hour, 24h rotation
Select logfile mode (0-2)$:1

Step 6B - Please enter desired logfile path (/var/log/fr24feed):
$:

Submitting form data...OK

Congratulations! You are now registered and ready to share ADS-D data with Flightradar24.
+ Your radar id is T-RJTY44, please include it in all email communication with us.
+ Please make sure to start sharing data within one month from now as otherwise your ID/KEY will be deleted.

Thank you for supporting Flightradar24! We hope that you will enjoy our Premium services that will be available to you when you become an active feeder.

To start sending data now please execute:
sudo systemctl start fr24feed

Saving settings to /etc/fr24feed.ini...OK
Settings saved, please run "sudo systemctl restart fr24feed" to use new configuration.

modesdeco2のAVR出力を、fr24feedに食わせるため、Step4では「5 - AVR Compatible」 を選択し、modesdeco2の動いているRaspberryPiのIPアドレス192.168.x.xxx、ポート番号30002を入力しています。

フィードを開始するには
$ sudo systemctl start fr24feed

RaspberryPiをスタートさせると、常にfr24feedは動いています。
$ sudo service fr24feed status
により、Active: active (running)が表示されれば、正常にフィードされています。
さらに
$ fr24feed --status で動作状態を表示できます。

また、LAN接続されたほかのPCのブラウザからは次のアドレスで、状態を見ることができます。
http://192.168.x.yyy:8754

設定ファイルは/etc/fr24feed.iniにあります。

fr24feedを停止させる場合は
sudo systemctl stop fr24feed


そのほかのよく使うコマンド
fr24feed --help ヘルプ
fr24feed --fr24key=0123456789ABCDEF 手動でフィード開始
fr24feed --signup サインアップと構成
fr24feed --reconfigure
 構成変更

fr24feed --version version 番号


つぎに、Flightradar24のWebにアクセスして、フィードのサインアップに使用したメールアドレスで、アカウントを作っておきます。アカウントの作成はフィードのサインアップとは別に行う必要があります。同じメールアドレスを使う必要があります。
 Flightradar24にログインすると、自分のフィードの情報を確認することができます。数時間動作させた後であれば、受信した航空機やメッセージ数、距離や方向などの統計情報を確認することができます。
 フィードが動作しているならFlightradar24のプレミアムサービスが無料で利用可能です。表示時間の制限が無くなり、その他全画面表示や、レーダービューなどを見ることができます。さらにスマホから、FR24Premium が無料で使えるようになります。
ひととおりうまく設定できたので、本番に移ります。なにより重要なのは、アンテナです。とりあえず付属のアンテナを室内に置いていただけですので、これでは不十分です。
 いろいろな製作例を参考にしながら、簡単で性能の良さそうなグランド・プレーンアンテナを作ります。
アンテナの基礎から応用までによる固い電力コードの芯線を使いました。
気象観測用のポールの先端に設置。地上高約7m 海抜100m

 グランド・プレーンアンテナは図のように、1/4波長の放射素子に、地面を模したラジアルを配置したもので、無指向アンテナです。ADS-Bは1060MHzですから、放射素子、ラジアルとも、
エレメント長 = 300/1090MHz x 1/4 x 0.95 = 65mm
となり、適当な銅線を切断し、BNCコネクタのセンタと、アース側に4本配置しました。それを水道用の塩ビパイプのふたに穴をあけ取り付け、気象観測用のポールの先端に設置しました。


 つぎにドングルですが、アマゾンで本番用にあたらしい改良版を購入しました。これは チューナLSIに新型のR820T2を実装し、周波数偏差/周波数温度特性とも±10PPM以下の日本製高精度水晶発振子に国内で交換作業したものです。
 予備実験でわかったことですが、主要部品のRTL2832U と R820TのLSIは、運用中に手で触れないほど高温になります。そのため図のようにヒートシンクを用い、かつメタルのケースに熱を逃すようにしました。かなり効果があります。
 ドングルとアンテナの配線長は短い方がよいので、ドングルは金属ケースにいれ、軒下に設置。RaspberryPiとはUSB接続

裏側に大きめのヒートシンク2個を熱伝導テープで貼り付け
改良版ドングル(上) 赤丸は表面実装水晶発振子
金属ケースにドングルをねじ止め。こちら側にもLSIにヒートシンク
BNCコネクタに変換ケーブルで出力
ドングルは軒下に(ふたをはずしてある)。左は2A、5Vの電源と共にケースに入れたRaspberryPi。雷センサ用の基板がついている。

Flightradar24ではさまざまなフィードされたデータの中から、選択し、一つの画面を構成しています。自分のPC上では20数機とらえていますが、東京ようにたくさんの情報提供者がいる地域では、なかなか激戦で採用されません。どのようなアルゴリズムで多数の情報から選択しているのか不明ですが、少なくとも受信レベルを報告しているので、これによっているものと思われます。
 下は、当方のデータが使われた例です。 これで皆さんに仲間入りできました。


 数週間運用後、Flightradar24の自分のアカウントをみると、下のような統計データが表示されます。西側が開けた地形のため、200ノーチカルマイル(1ノーチカルマイル=1.852km)、名古屋上空まで見えています。1GHzの電波は直進性が強く障害物(山、樹木)を回り込まないため、南東の特に高度の低い航空機はとらえられず、残念ながら羽田や成田の発着は見えません。


参考:Flightradar24における最近の事故例(動画で見えます 2019/03/18追記)
2014/03/08 マレーシア航空370便 クアラルンプール発北京行 行方不明
2014/07/17 マレーシア航空17便 アムステルダム発クアラルンプール行 ウクライナ上空で撃墜
2015/03/24 ジャーマンウィングズ9525便 バルセロナ発デュッセルドルフ行 フランスアルプスに激突
2016/05/12 エジプト航空804便 パリからカイロへ向かっている途中に、レーダーから機影が消えた
2018/10/29 インドネシアのライオン・エアJT610便 ジャカルタ発パンカルピナン行きのボーイング737 MAX 8が墜落
2019/03/10 エチオピア航空ET302便 アディスアベバ発ナイロビ行きのボーイング737 MAX 8型機墜落