GNURadioでTTGO-Beamの信号をgr-loraで受信する

LoRa Decodeブロックが複数あるため、それぞれ紹介する。

rpp0/gr-lora

TTGO-BeamからのLoRa信号をRTL-SDRで受信し、GNU Radioのgr-loraブロックにより復号することを試みる。今回は以下の条件で行った。

  • GNU Radio : 3.8
  • OS : Doker Arch Linux on Docker
  • Receiver: RTL-SDR
  • Transmitter : TTGO-Beam

環境構築・実行

gr-loraは、rpp0/gr-loraを利用し、READMEに記載のDocker Installationにより、gr-lora環境を構築した。

GitHub - rpp0/gr-lora: GNU Radio blocks for receiving LoRa modulated radio messages using SDR

 

Dockerコンテナへ接続後、Sampleの"lora_receive_realtime.grc”を実行。

git clone https://github.com/rpp0/gr-lora.git .
cd docker/
./docker_run_grlora.sh
gnuradio-companion lora_receive_realtime.py

FrequencyとSpreading Factorを適切に設定し、TTGO-BeamからRTL-SDRへ信号を入力した結果を載せる。今回はTarget 923.2MHz(Center923.0MHz)、SF9とした。

GNURadio コンソールにCSV形式で送信したデータが16進表示されている。2C(コンマ、Comma)が頻繁に現れている。Water FallはCenter周波数0MHzから上側に200kHz離れたTarget周波数でチャープ変調している。

f:id:jijiken0417:20200405152632p:plain

 

追記

GNURadio3.7で動かす場合は、3,7branchを利用するのが良い。

GNURadio3.7にてLimeSDRでも動作した。

gr-loraに同梱のMessage Socket Sinkに復号データを渡すと、UDPで指定portへ送信できる。

f:id:jijiken0417:20200405163906p:plain

 

BastilleResearch /gr-lora

GitHub - myriadrf/LoRa-SDR: An SDR LoRa implementation for R&D にソースコードがあるが、Mod/Demodブロックが何の信号を入出力するのかわからなかった。

 

後日 LoRa modem with LimeSDR – MyriadRF を見るとGNURadioよりもデータフローがビジュアル化されてわかりやすいPothos(ブロックはほぼ共通?)で使われているような事例があった。Mod/DemodeはSDR Sink/Soureceと直接接続すれば良いので、rpp0/gr-loraと使い方は同じでbit列をベースバンド信号に変換してくれるようだ。f:id:jijiken0417:20200405233156p:plain

GRConで発表されておられるMATT KNIGHTさんの名前があるため、元のソースはGRCとPhotosで共通なのだと思われる。