Como uma mensagem Meshtastic viaja?

Uma explicação interativa: do teclado do rádio aos chirps LoRa e daí pela malha, nó a nó.

Resposta rápida: quando você envia uma mensagem no Meshtastic, o rádio monta um pacote (o texto mais um cabeçalho), transmite esse pacote como uma sequência de chirps LoRa (sinais que varrem a frequência do canal) e os nós que ouvem retransmitem o pacote, salto a salto, até o limite de saltos (3, por padrão). Uma mensagem curta no preset LongFast fica cerca de meio segundo no ar.

Digite uma mensagem e pressione Enter. Depois, clique em "Surfe nas ondas >>" e em "A malha em ação >>". Abrir em tela cheia · English version

1. Enviando uma mensagem: quanto tempo ela fica no ar?

O texto que você digita vira um pacote: os bytes do texto, mais uma pequena estrutura de dados (o tipo de mensagem e alguns campos) e um cabeçalho de 16 bytes do Meshtastic (destino, origem, identificador, canal). A mensagem "oi" vira um pacote de 24 bytes; o limite é de 200 bytes de texto.

No preset padrão, o LongFast (fator de espalhamento SF11, largura de banda de 250 kHz, taxa de código 4/5), esse pacote de 24 bytes leva cerca de 436 ms no ar; uma mensagem de 200 bytes leva quase 2 segundos. No Brasil, que usa a região ANZ (915 a 928 MHz), o canal padrão do LongFast fica em 919,875 MHz. O tempo no ar é calculado com a fórmula da Semtech, fabricante do chip LoRa.

2. O que são os chirps LoRa?

O LoRa não liga e desliga uma portadora: ele transmite chirps, sinais que varrem toda a largura do canal, de uma ponta à outra, num tempo fixo. No LongFast cada chirp (um "símbolo") dura 8,192 ms. Um pacote é sempre desenhado na mesma ordem:

  • Preâmbulo: 16 chirps ascendentes iguais, para o receptor se sincronizar.
  • Palavra de sincronismo: 2 chirps levemente deslocados (o 0x2B do Meshtastic), que separam a rede Meshtastic de outras redes LoRa.
  • Chirps descendentes: 2 chirps e um quarto varrendo para baixo, que marcam o início dos dados (é o "^" que aparece no espectrograma).
  • Cabeçalho e carga útil: cada símbolo de dados começa numa frequência diferente e dá a volta no canal. É nessa posição de partida que os bits viajam.

3. Como a mensagem se espalha pela malha?

O Meshtastic usa uma inundação gerenciada (managed flooding): cada nó que ouve a mensagem pela primeira vez se prepara para retransmiti-la, mas antes espera um pouco. Essa espera é menor quando o sinal chegou mais fraco, ou seja, os nós mais distantes tendem a retransmitir primeiro, levando a mensagem mais longe a cada salto.

Se, durante a espera, o nó ouvir outro nó retransmitindo a mesma mensagem, ele cancela a sua retransmissão, o que evita congestionar o canal. Cada retransmissão gasta um salto: com o limite padrão de 3, quem ouve o remetente diretamente está a 0 saltos e a mensagem pode ser repassada até 3 vezes. Nós configurados como CLIENT_MUTE recebem as mensagens mas nunca as repassam.

O que está simplificado

  • As frequências de partida dos chirps de dados são ilustrativas: o rádio real ainda aplica embaralhamento, código de correção de erros, entrelaçamento e mapeamento Gray. A quantidade de símbolos é a real.
  • No bairro, a distância faz o papel da qualidade do sinal (SNR), o alcance é um círculo fixo (sem relevo, paredes ou desvanecimento) e a espera de cada nó é fixa (no firmware ela é sorteada dentro de uma janela que depende do SNR). Os tempos estão desacelerados para dar para acompanhar.

Quer melhorar esta explicação?

O código é aberto (licença MIT), em SVG e JavaScript puro, sem framework. Correções e ideias são bem-vindas: seletor de presets, a codificação real dos símbolos, novas cenas (canais e criptografia, armazenamento e envio) e mais idiomas.

Código no GitHub O que é Meshtastic? Monte o seu rádio

Desenhado com o kit de desenho open-source Anatomy. O logo "M-Powered" é do projeto meshtastic/design. Meshtastic® é uma marca registrada da Meshtastic LLC; o Meshbrasil é uma comunidade não oficial, sem vínculo com a Meshtastic LLC.