シングルチャネルLORA UDPパケットフォワーダー開発やテストの目的に最適です。双方向に受信して送信します。このプロジェクトは、シングルボードコンピューターと4ドルのLoraモジュールで構成される最も安いLora「ゲートウェイ」の1つのDIYに最適です。
このプロジェクトの目標は、次のようなシンプルなLORAフォワーダーを提供することです。
シングルボードコンピューターのネットワーク接続(WiFi、イーサネット...)に加えて、デバイスの次のピンを割り当てる必要があります。
特定のボードの詳細情報を取得するには、コマンドgpio readall (次のセクションも確認してください)を参照してください。構成ファイルがその番号付けスキームを期待しているため、WiringPi番号も同様に調べてください。
例:
+------+-----+----------+------+---+OrangePiH3+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 12 | 0 | SDA.0 | ALT2 | 0 | 3 || 4 | | | 5V | | |
| 11 | 1 | SCL.0 | ALT2 | 0 | 5 || 6 | | | 0v | | |
| 6 | 2 | PA6 | OFF | 0 | 7 || 8 | 0 | OFF | TxD3 | 3 | 13 |
| | | 0v | | | 9 || 10 | 0 | OFF | RxD3 | 4 | 14 |
| 1 | 5 | RxD2 | OFF | 0 | 11 || 12 | 1 | OUT | PD14 | 6 | 110 |
| 0 | 7 | TxD2 | OFF | 1 | 13 || 14 | | | 0v | | |
| 3 | 8 | CTS2 | OFF | 0 | 15 || 16 | 0 | IN | PC04 | 9 | 68 |
| | | 3.3v | | | 17 || 18 | 1 | IN | PC07 | 10 | 71 |
| 64 | 11 | MOSI | ALT3 | 0 | 19 || 20 | | | 0v | | |
| 65 | 12 | MISO | ALT3 | 0 | 21 || 22 | 0 | OFF | RTS2 | 13 | 2 |
| 66 | 14 | SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0 | 15 | 67 |
| | | 0v | | | 25 || 26 | 0 | OFF | PA21 | 16 | 21 |
| 19 | 17 | SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1 | 18 | 18 |
| 7 | 19 | PA07 | OFF | 0 | 29 || 30 | | | 0v | | |
| 8 | 20 | PA08 | OFF | 0 | 31 || 32 | 0 | OFF | RTS1 | 21 | 200 |
| 9 | 22 | PA09 | OFF | 0 | 33 || 34 | | | 0v | | |
| 10 | 23 | PA10 | OFF | 0 | 35 || 36 | 0 | OFF | CTS1 | 24 | 201 |
| 20 | 25 | PA20 | OFF | 0 | 37 || 38 | 0 | OFF | TxD1 | 26 | 198 |
| | | 0v | | | 39 || 40 | 0 | OFF | RxD1 | 27 | 199 |
| 4 | 28 | PA04 | ALT2 | 0 | 41 || 42 | 0 | ALT2 | PA05 | 29 | 5 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+OrangePiH3+---+------+----------+-----+------+
___
_/ SX1278 module
| --------------
--- | ANT GND |===== Pin #20 [OrangePiH3 Physical]
| GND DIO1 |===== Pin #18 [OrangePiH3 Physical] / [a.k.a WiringPi pin ## 10]
| DIO2 |
| DIO3 |
| VCC |===== Pin # 1 [OrangePiH3 Physical]
| MISO |===== Pin #21 [OrangePiH3 Physical] / [[a.k.a WiringPi pin ## 12]]
| MOSI |===== Pin #19 [OrangePiH3 Physical] / [[a.k.a WiringPi pin ## 11]]
| SLCK |===== Pin #23 [OrangePiH3 Physical] / [[a.k.a WiringPi pin ## 14]]
| NSS |===== Pin #12 [OrangePiH3 Physical] / [a.k.a WiringPi pin ## 6]
| DIO0 |===== Pin #16 [OrangePiH3 Physical] / [a.k.a WiringPi pin ## 9]
| REST |===== optional, if it isn't used leave floating or connect to VCC
| GND |
--------------
git clone --recurse-submodules https://github.com/zhgzhg/LoRaPacketForwarder.git
次の手順は、Armbian V5.90でテストされています。ただし、最新バージョンを使用することをお勧めします。
./buildPLATFORM=orangepipc ./buildの場合)を変更するか、ビルドスクリプトを残して自動的に決定します。spi-spidevオーバーレイを追加する必要がある場合があります。さらに/boot/armbianenv.txtでは、パラメーターparam_spidev_spi_bus=1またはparam_spidev_spi_bus=0を追加する必要があります。ボードモデルに応じて。例:i2c0 i2c1 pps-gpio pwm spi-add-cs1 spi-spidev uart1 usbhost2 usbhost3 param_spidev_spi_bus=1param_spidev_spi_bus=0spidevドライバーにもかかわらず、Missing /dev/spidev*ディレクトリである可能性があります。このケースの一時的な回避策は、古いカーネルに切り替えることです。gpio readallコマンドには、わずかに異なるテーブルが表示され、いくつかの行が表示または表示されます。gpio readallを実行してボードピンアウトスキームテーブルを表示しますmakeでコンパイルしますmakeでコンパイルしますconfig.json.templateをコピーしてconfig.jsonを作成します。
gpio readallコマンドの「.Number」ポストフィックスに相談してくださいsudo ls /dev/spi*の出力を観察します。たとえば、「/dev/spidev1.0」のような結果は/dev/spidev <spichannelnumber> 。 <spiportnumer>SX1261 、 SX1262 、またはSX1268LLCC68SX1272 、 SX1273 、 SX1276 、 SX1277 、 SX1278 、またはSX1279RFM95 、 RFM96 、 RFM97 、またはRFM98gpio readallを実行して、指定する必要があるWIRINGPI PIN番号を確認します)。 PIN_RESTはオプションであることに注意してください。使用されていない場合は、それを-1に設定し、トランシーバーのピンをフローティングまたはVCCに接続したままにしておく必要があります。アプリケーションを実行するには:
./LoRaPktFwrdアプリケーションを実行し、ID生成に使用されるネットワークインターフェイスを指定するには:
./LoRaPktFwrd wlan0サポートされているCLIオプションを取得するには:
./LoRaPktFwrd -hこのプロジェクトは、SystemDサービス(File LoRaPktFwrd.serviceを参照)としてインストールできます。これは、システムブーツの後に自動的に開始することができます。前提条件として、プロジェクトが( makeコマンドを介して)コンパイルされていることを確認し、独自のconfig.jsonファイルで正しく実行できます。
sudo make installsudo make uninstallsudo systemctl enable LoRaPktFwrd.servicesudo systemctl disable LoRaPktFwrd.service sudo service LoRaPktFwrd start
sudo service LoRaPktFwrd restart
sudo service LoRaPktFwrd stop
sudo service LoRaPktFwrd status
sudo journalctl -n 100 -f -u LoRaPktFwrd.service Lora UDPパケット転送業者は、次のプログラムとライブラリに依存しています。
提供されているのは、現在のディレクトリの「送信」と呼ばれる単純なLora Trasmitterの例Arduinoプロジェクトです。 SPIからSX1278モジュールにspiを介してESP8266/Arduino/Anduino/Anduinoをフックして、それをコンパイルすると、データの送信を開始します。 RF仕様の観点から「config.json.template」内のデフォルトの構成を使用すると、転送者アプリはすぐに送信機からデータを選択する必要があります。
バックグラウンドで実行し、それに応じてGPIOピンを変更できる小さな温度モニタープログラム。
完璧なダウンリンク伝送のタイミングを達成することは、プレーンロラトランシーバーを装備した通常のシングルボードコンピューターの組み合わせでは難しいようです。その理由は、Linuxの非現実的な時間の性質と組み合わされたコンピューターの不正確なハードウェアクロックに帰着します。それを補うために、このプロジェクトは、非常に高い(ほぼリアルタイム)優先度で実行され、CPU使用量の増加(約20%)が不規則なOSの遅延を部分的に補うことを目的としています。
https://github.com/jgromes/radiolib
https://github.com/adafruit/single_chan_pkt_fwd
https://github.com/orangepi-xunlong/wiringop
https://github.com/xpertsavenue/wiringop-zero
https://github.com/lora-net/packet_forwarder
https://www.gw-openscience.org/static/js/gpstimeutil.js
https://github.com/tencent/rapidjson