ADS-Bを自宅で受信して自宅近辺の航空機を見てみる
ADS-Bを自宅で受信して自宅近辺の航空機を見てみる
ADS-B(Automatic Dependent Surveillance-Broadcast)の仕組み
基本動作原理
ADS-Bは航空機搭載のGPS受信機とトランスポンダーを組み合わせたシステムです。GPS衛星から正確な位置情報を取得し、1090MHz帯の電波で周囲に放送します。
データ送信の流れ
- GPS測位: 航空機がGPS衛星から位置・時刻情報を受信
- データ生成: 位置、速度、高度、機体識別情報をパケット化
- 自動送信: 1090MHz Extended Squitterで毎秒1-2回放送
- 受信・処理: 他の航空機や地上局が信号を受信・解析
技術的特徴
• Mode S拡張: 既存のSSRトランスポンダー技術を拡張
• 非暗号化: オープンな信号形式で誰でも受信可能
• 自律動作: 管制官の問い合わせ不要で自動送信
自宅でこのメッセージを受信し、デコードできれば航空機の位置情報などがわかります。
Raspberry Pi + PiAwareイメージ
ここのショッピングリストに従ってPiAwareイメージで作る方法が一番簡単だと思う。
FlightAwareのフィーダーになる必要がありますが、大体の方がFilghtAwareと同時にflightrader24に
フィードしたいと考える気がするのでこの方法が簡単です。
受信機とかアンテナはこの辺りを買えば大丈夫です。
本格的に受信したければ、屋外の高い位置にアンテナをあげると受信範囲が
広がります。私は近所の電気屋さんにお願いしてテレビアンテナと一緒に
設置してもらいました。
PiAwareの画面
http://<Raspberry Piのアドレス>:8080でアクセスすると受信した
航空機の位置情報を確認することができます。
データの取得方法
RESTで取得
航空機の位置情報を取得するREST APIは以下からアクセスできます。
http://<Raspberry Piのアドレス>:8080/data/aircraft.json
ソケット通信で取得
30003ポートにncで接続するとストリームデータとして航空機の位置情報を取得することができます。
pi@raspberrypi:~ $ nc -v localhost 30003
Connection to localhost (::1) 30003 port [tcp/*] succeeded!
MSG,7,1,1,AC6744,1,2025/09/23,09:35:57.295,2025/09/23,09:35:57.349,,23250,,,,,,,,,,
MSG,4,1,1,84D28E,1,2025/09/23,09:35:57.297,2025/09/23,09:35:57.349,,,365,271,,,2304,,,,,0
MSG,4,1,1,861AE1,1,2025/09/23,09:35:57.297,2025/09/23,09:35:57.350,,,363,277,,,2304,,,,,0
MSG,7,1,1,84D28E,1,2025/09/23,09:35:57.300,2025/09/23,09:35:57.350,,24900,,,,,,,,,,
MSG,8,1,1,84B83E,1,2025/09/23,09:35:57.307,2025/09/23,09:35:57.352,,,,,,,,,,,,0
RESTよりも詳細な情報を取得することができます。
フォーマットについてはこちらに詳細があります。
そのほかの設定
Raspberry PIの定期的な再起動
24/365で稼働させ続けていると固まって動作しないことがあったので、
深夜にRaspberry Piを再起動させています。
この辺りを参考に作成しました。
/etc/systemd/systemに以下2つのファイルを作成
pi@raspberrypi:/etc/systemd/system $ cat sched-reboot.service
[Unit]
Description=Scheduled Reboot
[Service]
Type=simple
ExecStart=/usr/bin/systemctl --force reboot
pi@raspberrypi:/etc/systemd/system $ cat sched-reboot.timer
[Unit]
Description=Reboot Scheduling.
[Timer]
OnCalendar=*-*-* 01:39:00
[Install]
WantedBy=multi-user.target
タイマーの有効化
sudo systemctl enable shed-reboot.timer
タイマーのステータスを確認
pi@raspberrypi:/etc/systemd/system $ sudo systemctl status sched-reboot.timer
● sched-reboot.timer - Reboot Scheduling.
Loaded: loaded (/etc/systemd/system/sched-reboot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Tue 2025-09-23 01:39:06 JST; 8h ago
Trigger: Wed 2025-09-24 01:39:00 JST; 15h left
Triggers: ● sched-reboot.service
Discussion