開発目的の一時的なゲートウェイとして使用するために、Arduinoを介してLoRaからUSBへのパススルーを作成しました。ソフトウェアがUSB上でデータを読み取って送信するのにかかる時間を判断するために、PHYヘッダーを含むLoRaパケットの大きさを知る必要があります。
つまり、私のアーキテクチャは次のようになります。
そのため、PC /ラップトップは、LoRaパケットがUSB経由で無数のバイト数を受信しないようにするために、どれくらいの大きさかを「知る」必要があります。
開発目的の一時的なゲートウェイとして使用するために、Arduinoを介してLoRaからUSBへのパススルーを作成しました。ソフトウェアがUSB上でデータを読み取って送信するのにかかる時間を判断するために、PHYヘッダーを含むLoRaパケットの大きさを知る必要があります。
つまり、私のアーキテクチャは次のようになります。
そのため、PC /ラップトップは、LoRaパケットがUSB経由で無数のバイト数を受信しないようにするために、どれくらいの大きさかを「知る」必要があります。
回答:
PHYヘッダーを含むLoRaパケットの大きさ
私はあなたがMACヘッダーを意味すると思いますか?一部のLoRaチップがLoRa無線信号を復調すると、LoRa PHYペイロードが提供されます。LoRaWANアップリンクの場合、このようなPHYペイロードはMACヘッダー、MACペイロード、MICを保持します。
1.0.xの場合、経験則では、LoRaWANパケットはアプリケーションのペイロードより少なくとも13バイト大きいと思われます。
私は通常、オプションのないパケットで少なくとも13 [MHDR(1)+ DevAddr(4)+ FCtrl(1)+ FCnt(2)+ Fport(1)+ MIC(4)]と思います
最大アプリケーションペイロードは、選択したデータレートによって異なります。ノードが最悪の条件で動作できる必要がある場合、ノードが約51バイトを超えて送信してはならない最悪のデータレートSF12を想定する必要があります。(最良の状態では、SF7の場合、222バイトになる可能性があります。)これらすべては、地域にも依存すると思います。(そして、LoRaWANノードがLoRaではなくFSKを使用する場合、状況は改善される可能性があります。)
したがって、ユースケースでは、USBを介した最大長に依存しないようにします。代わりに:
Base64を使用して、バイナリLoRaWANパケットをプレーンテキストに簡単に変換できます。その後、USB経由、このようなテキストを送信し、改行やでそれを終了することができNULL -character USBメッセージが完了したときに、あなたの受信機を知ることができるように。Base64文字セットにないセパレーターを選択すると、そのテキスト行で追加のメタデータを送信することもできます。
たとえば、ゲートウェイとサーバー間のSemtech UDPプロトコルはJSONテキストメッセージを使用するため、追加のメタデータを渡すこともできます。JSONテキストでは、バイナリLoRaWANパケットもBase64を使用してエンコードされます。JSONテキストが改行を含むように整形されている場合でも、そのようなテキストメッセージをNULL文字で終了することができ、レシーバーが混乱することはありません。