
Um novo protocolo de malha de roteamento híbrido e leve para rádios de pacote.
## Sobre o MeshCore MeshCore é uma biblioteca C++ leve e portátil que possibilita o roteamento de pacotes multi-hop para projetos embarcados usando LoRa e outros rádios de pacotes. Ela foi projetada para desenvolvedores que desejam criar redes de comunicação resilientes e descentralizadas que funcionam sem a internet. ## 🔍 O que é o MeshCore? O MeshCore agora suporta uma variedade de dispositivos LoRa, permitindo a gravação fácil sem a necessidade de compilar o firmware manualmente. Os usuários podem gravar um binário pré-compilado usando ferramentas como o Adafruit ESPTool e interagir com a rede através de um console serial. O MeshCore oferece a capacidade de criar redes mesh sem fio, semelhantes ao Meshtastic e ao Reticulum, mas com foco no roteamento de pacotes multi-hop leve para projetos embarcados. Diferente do Meshtastic, que é voltado para comunicação LoRa casual, ou do Reticulum, que oferece redes avançadas, o MeshCore equilibra simplicidade com escalabilidade, tornando-o ideal para soluções embarcadas personalizadas, onde dispositivos (nós) podem se comunicar a longas distâncias retransmitindo mensagens através de nós intermediários. Isso é especialmente útil em situações off-grid, de emergência ou táticas, onde a infraestrutura de comunicação tradicional não está disponível. ## ⚡ Principais Recursos * Roteamento de Pacotes Multi-Hop * Os dispositivos podem encaminhar mensagens através de múltiplos nós, estendendo o alcance além do alcance de um único rádio. * Suporta até um número configurável de saltos para equilibrar a eficiência da rede e evitar tráfego excessivo. * Os nós usam funções fixas onde os nós "Companion" não repetem mensagens de forma alguma para evitar que caminhos de roteamento adversos sejam usados. * Suporta Rádios LoRa – Funciona com Heltec, RAK Wireless e outros hardwares baseados em LoRa. * Descentralizado e Resiliente – Nenhum servidor central ou internet é necessário; a rede é auto-recuperável. * Baixo Consumo de Energia – Ideal para dispositivos alimentados por bateria ou energia solar. * Fácil de Implantar – Aplicações de exemplo pré-compiladas facilitam o início. ## 🎯 Para Que Você Pode Usar o MeshCore? * Comunicação Off-Grid: Mantenha-se conectado mesmo em áreas remotas. * Resposta a Emergências e Recuperação de Desastres: Configure redes instantâneas onde a infraestrutura está inoperante. * Atividades ao Ar Livre: Comunicação em trilhas, acampamentos e corridas de aventura. * Aplicações Táticas e de Segurança: Casos de uso militar, policial e de segurança privada. * IoT e Redes de Sensores: Colete dados de sensores remotos e retransmita-os para um local central. ## 🚀 Como Começar - Assista à [Playlist de Início Rápido do MeshCore](https://www.youtube.com/watch?v=iaFltojJrAc&list=PLshzThxhw4O4WU_iZo3NmNZOv6KMrUuF9) do The Comms Channel - Assista à [Apresentação Técnica do MeshCore](https://www.youtube.com/watch?v=OwmkVkZQTf4) de Liam Cottle. - Leia nossas [Perguntas Frequentes](https://github.com/meshcore-dev/meshcore/blob/main/docs/faq.md) e a [Documentação](https://docs.meshcore.io). - Grave o firmware do MeshCore em um dispositivo compatível. - Conecte-se com um cliente compatível. Para desenvolvedores: - Instale o [PlatformIO](https://docs.platformio.org) no [Visual Studio Code](https://code.visualstudio.com). - Clone e abra o repositório do MeshCore no Visual Studio Code. - Veja as aplicações de exemplo que você pode modificar e executar: - [Companion Radio](https://github.com/meshcore-dev/meshcore/blob/main/examples/companion_radio) - Para uso com um aplicativo de chat externo, via BLE, USB ou Wi-Fi. - [KISS Modem](https://github.com/meshcore-dev/meshcore/blob/main/examples/kiss_modem) - Ponte de protocolo KISS serial para aplicações host. ([documentação do protocolo](https://github.com/meshcore-dev/meshcore/blob/main/docs/kiss_modem_protocol.md)) - [Simple Repeater](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_repeater) - Estende a cobertura da rede retransmitindo mensagens. - [Simple Room Server](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_room_server) - Um servidor BBS simples para Posts compartilhados. - [Simple Secure Chat](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_secure_chat) - Comunicação de texto segura baseada em terminal entre dispositivos. - [Simple Sensor](https://github.com/meshcore-dev/meshcore/blob/main/examples/simple_sensor) - Nó de sensor remoto com telemetria e alertas. O exemplo Simple Secure Chat pode ser interagido através do Monitor Serial no Visual Studio Code, ou com um Serial USB Terminal no Android. ## ⚡️ Gravador do MeshCore Temos firmware pré-compilado pronto para gravar em dispositivos compatíveis. - Acesse https://meshcore.io/flasher - Selecione um dispositivo compatível - Grave um dos tipos de firmware: - Companion, Repeater ou Room Server - Assim que a gravação estiver concluída, você pode se conectar com um dos clientes MeshCore abaixo. ## 📱 Clientes MeshCore **Firmware Companion** O firmware companion pode ser conectado via BLE, USB ou Wi-Fi, dependendo do tipo de firmware que você gravou. - Web: https://app.meshcore.nz - Android: https://play.google.com/store/apps/details?id=com.liamcottle.meshcore.android - iOS: https://apps.apple.com/us/app/meshcore/id6742354151?platform=iphone - NodeJS: https://github.com/liamcottle/meshcore.js - Python: https://github.com/fdlamotte/meshcore-cli **Firmware Repeater e Room Server** O firmware repeater e room server pode ser configurado via USB na ferramenta de configuração web. - https://config.meshcore.io Eles também podem ser gerenciados via LoRa no aplicativo móvel usando o recurso de Gerenciamento Remoto. ## 🛠 Compatibilidade de Hardware O MeshCore foi projetado para dispositivos listados no [MeshCore Flasher](https://meshcore.io/flasher) ## 📜 Licença O MeshCore é um software de código aberto lançado sob a Licença MIT. Você é livre para usá-lo, modificá-lo e distribuí-lo para projetos pessoais e comerciais. ## Contribuindo Por favor, envie PRs usando 'dev' como branch base! Para mudanças menores, basta enviar seu PR e tentaremos revisá-lo, mas para qualquer coisa mais 'impactante', por favor abra uma Issue primeiro e inicie uma discussão. É melhor sondar o que você deseja alcançar primeiro, e tentar chegar a um consenso sobre qual é a melhor abordagem, especialmente quando isso impacta a estrutura ou arquitetura desta base de código. Aqui estão alguns princípios gerais que você deve tentar seguir: * Mantenha simples. Por favor, não pense como um programador de linguagem de alto nível. Pense embarcado, e mantenha o código conciso, sem quaisquer camadas desnecessárias. * Sem alocação dinâmica de memória, exceto durante funções de setup/begin. * Use o mesmo estilo de chaves e indentação que está nos módulos de código-fonte principais. (Um .clang-format provavelmente será adicionado em breve, mas por favor NÃO reformate retroativamente o código existente. Isso apenas cria diffs desnecessários que dificultam a localização de problemas) Ajude-nos a priorizar! Por favor, reaja com joinha nas issues/PRs que você mais se importa. Olhamos as contagens de reações ao planejar o trabalho. ### Executando testes unitários Para executar os testes unitários, execute o seguinte comando: ```bash pio test --environment native --verbose ``` ## Road-Map / To-Do Há uma série de recursos bastante importantes no pipeline, sem prazos específicos associados ainda. Em ordem cronológica bem aproximada: - [X] Rádio Companion: redesign da UI - [X] Repeater + Room Server: adicionar ACLs (como o Sensor Node tem) - [X] Padronizar o modo Bridge para repetidores - [ ] Repeater/Bridge: Padronizar os Transport Codes para zoneamento/filtragem - [X] Core + Repeater: descoberta de vizinhos zero-hop aprimorada - [ ] Core: suporte a caminho manual de ida e volta - [ ] Companion + Apps: suporte para múltiplas sub-meshes (e modo repetidor cliente 'off-grid') - [ ] Core + Apps: suporte para compressão de mensagens LZW - [ ] Core: CR (Coding Rate) dinâmico para saltos fracos vs fortes - [ ] Core: novo framework para hospedar múltiplos nós virtuais em um único dispositivo físico - [ ] Especificação do protocolo V2: discussão e consenso em torno do protocolo de pacotes V2, incluindo hashes de caminho, novas especificações de criptografia, etc ## 📞 Obter Suporte - Relate bugs e solicite recursos na página de [GitHub Issues](https://github.com/meshcore-dev/meshcore/issues). - Encontre guias e componentes adicionais no [meu site](https://buymeacoffee.com/ripplebiz). - Junte-se ao [MeshCore Discord](https://meshcore.gg) para conversar com os desenvolvedores e obter ajuda da comunidade.