Qual é o tamanho máximo de pacote de um LoraWan, incluindo os cabeçalhos phy

7

Criei uma passagem de LoRa para USB via Arduino para usá-lo como um gateway temporário para fins de desenvolvimento. Então, de alguma forma, eu preciso saber o tamanho de um pacote LoRa, incluindo os cabeçalhos PHY, para determinar quanto tempo levará meu software para ler e enviar os dados em cima de um USB.

Em outras palavras, minha arquitetura será a seguinte:

Arquitetura para LoraWan

Portanto, o PC / laptop precisará "saber" o tamanho do pacote LoRa para não receber via USB um número incontável de bytes.

Dimitrios Desyllas
fonte
11
Como um aparte: por padrão, o LMiC suporta apenas cargas úteis de até 51 ou 52 bytes, consulte github.com/matthijskooijman/arduino-lmic/issues/100 E alguns provedores, como o KPN holandês, permitem apenas 51 bytes de qualquer maneira: zakelijkforum.kpn .com / lora-forum-16 /… De certa forma, tudo bem: se um nó precisa oferecer suporte ao SF12, também não deve enviar mais em melhores condições.
Arjan

Respostas:

7

Qual é o tamanho de um pacote LoRa incluindo cabeçalhos PHY

Eu suponho que você quer dizer cabeçalho MAC? Depois que algum chip LoRa desmodular os sinais de rádio LoRa para você, ele fornecerá a carga útil LoRa PHY. Para um uplink LoRaWAN, essa carga útil PHY contém um cabeçalho MAC, carga útil MAC e MIC.

Para 1.0.x, a regra geral parece ser que um pacote LoRaWAN é pelo menos 13 bytes maior que a carga útil do aplicativo:

Eu acho que geralmente pelo menos 13 [MHDR (1) + DevAddr (4) + FCtrl (1) + FCnt (2) + Fport (1) + MIC (4)] em um pacote sem opções

A carga útil máxima do aplicativo depende da taxa de dados selecionada. Se um nó puder operar nas piores condições, deve-se assumir a pior taxa de dados, SF12, onde o nó não deve enviar mais do que 51 bytes. (Onde nas melhores condições, SF7, isso pode ter 222 bytes.) Tudo isso também depende da região, eu acho. (E as coisas podem melhorar quando o nó LoRaWAN não usa LoRa, mas FSK.)

Portanto, no seu caso de uso, eu tentaria não depender de um comprimento máximo via USB. Em vez de:

  • Você pode converter facilmente o pacote LoRaWAN binário em texto sem formatação usando o Base64 . Em seguida, você pode enviar esse texto por USB e finalizá-lo com uma nova linha ou um caractere NULL para informar seu receptor quando a mensagem USB estiver concluída. Você pode até enviar metadados adicionais nessa linha de texto se escolher um separador que não esteja no conjunto de caracteres Base64.

  • Por exemplo, o protocolo Semtech UDP entre gateways e servidores usa mensagens de texto JSON, que também permitem passar metadados adicionais. No texto JSON, o pacote LoRaWAN binário também é codificado usando Base64. Se o texto JSON estiver bastante formatado para incluir novas linhas, você ainda poderá encerrar essa mensagem de texto com um caractere NULL e seu receptor não ficará confuso.

Arjan
fonte
de acordo com a especificação do campo LoRaWAN V1.0.X Fport é opcional, de modo que o comprimento mínimo é, na verdade, 12 bytes
ROKK
Verdadeiro, @RoKK, se não houver carga útil do aplicativo. Mas se houver uma carga útil do aplicativo, o FPort é obrigatório, portanto, qualquer carga útil do aplicativo sempre recebe pelo menos 13 bytes adicionados a ele. (E possivelmente também alguns comandos MAC em FOpts Como um aparte, os 13 bytes também não se aplicam a OTAA junta..)
Arjan