Technical Information/Raspberry Pi
The Things Netowrk への接続手順 (DRAGINO LoRa GPS HAT-JP使用)
2019/06/29
以下の記事では、これらのサイトで紹介されている方法を参考に、The Things Network のゲートウェイを設置する手順をまとめてあります。(最新の環境に合わせ一部を変更しています)
※ Global_conf.json の記載に抜けがあったので追加しました。 2020/5/31
Raspberry Pi と LoRa GPS HAT の設定
使用するもの
- Raspberry Pi3 model B
- マイクロSDカード 16GB
- ゲートウェイモジュール DORAGINO LoRa GPS HAT-JP
ゲートウェイの準備
- Raspberry Pi3 model B に、 ゲートウェイモジュール DORAGINO LoRa GPS HAT-JP を取り付けます。
- Raspbian をインストールします。NOOBSをダウンロードします。トラブルは避けたいので、今回は使い慣れた NOOBS_v2_9_0 にしました。ダウンロード後、圧縮ファイルを解凍してフォーマット済みのマイクロSDカードへコピーします。ラズベリーパイのSDカードスロットに差し込んで電源を入れ、OSのインストール作業を行います。(詳しい手順は割愛します)
- ラズベリーパイのメニューより「設定」-「Raspberry Piの設定」を選択し「Raspberry Piの設定」ダイアログを開き、「インターフェース」タブの「SPI」を「有効」に設定します。
- 一旦ラズベリーパイをリブートします。
- ラズベリーパイのGUIからChromiumブラウザを立ち上げ、ゲートウェイのファームウェアのソースコードを下記サイトよりダウンロードします。
- ラズベリーパイのホームディレクトリ(/home/pi)に、 dual_chan_pkt_fwd というフォルダを作成します。
- ダウンロードした dual_chan_pkt_fwd-master.zip の中身をラズベリーパイ標準のファイルブラウザを使って上記のフォルダに解凍します。
- dual_chan_pkt_fwd フォルダにある dual_chan_pkt_fwd.cpp を修正します。
- 周波数の変更
uint32_t freq = 923400000; //868100000; // in MHz! (868.1)
uint32_t freq_2 = 923200000; //868300000; // in MHz! (868.3)
- 上記の直下に、下記のコードを追加
// Tx Power Register
#define REG_PA_CFG 0x09
// Power Setting for Japan ARIB STD-T108
// 20mW=13dBm
// SX1276 RegPaConfig(0x09), Val=0x3f
// bit 7 PaSelect = 0 select RFO
// bit 6-4 MaxPower = 3 Pmax=10.8+0.6*3=12.6 < 13
// bit 3-0 OutputPower = 0x0f Pout=Pmax-(15-0x0f)=12.6
// SX1272 RegPaConfig(0x09), Val=0x0e
// bit 7 PaSelect = 0 select RFO
// bit 6-4 unused = 0
// bit 3-0 OutputPower = 0xe Pout=-1 + OutputPower = -1 + 0x0e = 13dBm
int PWR_JPN_1276 = 0x3f;
int PWR_JPN_1272 = 0xe;
- 下記のコードの直前に、
if (sf == SF10 || sf == SF11 || sf == SF12) {
WriteRegister(REG_SYMB_TIMEOUT_LSB, 0x05, CE);
} else {
WriteRegister(REG_SYMB_TIMEOUT_LSB, 0x08, CE);
}
下記コードを追加:
// Set Tx Power for Japan
if (sx1272) {
WriteRegister(REG_PA_CFG, PWR_JPN_1272, CE);
} else {
// sx1276
WriteRegister(REG_PA_CFG, PWR_JPN_1276, CE);
}
その後、ファイルを保存します。
- つづいて、dual_chan_pkt_fwd フォルダにある Global_conf.json ファイルを以下のように修正します。
{
"SX127x_conf":
{
"freq": 923400000,
"freq_2": 923200000,
"spread_factor": 10,
"pin_nss": 6,
"pin_dio0": 7,
"pin_nss_2": 6,
"pin_dio0_2": 7,
"pin_rst": 3,
"pin_led1":4,
"pin_NetworkLED": 22,
"pin_InternetLED": 23,
"pin_ActivityLED_0": 21,
"pin_ActivityLED_1": 29
},
"gateway_conf":
{
"ref_latitude": 33.893361,
"ref_longitude": 135.204960,
"ref_altitude": 20,
"name": "<あなたのユーザーネーム>",
"email": "<あなたのeメールアドレス>",
"desc": "Dual channel pkt forwarder",
"interface": "eth0",
"servers":
[
{
"address": "router.jp.thethings.network",
"port": 1700,
"enabled": true
},
{
"address": "router.as2.thethings.network",
"port": 1700,
"enabled": false
}
]
}
}
- コンソールを開いて、dual_chan_pkt_fwdへ移動し、プログラムをコンパイルします。
make
以下はログです。
pi@raspberrypi:~ $ pwd
/home/pi
pi@raspberrypi:~ $ cd dual_chan_pkt_fwd
pi@raspberrypi:~/dual_chan_pkt_fwd $ make
g++ -std=c++11 -c -Wall -I include/ dual_chan_pkt_fwd.cpp
g++ dual_chan_pkt_fwd.o base64.o -lwiringPi -o dual_chan_pkt_fwd
pi@raspberrypi:~/dual_chan_pkt_fwd $ ls
LICENSE base64.c dual_chan_pkt_fwd dual_chan_pkt_fwd.service include
Makefile base64.h dual_chan_pkt_fwd.cpp global_conf.json
README.md base64.o dual_chan_pkt_fwd.o images
- 作成したプログラムをインストールします。
make install
以下はログです。
pi@raspberrypi:~/dual_chan_pkt_fwd $ make install
sudo cp -f ./dual_chan_pkt_fwd.service /lib/systemd/system/
sudo systemctl enable dual_chan_pkt_fwd.service
sudo systemctl daemon-reload
sudo systemctl start dual_chan_pkt_fwd
sudo systemctl status dual_chan_pkt_fwd -l
● dual_chan_pkt_fwd.service - Lora Packet Forwarder
Loaded: loaded (/lib/systemd/system/dual_chan_pkt_fwd.service; enabled; vendo
Active: active (running) since Fri 2019-06-28 02:06:07 JST; 157ms ago
Main PID: 2560 (dual_chan_pkt_f)
CGroup: /system.slice/dual_chan_pkt_fwd.service
mq2560 /home/pi/dual_chan_pkt_fwd/dual_chan_pkt_fwd
6月 28 02:06:07 raspberrypi systemd[1]: Started Lora Packet Forwarder.
pi@raspberrypi:~/dual_chan_pkt_fwd $
自動的にdual_chan_pkt_fwd サービスが開始されます。ここでエラーが出ると正しくコンパイルが終了していない可能性がありますので、makeの手順および結果を確認します。
- 作成したプログラムを実行します。
sudo ./dual_chan_pkt_fwd
以下はログです。
pi@raspberrypi:~/dual_chan_pkt_fwd $ sudo ./dual_chan_pkt_fwd
server: .address = router.eu.staging.thethings.network; .port = 1700; .enable = 1
server: .address = router.eu.thethings.network; .port = 1700; .enable = 0
Gateway Configuration
<Gatewqay Name> (abc@cde.com)
Dual channel pkt forwarder
Latitude=33.89336014
Longitude=135.20495605
Altitude=20
Interface: eth0
Trying to detect module CE0 with NSS=6 DIO0=7 Reset=3 Led1=unused
SX1276 detected on CE0, starting.
Trying to detect module CE1 with NSS=6 DIO0=7 Reset=3 Led1=unused
SX1276 detected on CE1, starting.
Gateway ID: b8:27:XX:XX:XX:XX:8e:02
Listening at SF10 on 923.400000 Mhz.
Listening at SF10 on 923.200000 Mhz.
-----------------------------------
stat update: 2019-06-27 17:07:03 GMT no packet received yet
stat update: 2019-06-27 17:07:33 GMT no packet received yet
stat update: 2019-06-27 17:08:03 GMT no packet received yet
:
:
これでゲートウェイ側が動作していることになります。表示されるGatway ID はラズパイの有線LAN (WiFiを選択していた場合は無線LAN)のMACで、TTNのゲートウェイ登録のIDとなるため控えておきます。
TTNアカウントの作成とゲートウェイの設定およびアクティブ化
|