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:
Portanto, o PC / laptop precisará "saber" o tamanho do pacote LoRa para não receber via USB um número incontável de bytes.
Respostas:
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:
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.
fonte