RAK 831 LoRaゲートウェイをRaspberry Pi 3に導入するステップバイステップガイド
このプロジェクトでは、RAK 831 LoRaゲートウェイモジュールをWi-Fiをバックホールとして稼働させるために必要なすべてのステップを説明します。
ストーリー
はじめに
このステップバイステップガイドは、RAK Wirelessの優れたRAK831 LoRa無線フロントエンドモジュールを使用して、独自のLoRaゲートウェイを開発したい開発者を対象としています。このガイドは、Raspberry Piエコシステム、ハードウェア、関連するDebian OSに関する基本的な知識があることを前提としています。また、Raspberry Piに搭載されているGPIOとペリフェラルの基本知識も必要です。さあ、始めましょう:
LoRaとは?
LoRa Alliance™ Technology. LoRaWAN™は、地域、国家、グローバルなネットワークにおいて、ワイヤレスでバッテリー駆動の「モノ」を対象とした低電力広域ネットワーク(LPWAN)仕様です。LoRaWANは、IoTの主要要件である安全な双方向通信、モビリティ、ローカライゼーションサービスをターゲットとしています。
courtesy Semtech上図はLoRa無線アーキテクチャの各部分を示しています。重要な部分を簡単に説明します:
LoRaテクノロジーとLoRaWANプロトコルの主な特徴
・GEOLOCATION:GPSフリーの低電力トラッキングアプリケーションを実現
・LOW COST:インフラ投資、運用費、エンドノードセンサーの3つの面でコスト削減
・STANDARDIZED:グローバルな相互運用性の向上により、LoRaWANベースのネットワークとIoTアプリケーションの採用と展開を加速
・LOW POWER:プロトコルが低消費電力向けに設計され、バッテリー寿命を最大20年まで延長
・LONG RANGE:単一基地局で密集都市部/屋内への深い浸透、さらに農村地域を最大30マイルまでカバー
・SECURE:エンドツーエンドのAES128暗号化を内蔵
・HIGH CAPACITY:基地局あたり数百万メッセージをサポートし、多くの顧客にサービスを提供する公共ネットワーク運用者に最適
RAK 831はLoRa無線フロントエンドであり、着信LoRaデータパケットを受信してアグリゲーター管理ソフトウェア/ハードウェアホストに転送します。ホストボードのリクエストに基づいてLoRaデータパケットを送信することもできます。ここではRaspberry Pi 3がホストボードとしてRAK 831フロントエンドを制御します。
バックホールの選択
バックホールとは? バックホールとは、Raspberry Piをインターネットに接続する方法を指します。このガイドではWi-Fiをバックホールとして使用しますが、Ethernetや3G/4Gも使用可能です。ゲートウェイの近くにEthernetがある場合は、Wi-Fiや3G/4Gよりも優先してください。これは、エンクロージャー内に追加の無線信号があるとノイズが発生するためです。ソフトウェアはノイズ環境を処理できますが、ノイズが少ないほど良好です。この選択をPower-over-Ethernetと組み合わせれば、ゲートウェイまでの配線を最小限に抑えられます。
一方、Wi-Fiを選択する場合は、外部アンテナ付きのドングルを使用し、アンテナをエンクロージャー外に出して内部ノイズを減らしてください。
ハードウェアのセットアップ:
接続と電源投入の前に、Raspberry PiとRAK 831モジュールで以下の設定を行います:
RASPBERRY PI
1) Raspberry Pi 3ボードを用意し、Raspbianソフトウェアが入った8GB microSDカードを準備。NOOBSプリロード済みSDカードを購入しても可。OSのフラッシュ方法はこちら: https://www.raspberrypi.org/learning/hardware-guide/
2) Raspberry Piを5V 2A電源に接続。これは非常に重要です。 LoRaモジュールはアクティブな無線トランザクション中にピーク700mAを消費する可能性があるため、Raspberry Piを駆動するための優れた電源アダプターを用意してください。
raspberry pi v3RAK 831:
1) ボードに電源を入れる前に、キットに同梱されていたアンテナを取り出し、アンテナスクリューターミナルに接続。これは必須です。
Raspberry Pi v3, RAK 831 module and a LoRa Node接続詳細:
RAK831モジュールとRaspberry Piの接続方法を示すテーブル:
rpi v3 to rak 831 pin connection
The rak 831 silk screen map to the rak 831 pins.
rak 831 silk screen map to the rak 831 pins
Raspberry Piのピンレイアウトについては、https://www.raspberrypi.org/documentation/usage/gpio/ を参照してください。
注意点:
- リセットピンはRaspberry Pi 3の任意のGPIOに接続可能。
- RAK 831ボードを損傷しないよう、電源ピンを正しく接続することが不可欠。
SPIの有効化:
SPIペリフェラルはデフォルトでオフです。有効化するには以下を実行:
- sudo raspi-config を実行。
- 下矢印で 9 Advanced Options を選択。
- 下矢印で A6 SPI を選択。
- SPI を有効化するか尋ねられたら yes を選択。
- カーネルモジュールの自動ロードについても yes を選択。
- 右矢印で
ボタンを選択。
- 再起動を尋ねられたら yes を選択。
システムが再起動します。再起動後、ログインして以下のコマンドを入力:
>ls /dev/*spi*
Piは以下で応答するはず:
/dev/spidev0.0 /dev/spidev0.1
これらはチップイネーブルピン0と1のSPIデバイスを表します。これらのピンはPi内部でハードウェア的に配線されており、通常は最大2つのペリフェラルをサポートしますが、デージーチェーンで単一のチップイネーブル信号を共有するケースもあります。
ボードへの電源供給:
無線プロジェクトでは一般的に、ホストボードが供給ピンで提供できる電力以上を必要とします。以下の2つのスキームで、RAK 831とRaspberry Pi 3への給電方法を列挙します。
1) Raspberry Piから5Vレールを供給
2) Raspberry PiとRAK831の5Vレールを別々に供給
ソフトウェアインストール:
Raspberry Piで以下のステップを実行して必須ソフトウェアをインストール:
- SPIを有効化:
raspi-configユーティリティでSPIを有効化([5] Interfacing options -> P4 SPI)し、ファイルシステムも拡張([7] Advanced options -> A1 Expand filesystem):
$ sudo raspi-config
- gitがインストール済みか確認
Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get install git
- Raspberry PiのWi-Fi接続を管理
- Wi-Fi認証情報を設定(詳細はこちら)
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ファイル末尾に以下のブロックを追加し、SSIDとパスワードを自分のネットワークに合わせる:
network={
ssid=“The_SSID_of_your_wifi”
psk=“Your_wifi_password”
}
- インストーラーをクローンしてインストール開始
$ git clone -b spi https://github.com/ttn-zh/ic880a-gateway.git ~/ic880a-gateway
$cd ~/ic880a-gateway
$ sudo ./install.sh spi
- インストールステップでリモート設定を有効化するか尋ねられます。'y' または 'yes' と入力して継続。コマンドラインインストールの開始時にゲートウェイEUIが表示されます。必ずメモしてください!
- リモート設定オプションを使用する場合、Gateway Remote Configリポジトリ(https://github.com/ttn-zh/gateway-remote-config)に、ゲートウェイEUIをファイル名としたJSONファイル(例:B827EBFFFE7B80CD.json)を作成し、適切な設定でコミット。フォークしたリポジトリでプルリクエストをマスターリポジトリに送信すれば、翌日にはリポジトリに反映されます。サンプルJSONは以下:
{
“gateway_conf”: {
“gateway_ID”: “インストール時のコンソール出力でメモしたID”,
“servers”: [
{
“server_address”: “接続したいルーター”,
“serv_port_up”: 1700,
“serv_port_down”: 1700,
“serv_enabled”: true
}
],
“ref_latitude”: rak 831ゲートウェイの緯度,
“ref_longitude”: rak 831ゲートウェイの経度,
“ref_altitude”: 40,
“contact_email”: “ゲートウェイ所有者の連絡先メール”,
“description”: “簡単な説明”
}
}
注:
有効なルーターの一覧はこちら:https://www.thethingsnetwork.org/wiki/Backend/Connect/Gateway
- デフォルトでは、インストーラーがRaspberry Piのホスト名をttn-gatewayに変更します(ネットワーク内の他のRaspberry Piとの衝突防止)。非リモート設定モードでは上書き可能。
- 万歳!あなたのゲートウェイは今動作しているはずです。翌日にJSONファイルがRPi3に正しくダウンロードされるよう、翌日にゲートウェイを再起動してください。
- global_config.jsonは以下に従って調整が必要:
https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
mp_pkt_fwdを古いpolyパケットフォワーダーの代わりに使用したい場合は、こちらでインストール手順を参照:
https://github.com/kersing/packet_forwarder/tree/master/mp_pkt_fwd. また、プロジェクトのルートにあるglobal_conf..jsonファイルの該当セクション(後述の重要セクション)を編集し、コンパイル後にbinフォルダにコピーしてください。
global_conf.jsonで設定可能な主な項目:
global_conf.jsonファイルは、インストールスクリプト実行後、プロジェクトディレクトリのベースから ./bin/global_conf.json にあります。特定のゲートウェイ設定に合わせて編集したい主な項目:
1) “radio_0” または “radio_1” の設定、特に周波数パラメータと最小/最大周波数スイープパラメータ。
2) “gateway_conf” セクション。特にゲートウェイIDまたはゲートウェイのEUI。
3) gateway_confオブジェクト内のサーバーアップ/ダウンポートと、TTNサーバーアドレスまたは独自アプリケーションサーバーのアドレス(利用可能な場合)。
ボードのリセット:
Raspberry Piを起動するたびに、接続されたRAK831 LoRaモジュールをリセットするのが良い習慣です。2つの方法があります:
- シェルスクリプト経由:
LoRaドライバーがハードウェアにアクセスする前にRAK831をリセットする小さなシェルスクリプトを作成できます。内容は以下の例(Raspberry PiのGPIO 17(ピン11)がRAK831のリセットピンに接続されていると仮定):
#!/bin/bash
echo “17” > /sys/class/gpio/export
echo “out” > /sys/class/gpio/gpio17/direction
echo “1” > /sys/class/gpio/gpio17/value
sleep 5
echo “0” > /sys/class/gpio/gpio17/value
sleep 1
echo “0” > /sys/class/gpio/gpio17/value
これらの行を「rak831_reset.sh」というファイルに保存。ユーザーは毎回ブート後にこのスクリプトを1回呼び出し、コンセントレーターICをクリーンな状態にする必要があります。
- WiringPi経由:
ホストシステムがRaspberry Piの場合、GPIOピンにアクセスするために「wiringPi」ライブラリを使用した小さなCツールを書けます。ライブラリは https://wiringpi.com からダウンロード可能。インストールと使用方法は同サイトを参照。RAK831_reset.cの内容例:
#include <wiringPi.h>
#include <unistd.h>
#define GPIO_RESET_PIN 0 // wiringPiマッピング参照!
int main() {
wiringPiSetup();
pinMode(GPIO_RESET_PIN, OUTPUT);
digitalWrite(GPIO_RESET_PIN, HIGH);
sleep(5);
digitalWrite(GPIO_RESET_PIN, LOW);
return;
}
ユーザーは毎回ブート後にこのツールを1回呼び出し、コンセントレーターICをクリーンな状態にする必要があります。
gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink
ゲートウェイをTTNネットワークに登録:
ノードがデータをクラウドに送信できるようにするため、TheThingsNetworkはLoRaノード経由で送信されたデータを解析・保存するクラウドサービスを提供します。
Read More Detail :Getting started with the RAK 831 Lora Gateway and RPi3
製造プロセス
- 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シングルチャネルゲートウェイを構築
- Raspberry Pi 3 と RAK831 モジュールで LoRa ゲートウェイを構築するステップバイステップガイド