Ich habe einen LoRa-zu-USB-Durchgang über Arduino erstellt, um ihn als temporäres Gateway für Entwicklungszwecke zu verwenden. Irgendwie muss ich wissen, wie groß ein LoRa-Paket mit PHY-Headern ist, um zu bestimmen, wie lange meine Software benötigt, um die Daten über USB zu lesen und zu senden.
In geordneten Worten wird meine Architektur wie folgt sein:
Der PC / Laptop muss also "wissen", wie groß das LoRa-Paket sein wird, um nicht unzählige Bytes über USB empfangen zu können.
Antworten:
Ich nehme an, Sie meinen MAC-Header? Nachdem ein LoRa-Chip die LoRa-Funksignale für Sie demoduliert hat, erhalten Sie die LoRa PHY-Nutzlast. Für einen LoRaWAN-Uplink enthält eine solche PHY-Nutzlast einen MAC-Header, eine MAC-Nutzlast und ein MIC.
Für 1.0.x scheint die Faustregel zu sein, dass ein LoRaWAN-Paket mindestens 13 Byte größer ist als die Anwendungsnutzlast:
Die maximale Anwendungsnutzlast hängt von der ausgewählten Datenrate ab. Wenn ein Knoten in der Lage sein sollte, unter schlechtesten Bedingungen zu arbeiten, sollte man die schlechteste Datenrate SF12 annehmen, wobei der Knoten nicht mehr als ungefähr 51 Bytes senden sollte. (Wo unter besten Bedingungen SF7, das könnten 222 Bytes sein.) All das hängt auch von der Region ab, denke ich. (Und es könnte besser sein, wenn der LoRaWAN-Knoten nicht LoRa, sondern FSK verwendet.)
Für Ihren Anwendungsfall würde ich versuchen, mich nicht auf eine maximale Länge über USB zu verlassen. Stattdessen:
Mit Base64 können Sie das binäre LoRaWAN-Paket problemlos in einfachen Text konvertieren . Sie können dann solchen Text über USB senden und sie mit einer Neuen - Zeile beenden oder ein NULL -CHARACTER Ihre Empfänger wissen zu lassen , wenn die USB - Nachricht abgeschlossen ist. Sie können sogar zusätzliche Metadaten in dieser Textzeile senden, wenn Sie ein Trennzeichen auswählen, das nicht im Base64-Zeichensatz enthalten ist.
Zum Beispiel die Semtech UDP - Protokoll verwendet zwischen den Gateways und Server JSON Textnachrichten, die auch Sie zusätzliche Meta - Daten passieren lässt. Im JSON-Text wird das binäre LoRaWAN-Paket auch mit Base64 codiert. Wenn der JSON-Text so formatiert ist, dass er Zeilenumbrüche enthält, können Sie diese Textnachricht dennoch mit einem NULL- Zeichen beenden, und Ihr Empfänger wird nicht verwirrt.
quelle