Maioria ESP32 projetos Acredito que o chip seja considerado uma ilha que inicia, se conecta à rede Wi-Fi e conversa com o assistente doméstico. Um chip é visto apenas como algo que produz dados para serem consumidos por outra coisa e funciona bem. Essa é a razão pela qual o ESPHome existe, e é exatamente para isso que servem essas placas.

No entanto, o ESP32 possui um protocolo ESP-NOW integrado que permite que as placas se comuniquem diretamente entre si, sem precisar de uma rede Wi-Fi compartilhada. Eu já o via mencionado de passagem há algum tempo, mas nunca o usei para nada interessante. Eu já tinha um ESP32 Visor amarelo baratomas Elecrow me enviou recentemente também duas próprias placas ESP32 CYDe isso me fez pensar. Que tal eu usar o ESP-NOW para atribuir a cada um deles um planeta do problema dos três corpos e ver como eles mantêm a força gravitacional entre eles?

Surpreendentemente, funciona! Bem, principalmente. Os pacotes são perdidos, os ticks se desviam e a simulação diverge da maneira que você esperaria. É um experimento divertido e ainda me prova que o ESP-NOW é o recurso mais subutilizado do ESP32.

ESP-NOW é Wi-Fi sem Wi-Fi

Apenas rede distribuída

ESP-NOW opera na camada de enlace de dados. Ele usa o mesmo rádio de 2,4 GHz do Wi-Fi, usando os mesmos canais e o mesmo hardware, mas em vez de fazer um handshake de associação completo e uma pilha IP, ele envia um quadro de ação específico do fornecedor diretamente para o endereço MAC. O quadro sai e qualquer placa que esteja ouvindo no mesmo canal e configurada para receber daquele MAC o capta.

Na prática, isso significa que uma placa pode ligar, enviar um pacote e ser ouvida por outra placa em milissegundos. A Espressif descreve o ESP-NOW como um protocolo de resposta rápida em nível de milissegundos e anuncia distâncias de controle em espaço aberto de até cerca de 200 metros sob condições favoráveis. No meu uso, sentado na mesma mesa, meu intervalo de 33 ms determina a viagem de ida e volta, não o rádio.

O limite de carga útil do ESP-NOW era de apenas 250 bytes por pacote. No entanto, o ESP-NOW v2.0 aumentou para 1470 bytes, o que está próximo do MTU Ethernet padrão e é suficiente para transmitir estado significativo em uma única passagem. Os dispositivos emparelhados são limitados a 20, dos quais até 17 são criptografados usando o esquema de chave ESP-NOW PMK/LMK e proteção CCMP. É uma rede pequena, mas é suficiente para a maioria dos projetos ESP32 comuns.

Se você não deseja que cada placa saiba o endereço MAC de todas as outras placas, o modo de transmissão é a maior parte do caminho. Um nó pode enviar para FF:FF:FF:FF:FF:FF e cada dispositivo ESP-NOW que escuta no mesmo canal pode recebê-lo e decidir por si mesmo se o pacote é significativo. No ESP-IDF, você ainda configura o endereço de broadcast como peer antes de enviar, mas não há cerimônia de emparelhamento por dispositivo ou troca de endereço MAC entre todos os nós.

Este design permite construir praticamente qualquer coisa. Por exemplo, uma rede de sensores torna-se irrelevante porque cada nó apenas grita sua leitura e a estação base escolhe aqueles que lhe interessam. Um enxame de pequenos robôs pode sincronizar o comportamento transmitindo o estado a uma taxa de encontro fixa, e a mesma abordagem poderia controlar um show de luzes distribuídas que permanece em sintonia sem um controlador central. O ESP-NOW coexiste com o Wi-Fi normal no mesmo rádio, para que as placas ainda possam conversar com o Home Assistant ou obter o horário NTP ao mesmo tempo. Você não precisa escolher.

O resultado final é que a transmissão não é confiável por design. Os pacotes não são reconhecidos e repetidos, e um pacote que fica obstruído pelo tráfego Wi-Fi no mesmo canal simplesmente desaparece e o próximo pacote chega alguns ticks depois, como se nada tivesse acontecido. Você constrói isso enviando estados com frequência e assumindo que a rede está perdida, em vez de enviar eventos uma vez e confiar que eles chegaram. É muito mais próximo do UDP do que um corretor de publicação-assinatura e é adequado para projetos em que a leitura mais recente de cada nó, com mais ou menos alguns milissegundos, é boa o suficiente.

Dividi a simulação de três casos em três placas ESP32

Um planeta a bordo e ESP-NOW faz o resto

Construí um simulador de gravidade de três corpos que funciona em três placas ESP32-CYD ao mesmo tempo, com cada placa possuindo exatamente um corpo. A cada 33 milissegundos, a placa integra a posição e velocidade do seu corpo usando a gravidade newtoniana, transmite essa posição para o ESP-NOW e renderiza todos os três corpos em sua pequena tela de 320×240. Cada tabuleiro representa todos os três órgãos, mas nenhum deles contém toda a verdade. Cada nó possui um corpo, e os outros dois são adivinhados a partir dos últimos pacotes ouvidos, o que significa que o design consiste, na verdade, em três simulações sobrepostas tentando chegar a um acordo de maneira imperfeita.

O pacote em si é minúsculo. Byte mágico, versão do protocolo, ID do nó, modo de simulação, contador de ticks, massa, posição, velocidade, campo de sinalizadores e soma de verificação. Tudo isso está bem abaixo do limite de 250 bytes v1.0, o que significa que há muito de sobra. Quando um pacote chega de outra placa, o receptor sobrescreve sua cópia em cache deste shell, pressiona o temporizador last_seen_ms e usa o novo estado no próximo cálculo de gravidade. Se o last_seen_ms do peer exceder 250ms, o sistema entra no modo “degradado”, onde a barra superior fica vermelha e o corpo ausente para de contribuir para a gravidade até que os pacotes sejam retomados.

Há também uma alternância entre o modo de bloqueio e o modo assíncrono. Na etapa de bloqueio, a placa se recusa a avançar seu tick até que um pacote seja ouvido de cada peer para o tick atual, com saída do modo degradado se a rede for completamente desligada. No modo assíncrono, cada placa simplesmente executa seu próprio relógio e usa o que ouviu das outras pela última vez. Lockstep mantém os três displays mostrando aproximadamente o mesmo universo, mas a função assíncrona permite que eles diverjam.

O problema dos três corpos já é famoso por ser sensível às condições iniciais. Duas simulações que começam com posições que diferem na sétima casa decimal podem terminar em órbitas completamente diferentes alguns milhares de ticks depois. É fortalecido dividindo-o em três placas. Cada nó se integra usando seu relógio local e o que ouviu pela última vez dos outros, e um pacote atrasado de 30ms significa que o vetor de gravidade que este painel calcula está se dirigindo para uma posição pela qual o outro painel já passou.

É um modo de falha de sistemas distribuídos que posso observar na mesa, e é o mesmo problema de um jogo multijogador antecipando onde outro jogador estará, ou duas cópias de um banco de dados discordando sobre qual gravação foi a primeira. O problema básico nas três placas ESP32 é exatamente o mesmo que li nos documentos de sistemas distribuídos, exceto que agora posso cutucá-lo com o dedo, deixando cair um dos gabinetes e depois observar os outros dois começarem a desmoronar.

Congelar uma placa muda instantaneamente o que as outras duas estão fazendo à medida que a contribuição gravitacional do corpo congelado para de se mover. Desconectá-lo coloca seus pares em modo degradado em um quarto de segundo. Se você conectá-lo novamente, ele será ressincronizado quase instantaneamente à medida que os pacotes de transmissão forem reiniciados e os estados em cache forem fixados em suas novas posições.

O mesmo truque funciona com redes de sensores e enxames de robôs

Não é apenas para brinquedos bobos

O ESP-NOW lida com redes de sensores distribuídos onde os nós se coordenam sem um hub, e a mesma abordagem se reduz a enxames de robôs respondendo ao estado uns dos outros com uma latência inferior a 50 ms. Como o mesmo chip pode rodar Wi-Fi ao mesmo tempo, você não precisa abrir mão da conexão na nuvem para obter uma rede local. ESPHome A versão de agosto de 2025 adicionou um componente oficial ESP-NOW, portanto, mesmo projetos construídos em YAML podem usá-lo sem fazer downgrade para C.

A limitação é que 20 peers não são muito, e o tráfego de transmissão em um canal compartilhado eventualmente colide com o Wi-Fi normal na mesma banda. Se você estiver criando um sistema de iluminação coerente para toda a sala, isso não será um problema. No entanto, para implantações maiores que possam realmente ser usadas em produção, é recomendável consultar o ESP-MESH ou uma infraestrutura Wi-Fi adequada. O ESP-NOW essencialmente preenche a lacuna entre um único microcontrolador e toda a rede, mas tem aplicações reais.

Em outras palavras, a pilha de placas ESP32 não é mais apenas uma pilha de microcontroladores independentes se você quiser deixá-los trabalhar juntos. É um computador pequeno e distribuído com perdas, e o protocolo que o alimenta já é compatível com todos os ESP32 que acumulam poeira em sua gaveta.

Link da fonte

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui