
MeshCore room-server-v1.17.0
패킷 라디오를 위한 새로운 경량 하이브리드 라우팅 메시 프로토콜
MeshCore 소개
MeshCore는 LoRa 및 기타 패킷 라디오를 사용하는 임베디드 프로젝트를 위한 멀티홉 패킷 라우팅을 가능하게 하는 가볍고 이식성 있는 C++ 라이브러리입니다. 인터넷 없이도 작동하는 탄력적이고 분산된 통신 네트워크를 만들고자 하는 개발자를 위해 설계되었습니다.
🔍 MeshCore란 무엇인가?
MeshCore는 이제 다양한 LoRa 장치를 지원하여 펌웨어를 수동으로 컴파일할 필요 없이 쉽게 플래싱할 수 있습니다. 사용자는 Adafruit ESPTool과 같은 도구를 사용하여 미리 빌드된 바이너리를 플래싱하고 시리얼 콘솔을 통해 네트워크와 상호 작용할 수 있습니다. MeshCore는 Meshtastic 및 Reticulum과 유사하지만 임베디드 프로젝트를 위한 경량 멀티홉 패킷 라우팅에 중점을 둔 무선 메시 네트워크를 만들 수 있는 기능을 제공합니다. 일상적인 LoRa 통신에 맞춰진 Meshtastic이나 고급 네트워킹을 제공하는 Reticulum과 달리, MeshCore는 단순성과 확장성 사이의 균형을 맞추어 맞춤형 임베디드 솔루션에 이상적이며, 장치(노드)가 중간 노드를 통해 메시지를 중계하여 장거리로 통신할 수 있습니다. 이는 기존 통신 인프라를 사용할 수 없는 오프그리드, 비상 상황 또는 전술 상황에서 특히 유용합니다.
⚡ 주요 기능
- 멀티홉 패킷 라우팅
- 장치는 여러 노드를 거쳐 메시지를 전달하여 단일 라디오의 도달 범위를 넘어 범위를 확장할 수 있습니다.
- 네트워크 효율성의 균형을 맞추고 과도한 트래픽을 방지하기 위해 구성 가능한 홉 수를 지원합니다.
- 노드는 고정된 역할을 사용하며, "Companion" 노드는 메시지를 전혀 반복하지 않아 잘못된 라우팅 경로가 사용되는 것을 방지합니다.
- LoRa 라디오 지원 – Heltec, RAK Wireless 및 기타 LoRa 기반 하드웨어와 함께 작동합니다.
- 분산형 및 탄력적 – 중앙 서버나 인터넷이 필요하지 않으며, 네트워크는 자가 복구됩니다.
- 저전력 소비 – 배터리 또는 태양광으로 구동되는 장치에 이상적입니다.
- 간편한 배포 – 미리 빌드된 예제 애플리케이션으로 쉽게 시작할 수 있습니다.
🎯 MeshCore를 무엇에 사용할 수 있나요?
- 오프그리드 통신: 외딴 지역에서도 연결 상태를 유지합니다.
- 비상 대응 및 재난 복구: 인프라가 다운된 곳에서 즉시 네트워크를 구축합니다.
- 야외 활동: 하이킹, 캠핑, 어드벤처 레이싱 통신.
- 전술 및 보안 애플리케이션: 군사, 법 집행, 민간 보안 사용 사례.
- IoT 및 센서 네트워크: 원격 센서에서 데이터를 수집하여 중앙 위치로 중계합니다.
🚀 시작하는 방법
- The Comms Channel의 MeshCore QuickStart Playlist를 시청하세요.
- Liam Cottle의 MeshCore Technical Presentation을 시청하세요.
- 자주 묻는 질문과 문서를 읽어보세요.
- 지원되는 장치에 MeshCore 펌웨어를 플래싱하세요.
- 지원되는 클라이언트와 연결하세요.
개발자를 위해:
- Visual Studio Code에 PlatformIO를 설치하세요.
- Visual Studio Code에서 MeshCore 저장소를 복제하고 여세요.
- 수정하고 실행할 수 있는 예제 애플리케이션을 확인하세요:
- Companion Radio - BLE, USB 또는 Wi-Fi를 통해 외부 채팅 앱과 함께 사용합니다.
- KISS Modem - 호스트 애플리케이션을 위한 시리얼 KISS 프로토콜 브리지입니다. (프로토콜 문서)
- Simple Repeater - 메시지를 중계하여 네트워크 커버리지를 확장합니다.
- Simple Room Server - 공유 Posts를 위한 간단한 BBS 서버입니다.
- Simple Secure Chat - 장치 간 보안 터미널 기반 텍스트 통신입니다.
- Simple Sensor - 텔레메트리 및 경보 기능이 있는 원격 센서 노드입니다.
Simple Secure Chat 예제는 Visual Studio Code의 Serial Monitor를 통해 또는 Android의 Serial USB Terminal을 통해 상호 작용할 수 있습니다.
⚡️ MeshCore Flasher
지원되는 장치에 플래싱할 준비가 된 미리 빌드된 펌웨어가 있습니다.
- https://meshcore.io/flasher 실행
- 지원되는 장치 선택
- 다음 펌웨어 유형 중 하나를 플래싱:
- Companion, Repeater 또는 Room Server
- 플래싱이 완료되면 아래 MeshCore 클라이언트 중 하나로 연결할 수 있습니다.
📱 MeshCore 클라이언트
Companion 펌웨어
Companion 펌웨어는 플래싱한 펌웨어 유형에 따라 BLE, USB 또는 Wi-Fi를 통해 연결할 수 있습니다.
- 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
Repeater 및 Room Server 펌웨어
Repeater 및 Room Server 펌웨어는 웹 구성 도구에서 USB를 통해 설정할 수 있습니다.
모바일 앱에서 Remote Management 기능을 사용하여 LoRa를 통해 관리할 수도 있습니다.
🛠 하드웨어 호환성
MeshCore는 MeshCore Flasher에 나열된 장치를 위해 설계되었습니다.
📜 라이선스
MeshCore는 MIT 라이선스에 따라 배포되는 오픈 소스 소프트웨어입니다. 개인 및 상업적 프로젝트를 위해 자유롭게 사용, 수정 및 배포할 수 있습니다.
기여
PR을 제출할 때는 'dev'를 기본 브랜치로 사용해 주세요! 사소한 변경의 경우 PR을 제출하시면 검토를 시도하겠지만, 더 '영향력 있는' 변경의 경우 먼저 Issue를 열고 논의를 시작해 주세요. 특히 이 코드베이스의 구조나 아키텍처에 영향을 미치는 경우, 달성하고자 하는 바를 먼저 타진하고 최선의 접근 방식에 대한 합의에 도달하는 것이 좋습니다.
다음은 따르도록 노력해야 할 몇 가지 일반 원칙입니다:
- 단순하게 유지하세요. 고수준 언어 프로그래머처럼 생각하지 마세요. 임베디드처럼 생각하고, 불필요한 계층 없이 코드를 간결하게 유지하세요.
- setup/begin 함수 중을 제외하고는 동적 메모리 할당을 하지 마세요.
- 핵심 소스 모듈에 있는 것과 동일한 중괄호 및 들여쓰기 스타일을 사용하세요. (.clang-format이 곧 추가될 예정이지만, 기존 코드를 소급하여 재포맷하지 마세요. 이는 문제를 찾기 어렵게 만드는 불필요한 diff를 생성할 뿐입니다)
우선순위를 정하는 데 도움을 주세요! 가장 관심 있는 이슈/PR에 thumbs-up으로 반응해 주세요. 작업 계획 시 반응 수를 확인합니다.
단위 테스트 실행
단위 테스트를 실행하려면 다음 명령을 실행하세요:
pio test --environment native --verbose
로드맵 / 할 일
파이프라인에 상당히 주요한 기능들이 여러 개 있으며, 아직 특정 일정은 정해지지 않았습니다. 대략적인 시간 순서대로:
- Companion radio: UI 재설계
- Repeater + Room Server: ACL 추가 (Sensor Node처럼)
- Repeater용 Bridge 모드 표준화
- Repeater/Bridge: 존/필터링을 위한 Transport Codes 표준화
- Core + Repeater: 향상된 제로홉 이웃 검색
- Core: 왕복 수동 경로 지원
- Companion + Apps: 다중 서브메시 지원 (및 '오프그리드' 클라이언트 반복 모드)
- Core + Apps: LZW 메시지 압축 지원
- Core: 약한 홉과 강한 홉을 위한 동적 CR (Coding Rate)
- Core: 하나의 물리적 장치에서 여러 가상 노드를 호스팅하기 위한 새 프레임워크
- V2 프로토콜 사양: 경로 해시, 새 암호화 사양 등을 포함한 V2 패킷 프로토콜에 대한 논의 및 합의
📞 지원 받기
- GitHub Issues 페이지에서 버그를 보고하고 기능을 요청하세요.
- 제 사이트에서 추가 가이드와 구성 요소를 찾아보세요.
- MeshCore Discord에 참여하여 개발자와 대화하고 커뮤니티의 도움을 받으세요.