
대부분의 상업용 애완동물 추적기는 셀룰러 구독 또는 전화에 연결된 블루투스 범위(수십 미터)에 의존합니다. 신호를 잃거나 요금을 지불하지 않거나 그리드에서 벗어나면 추적기가 꺼집니다.
LIA는 다른 접근 방식을 취합니다. 이는 Meshtastic와 LoRa 메시 네트워킹을 기반으로 한 오픈 소스 애완동물 및 자산 추적기로, 셀 네트워크 대신 분산된 라디오 메시를 통해 GPS 위치를 방송하는 콜라 장착형 소형 장치입니다. 추적기와 게이트웨이 사이에 Meshtastic 노드 체인이 있는 한 위치를 얻을 수 있습니다 — 월 요금 없음, 통신사 잠금 없음, 다운되는 클라우드 백엔드 없음.
이 설명서는 전체 빌드를 안내합니다: PCB, 두 가지 하드웨어/배터리 수정, 세 가지 인클로저 변형, 3D 인쇄 및 조립, 펌웨어 플래싱, 그리고 Meshtastic 추적기 노드로 구성하는 과정입니다. 모든 것 — 회로도, PCB 레이아웃, BOM, 인클로저 CAD, 및 펌웨어 — 는 완전히 공개되어 있으며 CC BY-NC-SA 4.0 라이센스 하에 배포됩니다.
📺 데모 비디오 보기 📖 전체 문서 💻 소스 저장소
특징
- 오픈 Meshtastic 프로토콜을 통한 장거리 LoRa 통신 — 독점 라디오 스택 없음
- GPS/GNSS 추적, 미리 정의된 노드에 직접 메시지로만 전송 — 더 넓은 공공 메시로 방송되지 않음
- 물리적 3위치 스위치: 지속적인 비콘 모드(LED 켜짐, 30초마다 위치), 저전력 추적기 수면 주기(대략 1분마다 고정), 또는 완전히 꺼짐
- 메시를 통한 텍스트 명령 인터페이스 — 위치/배터리 요청, 알림 전환, LED 오버라이드
- 실제 하드웨어 웨이크 소스(타이머, 스위치 전환, 충전기 플러그인)를 갖춘 저전력 펌웨어의 깊은 수면 모드
- 완전히 오픈 하드웨어: 회로도, PCB 레이아웃, BOM, 및 세 가지 인클로저 변형의 인클로저 CAD
STEP 1. 준비물

전자기기 (트래커당)
- 1x LIA 메인 PCB, 조립 완료 — KiCad 프로젝트와 제작 파일 (Gerbers, BOM, 픽 앤 플레이스)에서 제작 및 조립 주문, 예: Seeed Fusion를 통해 — 모든 부품 번호에 대한 전체 인터랙티브 BOM을 참조하세요
- 이미 BOM에 포함된 핵심 IC: ESP32-S3-MINI-1-N8 (MCU), Wio-SX1262 LoRa 모듈, u-blox SAM-M10Q GNSS 모듈, MAX17048 연료 게이지, TP4056 충전 컨트롤러
- 1x 배터리 — 보호 회로가 없는 18650 리튬 이온 셀, 3500 mAh (V1.0) 또는 50×37×4 mm 파우치 셀, 1000 mAh (V1.1); 내장 보호 회로는 필요 없으며, 보드가 이를 처리합니다
- 1x YFNF868F3AM FPC LoRa 안테나 (온보드 기본) 또는 868/915 MHz 옴니디렉셔널 LoRa 안테나, 예: Seeed의 LoRa 안테나 키트
- 1x 세라믹 GNSS 패치 안테나
- USB-C-대-자석-4핀-pogo 충전 케이블, 예: Seeed의 T1000 케이블
인클로저
- 3D 프린터 (레진 또는 FDM) 또는 CNC 접근 — 모든 세 가지 변형의 인쇄 파일은 enclosure/에서 실시간으로 확인할 수 있습니다 (STEP + STL)
- 쉘 절반을 위한 작은 나사 (참조: 제작 도면)
- 장착할 수 있는 칼라 스트랩
도구
- 펌웨어 빌드/플래싱을 위한 PlatformIO가 설치된 컴퓨터
- USB-C 케이블 (초기 플래시용)
- Meshtastic 앱가 설치된 전화기 (Android/iOS)
- 메시 게이트웨이/수신기로 작동할 두 번째 Meshtastic 노드
- 인두 — 보너스 단계에서 설명된 I2C 리워크를 수행하거나 보드를 직접 조립하는 경우에만 필요합니다
STEP 2. LIA가 작동하는 방식

무언가를 만들기 전에, 배터리 수명 동안 펌웨어가 반복적으로 실행하는 루프는 다음과 같습니다:
- 깨어남 — 타이머 또는 움직임 트리거로부터 깊은 수면에서 깨어납니다.
- 위치 고정 — GNSS 모듈이 GPS 위치를 획득합니다.
- 위치 방송 — Meshtastic 프로토콜을 사용하여 LoRa를 통해 위치를 방송합니다.
- 중계 — 인근 메쉬 노드가 패킷을 게이트웨이로 전달하며, 노드별로 인터넷에 도달할 때까지 진행합니다.
- 수면 — 라디오와 GPS가 전원을 끄고, 장치는 다시 깊은 수면으로 돌아갑니다.
보드에 있는 물리적 3위치 스위치는 이 루프가 얼마나 공격적으로 실행되는지를 제어합니다:
- 높음 — 비콘 모드. LED가 고정 빨간색으로 켜져 있으며, 절대 잠들지 않고, 30초마다 방송합니다. 적극적으로 탐색할 때 좋습니다 — 산책 중이거나 "개가 방금 어디로 갔지?"와 같은 상황에서 유용합니다.
- 낮음 — 추적기 모드. 대략 1분마다 깨어나고, 위치를 고정한 후, 이를 전송하고 다시 잠듭니다. 일상적인 착용을 위한 저전력 기본 모드입니다 (이 모드에서 18650 팩으로 약 3.3일, 비콘 모드에서는 약 4시간 — 상태 LED만으로도 깨어 있는 전류의 약 87%를 소모합니다).
- 꺼짐 — 실제 하드웨어 차단. 배터리를 충전할 수 있도록 하면서 MCU에 대한 전원을 완전히 차단합니다.
텍스트 명령 인터페이스도 있습니다 — GPS, BATTERY 또는 HELP를 메쉬를 통해 장치에 직접 메시지로 보내면 동일한 방식으로 응답합니다 (구성 단계에서 이에 대해 더 설명합니다).
STEP 3. PCB



LIA의 보드는 KiCad에서 설계되었으며, 턴키 PCBA를 위해 제작되었습니다 — 미세 피치 부품을 손으로 납땜할 필요가 없습니다.
- MCU + Wi-Fi/BLE: ESP32-S3-MINI-1-N8
- LoRa 트랜시버: Wio-SX1262
- GNSS: u-blox SAM-M10Q
- 배터리 게이지: MAX17048G+T10
- 충전 컨트롤러: TP4056
- 전원: 18650 (V1.0) 또는 5023450 파우치 셀 (V1.1) + USB-C 충전
직접 제작하려면: KiCad 8+에서 hardware/kicad/LIA.kicad_pro를 열거나, 준비된 제작 출력물 (Gerbers, BOM, 픽 앤 플레이스)를 PCBA 업체에 직접 보내세요. 전체 인터랙티브 클릭-하이라이트 BOM은 문서에 있습니다.
STEP 4. 배터리 및 인클로저 버전 선택하기




V1.0과 V1.1은 전기적으로 동일합니다 — 동일한 PCB 설계와 동일한 lia_v1 펌웨어를 사용합니다. 유일한 차이는 배터리입니다:
- V1.0- 18650 리튬 이온, 3500 mAh. 칼라에 직접 장착되며 잠금 장치가 없습니다. 적합한 용도: 가장 긴 작동 시간과 더 간단한 제작.
- V1.1- 50×37×4 mm 파우치 셀, 1000 mAh. 칼라에 직접 장착됩니다. 적합한 용도: 가장 작고 가벼운 구성 — 작은 동물용으로, 크기를 줄이는 대신 작동 시간이 짧습니다.
모두 표준 칼라 스트랩에 클립으로 장착되며 상태 LED 위에는 별도의 창이 있습니다.
사용 중인 배터리에 맞는 변형을 선택한 다음 enclosure/ 에서 해당 STEP/STL 파일을 가져오세요 — 파일을 보기나 인쇄하는 데 CAD 라이선스는 필요하지 않습니다.
STEP 5. 3D 프린트(또는 기계 가공)하여 인클로저 제작하기



각 변형의 step/ 및 stl/ 폴더에는 외 shell을 인쇄하거나 CNC 가공하는 데 필요한 모든 것이 포함되어 있습니다 — 상단 shell, 하단 shell, LED 창, 그리고 (분리형 버전의 경우) 별도의 칼라 클립 및 잠금 조각. 아직 주입 성형 도구는 정의되지 않았습니다; 현재로서는 수지/FDM 인쇄 또는 CNC 영역입니다.
shell, LED 컷아웃 위의 약간 투명한 창 조각, 그리고 — V1.0-Detachable을 제작하는 경우 — 별도의 칼라 상단/하단 및 잠금을 인쇄하세요. 치수가 포함된 제조 도면은 여기에 있습니다, 기계 가공을 원하신다면.
STEP 6. 조립하다


- 배터리를 클립에 장착합니다 (18650용 Keystone 54), 극성을 확인하고 LoRa 안테나를 SX1262 모듈에 클립합니다.
- 보드를 닫기 전에 플래시 및 스모크 테스트를 수행합니다 — 6단계를 참조하세요. 밀폐된 인클로저에서 디버깅하는 것은 재미가 없습니다.
- LoRa 안테나를 상단 쉘의 내부를 따라 배치합니다 (FPC 안테나 또는 전방향 안테나 모두 동일한 커넥터를 사용합니다).
- PCB를 하단 쉘의 스탠드오프 위에 놓습니다.
- 상단 쉘과 LED 창을 맞추고, 쉘을 함께 나사로 고정합니다.
- 상태 LED가 창을 통해 보이는지 확인하고, 밀폐된 후에도 보드가 GPS/메시 고정을 유지하는지 확인합니다 — 밀폐된 RF 성능은 자동이 아니므로 완료되었다고 부르기 전에 확인하세요.
충전은 4핀 마그네틱 포고 커넥터를 통해 이루어지므로, 일단 밀폐되면 계속 밀폐 상태를 유지합니다 — 표준 USB-C-대-마그네틱-포고 케이블이 나머지를 처리합니다.
STEP 7. 펌웨어 플래시하기
LIA는 ESP32-S3 타겟을 위한 기본 Meshtastic 펌웨어를 실행하며, 모드 스위치, 상태 LED, 충전기 상태, 배터리 게이지, IMU 및 텍스트 명령 인터페이스를 위한 LIA 전용 lia_v1 보드 변형이 추가되어 있습니다. V1.0 및 V1.1 보드는 동일한 lia_v1 빌드를 사용합니다.
참고: Meshtastic 웹 플래셔는 여기서 작동하지 않습니다 — 기본적인 일반 ESP32-S3 펌웨어만 있으며 LIA의 주변 장치가 존재하는지 알지 못합니다. 오버레이를 직접 빌드해야 합니다.
레포의 firmware/tools/에서 (이 명령은 네이티브 PowerShell 세션에서 실행해야 하며, Git Bash에서는 안 됩니다 — ESP-IDF 툴체인이 필요합니다):
cd firmware/tools
./build.ps1 -Upload -Port COM7
이 스크립트는 Meshtastic의 펌웨어를 클론하고, 고정된 태그를 체크아웃하며, LIA의 오버레이를 복사하고, 한 번의 단계에서 빌드 + 플래시를 수행합니다. 전체 수동 단계(정확히 무엇을 하는지 보고 싶다면)는 펌웨어 빌드하기에 있습니다.
플래시하기 전에: 모드 스위치가 HIGH 또는 LOW에 있는지 확인하세요, OFF가 아니어야 합니다 — OFF 위치는 MCU에 전원을 완전히 차단하며, USB/pogo 전원만으로는 그 상태에서 켤 수 없습니다 (배터리만 충전됩니다).
빌드하기 전에, firmware/services/MeshTargets.h의 kLiaTargetNode를 이 트래커가 보고할 노드의 NodeNum으로 편집하세요 — 이는 빌드 시에 고정되며, 앱에서 구성할 수 없습니다 (아직은).
STEP 8. Meshtastic 추적기로 설정하기


- Meshtastic 앱을 열고, Bluetooth를 통해 장치를 추가한 후 스캔 목록에서 선택합니다.
- 역할을 추적기로 설정합니다: 무선 구성 → 장치 → 역할 → 추적기 (또는 CLI에서 meshtastic --set device.role TRACKER). 이는 단순한 레이블링을 넘어 중요합니다 — 기본 Meshtastic은 추적기 역할 노드에 대해 자체 경쟁 수면 타이머를 건너뛰며, 이는 수면이 다른 곳에서 처리된다고 가정하기 때문입니다. 이는 LIA의 펌웨어가 실제로 수행하는 작업입니다.
- GPS 고정이 보고되는지 확인합니다.
- 장치에 다이렉트 메시지로 HELP를 보냅니다. 명령 목록이 회신되면 무선, 안테나 및 펌웨어가 모두 끝에서 끝까지 작동하고 있음을 확인합니다.
LIA에 특화된 모든 것 — 위치, 충전 알림, 명령 회신 — 은 그 하나의 미리 정의된 노드로 다이렉트 메시지로 전송되며, 공개 방송이 아니므로 귀하의 반려동물 위치는 더 넓은 메시 네트워크에 보이지 않습니다.
유용한 명령어 (DM으로 전송, 대소문자 구분 없음):
- GPS — 현재 위치, 또는 "아직 GPS 고정 없음"
- BATTERY — 현재 게이지 충전 비율
- IMU ON / IMU OFF — 모션 감지 알림을 활성화/비활성화
- CHG ON / CHG OFF — "충전 중" 알림을 전환
- LED ON / LED OFF — 상태 LED를 수동으로 제어
- HELP — 모든 명령어 목록
STEP 9. 장착하고 현장에서 테스트하기


완성된 트래커를 목걸이 스트랩(또는 V1.0-Detachable의 분리 가능한 목걸이 조각)에 클립하고 밖으로 나가세요. GPS는 하늘을 어느 정도 잘 볼 수 있어야 합니다 — 야외에서는 1분 이내에 차가운 고정을 기대할 수 있으며, 나무 그늘 아래에서는 성능이 저하되고, 실내에서는 전혀 고정되지 않습니다(펌웨어는 "고정 없음"을 정확하게 보고하며, 잘못된 정보를 제공하지 않습니다).
능동 검색이나 저조도 가시성을 위해 비콘 모드(스위치 HIGH)로 전환하거나, 일상적인 저전력 착용을 위해 트래커 모드(스위치 LOW)로 두세요.
STEP 10. (보너스) 실제 하드웨어 디버깅 이야기 — I2C 재작업




오픈 소스 하드웨어는 완성된 렌더링뿐만 아니라 실수도 보여주는 것을 의미합니다. 첫 번째 조립 배치에서는 IMU의 SDA/SCL 라인이 제조 과정에서 교차되어 있었습니다 — 이로 인해 해당 보드에서 I2C를 완전히 비활성화해야 할 정도로 심각했습니다. 비슷하게 교차 배선된 보드를 보고 있다면, 다음은 단계별로 해결 방법입니다:
- 두 개의 SDA/SCL 경로를 드러내기 위해 솔더 마스크를 제거합니다.
- 경로를 잘라냅니다.
- 두 개의 점퍼 와이어로 경로를 교차시킵니다.
- 수정을 보호하기 위해 핫글루나 수지로 덮습니다.
이 수정이 적용되면, 두 하드웨어 수정판 모두 동일한 펌웨어를 실행하며, I2C를 통해 작동하는 IMU와 배터리 게이지가 있습니다 — 이 문제를 해결하기 위해 존재했던 이전의 lia_v2 변형은 수정이 완료되자 퇴역했습니다. 전체, 결점이 있는 빌드 로그 — 널 포인터 크래시, 반전된 LED, 그리고 단순히 방전된 배터리로 판명된 "고장 배터리"를 포함하여 — 는 개발 역사에 있습니다. 전체 이야기를 원하신다면 참고하세요.
원문: https://www.instructables.com/LIA-an-Open-Source-Off-Grid-LoRa-Pet-Asset-Tracker/