Raspberry Pi 3 と RAK831 モジュールで LoRa ゲートウェイを構築するステップバイステップガイド
はじめに
カスタム LoRa ゲートウェイを作りたい開発者向けのチュートリアルです。Raspberry Pi エコシステム、GPIO ピン、Debian ベースの OS に関する基本的な知識があることを前提としています。さっそく始めましょう。
LoRa とは?
LoRa Alliance™ 技術が支える LoRaWAN™ は、地域・国家・グローバル規模で電池駆動の IoT デバイスをサポートする LPWAN(低電力広域ネットワーク)仕様です。LoRaWAN は、安全な双方向通信、移動性、位置情報サービスを提供し、現代の IoT 導入の核心要件を満たします。
上図は LoRa ネットワークの主要コンポーネントを示しています。以下が最も重要な側面です:
LoRa 技術と LoRaWAN プロトコルの主な特徴
- 位置情報:GPS 不要の低電力トラッキングで移動資産を管理
- 低コスト:インフラ、運用費、センサーコストを削減
- 標準化:グローバルな相互運用性で導入を加速
- 低消費電力:最大 20 年持続する電池向けに設計
- 長距離:1 基地局で農村部なら最大 30 マイル、密集した都市部や屋内にも到達
- セキュア:内蔵 AES-128 エンドツーエンド暗号化
- 大容量:基地局あたり数百万メッセージをサポート、公衆網事業者に最適
RAK 831 は LoRa 無線フロントエンドです。着信 LoRa パケットを受信し、ホストシステム(Raspberry Pi 3 など)に転送します。ホストシステムは RAK 831 に送信を指示することもできます。このチュートリアルでは Pi がホストボードとして RAK 831 を制御します。
バックホールの選択
バックホールとは、Raspberry Pi を広域ネットワークに接続するインターネット回線のことです。このガイドでは Wi-Fi に焦点を当てますが、Ethernet や 3G/4G も選択肢です。Ethernet ポートが利用可能なら、筐体内の追加無線信号によるノイズを排除できるため推奨されます。ノイズの多い環境ではソフトウェアで補償できますが、クリーンなリンクの方が常に信頼性が向上します。Wi-Fi を使う場合は、外部アンテナ付きのドングルを使用し、アンテナを筐体外に配置してください。
ハードウェアのセットアップ
デバイスに電源を入れる前に、Raspberry Pi と RAK 831 を以下のように構成します:
Raspberry Pi
- Raspberry Pi 3 を入手し、8 GB microSD カードに Raspberry Pi OS(旧 Raspbian)を書き込みます。プリロードされた「Noobs」カードを購入するか、このガイドに従って自分で書き込みます。
- 5 V、2 A の電源を接続します。RAK 831 はピーク送信時に最大 700 mA を消費するため、堅牢な電源が必須です。
RAK 831
- キット付属のアンテナをネジ端子に取り付けます。このステップは必須です。
接続詳細
以下の表は、RAK 831 を Raspberry Pi 3 に配線する方法を示しています。Pi のピンアウトについては こちらのドキュメントを参照してください。
注意事項
- リセットピンは任意の空いている GPIO に接続可能です。
- 電源ピンを確認し、RAK 831 の損傷を防いでください。
SPI の有効化
SPI インターフェースはデフォルトで無効です。以下で有効化:
sudo raspi-configを実行Advanced Options → SPIに進み、SPI の有効化とカーネルモジュールの読み込みでYesを選択- 完了して再起動
再起動後、インターフェースを確認:
> ls /dev/*spi* /dev/spidev0.0 /dev/spidev0.1
これらはチップイネーブルピン 0 と 1 の SPI デバイスです。
電源供給オプション
無線モジュールは Pi の電源ピンが供給できる以上の電力を必要とすることが多いため、2 つの選択肢があります:
- Pi の 5 V レールで両デバイスを給電
- Pi と RAK 831 に別々の 5 V レールを用意
ソフトウェアインストール
Raspberry Pi で以下の手順を実行:
- SPI を有効化(上記参照)し、ファイルシステムを拡張(
Advanced options → Expand filesystem) - システムを更新し
gitをインストール:sudo apt-get update sudo apt-get upgrade sudo apt-get install git /etc/wpa_supplicant/wpa_supplicant.confを編集して Wi-Fi を設定:network={ ssid="Your_WiFi_SSID" psk="Your_WiFi_Password" }- インストーラーをクローンし、
spiブランチで実行:git clone -b spi https://github.com/ttn-zh/ic880a-gateway.git ~/ic880a-gateway cd ~/ic880a-gateway sudo ./install.sh spi - インストール中にリモート設定を有効化するか選択。スクリプトがゲートウェイ EUI を表示するので控えておく。
リモート設定を選んだ場合、ゲートウェイ EUI をファイル名にした JSON ファイル(例:B827EBFFFE7B80CD.json)を gateway-remote-config リポジトリに作成。フォークしてファイルを追加、コミット、プルリクエストを送信。設定例は以下:
{
"gateway_conf": {
"gateway_ID": "your_gateway_EUI_here",
"servers": [
{
"server_address": "your_router_address_here",
"serv_port_up": 1700,
"serv_port_down": 1700,
"serv_enabled": true
}
],
"ref_latitude": your_latitude,
"ref_longitude": your_longitude,
"ref_altitude": 40,
"contact_email": "your_email@example.com",
"description": "short description"
}
}
有効なサーバーアドレスの一覧は The Things Network Wiki を参照。
デフォルトではインストーラーが Pi のホスト名を ttn-gateway に変更して競合を防ぎます。カスタム名を使いたい場合は上書き可能。インストール後、翌日ゲートウェイを再起動して JSON ファイルが正しくダウンロードされることを確認してください。
必要に応じて global_config.json を調整。米国向け展開の場合は US-global_conf.json を編集。mp_pkt_fwd フォワーダーを使いたい場合は このリポジトリ の手順に従い、コンパイル後に更新された global_conf.json を bin フォルダにコピー。
global_conf.json の設定可能な項目
インストール後、./bin/global_conf.json には調整が必要なセクションがいくつか含まれます:
- 無線設定(
radio_0またはradio_1)-Frequencyと最小/最大スイープパラメータを調整 - ゲートウェイ識別子-
gateway_IDまたはゲートウェイ EUI を更新 - サーバーポート-
serv_port_upとserv_port_downをサーバーアドレスと合わせて変更
以上の手順で、RAK 831 LoRa ゲートウェイが完全に稼働し、選択したバックホールでデータの送受信が可能になります。
製造プロセス
- Raspberry PiとNagiosで室温を効率監視
- ホームエナジーセンター:Raspberry PiとMoteinoで太陽光発電、ソーラー熱、室温を監視
- センサーデータをRaspberry Piに統合:実践ガイド
- SensorflareとRaspberry Piで433MHzスマートホームコントローラーを構築
- Raspberry Piでリアルタイムパン/チルト顔追跡 - 実践ガイド
- Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
- Acconeer A111パルスレーダーをRaspberry Piと統合:実践ガイド
- TJBot入門:組み立て、設定、音声制御で自分だけのAIロボットを構築
- 35ドルのNanoPi K1 Plus:2GB RAM、Allwinner H5 CPU、HDMI、ギガビットEthernet搭載のRaspberry PiライクなSBC、キオスク、メディアセンター、DIYに最適
- Raspberry Piで低コストLoRaシングルチャネルゲートウェイを構築
- RAK 831 LoRaゲートウェイをRaspberry Pi 3に導入するステップバイステップガイド