Project Amulet — Zero-budget stealth-wearable LoRa/UWB tracking & audio system
  • C++ 37.3%
  • C 31%
  • Python 29%
  • Dockerfile 1.2%
  • CMake 0.9%
  • Other 0.6%
Find a file
Fredrick 2d86d38ee1 refactor(tracker): move product/business docs to business-docs repo
Move 13 markdown docs, 4 SVG diagrams, and 2 LaTeX plan files from
tracker/docs/ to the business-docs repository. These are product-level
documents (BOM, regulatory, assembly, power budget, module selection,
sourcing, RF/antenna, UWB ranging, PCB design, base station, future
ideas) that belong with the business/product documentation, not the
firmware codebase.

Cross-references updated in both repos:
- Moved files: business-docs paths now use local refs, tracker paths
  use ../tracker/docs/ prefix
- Staying tracker files: moved doc links use ../business-docs/ prefix
- All diagrams linked from both repos point to correct locations

Stays in tracker/docs/: architecture, firmware, pin-mapping, toolchain,
audio-pipeline, troubleshooting, STYLE, amulet.md, modules/, and 5
firmware-specific SVGs (state-machine, protocol-stack, signal-timing,
system-architecture, audio-pipeline).
2026-06-17 16:16:39 +00:00
.forgejo/workflows Hardware prep: DTS overlay audit, MCUmgr BLE OTA, SX1262 node, CS portability 2026-06-15 13:21:16 +00:00
docs refactor(tracker): move product/business docs to business-docs repo 2026-06-17 16:16:39 +00:00
firmware Hardware prep: DTS overlay audit, MCUmgr BLE OTA, SX1262 node, CS portability 2026-06-15 13:21:16 +00:00
.gitignore docs: create missing per-module deep dives; fix .gitignore modules/ pattern 2026-06-05 22:06:13 +00:00
AGENTS.md refactor(tracker): move product/business docs to business-docs repo 2026-06-17 16:16:39 +00:00
GUIDELINES.md refactor(tracker): move product/business docs to business-docs repo 2026-06-17 16:16:39 +00:00
README.md refactor(tracker): move product/business docs to business-docs repo 2026-06-17 16:16:39 +00:00

🧿 Project Amulet

Zero-budget stealth-wearable LoRa/UWB tracking & audio system for sensory-sensitive autistic children.

Concealed in bohemian macrame jewelry — no plastic, no silicone, no exposed electronics.

📡 LoRa 868 MHz  ·  🎯 UWB 6.5 GHz  ·  🗺️ GPS  ·  🎵 Audio  ·  ⚡ 300 mAh  ·  🧵 Macrame
🧠 nRF54L15     ·  ⚙️ Zephyr RTOS  ·  🇸🇪 Partille, Sweden  ·  📜 PTS-compliant

📋 Table of Contents

Section
System Architecture Block diagram, modules, interfaces
The Problem & Solution Why this exists
Build Roadmap Three-phase plan with progress
Documentation Full doc index by category
Key Engineering Decisions Why each part was chosen
Quick Links Resources and references
Safety Critical warnings

System Architecture

graph TB
    subgraph Wearable["Amulet Wearable"]
        MCU["nRF54L15 Cortex-M33<br/>128 MHz · 22nm · 0.6 µA sleep"]
        LORA["Semtech SX1262<br/>LoRa 868 MHz · 500 mW ERP"]
        UWB["Qorvo DWM3000<br/>UWB 10 cm precision"]
        GPS["ATGM336H GNSS<br/>MOSFET power-gated"]
        MIC1["PDM MEMS Mic L"]
        MIC2["PDM MEMS Mic R"]
        AMP["MAX98357A I2S"]
        SPKR["IP67 Micro-speaker"]
        BAT["300 mAh LiPo<br/>+ low-ESR supercap"]
        BLE["nRF54L15 Built-in BLE<br/>MCUboot OTA"]
    end

    subgraph FixedGW["Fixed Gateway (RAK V2)"]
        RAK["RAK V2 Miner<br/>SX130x Concentrator · 8-channel LoRa"]
        POD["Podman Container<br/>Codec2 decode · REST API<br/>Geofence · Position DB"]
    end

    subgraph Mobile["Mobile (Phone)"]
        PHONE["Android / iOS App<br/>Maps · UWB Radar · Audio<br/>Pixel 7 Pro: Qorvo DW3720 UWB"]
    end

    MCU -->|SPI1| LORA
    MCU -->|SPI00| UWB
    MCU -->|UART| GPS
    MCU -->|PDM0/1| MIC1
    MCU -->|PDM0/1| MIC2
    MCU -->|I2S| AMP
    AMP --> SPKR
    BAT --> MCU
    BAT --> LORA

    LORA <-->|"868 MHz · long range"| RAK
    UWB <-->|"6.5 GHz · DS-TWR"| PHONE
    RAK -->|"Ethernet"| POD
    POD -->|"REST / WebSocket"| PHONE
    MCU -->|"BLE 10 m"| PHONE

📝 Design docs: Architecture · Firmware · Base Station 🔗 Diagrams: 8 technical SVGs · 14 artwork illustrations · 7 animated WebP · 11 photos · 11 PDFs


The Problem & Solution

Standard trackers fail non-verbal autistic children on two fronts:

Problem Amulet Solution
Hard plastic & silicone trigger tactile defensiveness → device removed 🧵 Soft macrame enclosure — feels like artisan jewelry
Cellular LTE-M requires daily charging + expensive subscriptions 📡 LoRa + UWB — zero recurring costs, 18-day battery
GPS alone is inaccurate in urban canyons / indoors 🎯 UWB — 10 cm precision for search mode
Commercial trackers are bulky and stigmatising 🔮 Concealed in bohemian macrame — nobody knows it's a tracker

Build Roadmap

Phase Focus Progress Key Milestones
1 🛠️ Prototyping (breadboard) ████░░░░░░ 40% Modules selected · Pin mapping · 🚧 SPI bring-up · 🚧 PDM capture
2 💻 Firmware integration ██░░░░░░░░ 20% Device Tree · Token bucket · 🚧 Codec2 port · 🚧 Beamforming
3 🧵 Physical assembly ░░░░░░░░░░ 0% 🚧 Solder modules · 🚧 Conformal coat · 🚧 Weave antenna · 🚧 Braid enclosure
graph LR
    P1["Phase 1<br/>🛠️ Prototyping"] --> P2["Phase 2<br/>💻 Firmware"] --> P3["Phase 3<br/>🧵 Assembly"]
    P1 -->|"✅ SWD flash<br/>✅ SPI verify<br/>✅ PDM capture<br/>✅ <3µA sleep"| P2
    P2 -->|"✅ Device Tree<br/>✅ Beamforming<br/>✅ Codec2 + bitpack<br/>✅ PTS token-bucket"| P3
    P3 -->|"✅ Solder modules<br/>✅ Conformal coat<br/>✅ Weave antenna<br/>✅ Braid enclosure"| DONE["🎯 Done"]

💡 Phase 1 and 2 can overlap — test each module on breadboard while writing its driver.


Documentation

🔧 Core Design

Doc Description
architecture.md Hardware block diagram, component selection, wiring, pin assignments
firmware.md Zephyr RTOS, cooperative threading, zero-heap C++, Device Tree overlays
pin-mapping.md Complete nRF54L15 pin table, wiring color code, verification checklist
power-budget.md Battery selection, supercap sizing, per-mode current, 3-scenario daily budget
assembly.md Build phases — soldering, conformal coating, macrame weaving, antenna tuning
bom.md Full bill of materials — every component, tool, wire, and sourcing link
sourcing.md Purchase order plan — AliExpress batches, Biltema, Electrokit

📡 Radio & RF

Doc Description
rf-antenna.md Link budget, 1/4 wave antenna, LC Pi-filter, NanoVNA tuning, body effect
regulatory.md PTS frequency plan, EU RED compliance, SAR, CE marking, labeling
uwb-ranging.md Two-Way Ranging protocol, timing, power budget, search mode, PDoA future

🎵 Audio

Doc Description
audio-pipeline.md Codec2 over LoRa, Phase 1 static alerts, payload assembly, decoder platforms

📡 Infrastructure

Doc Description
base-station.md RAK V2 gateway, ESP32-S3 USB add-on, Android app, BLE protocol
toolchain.md Arch Linux dev environment, Zephyr west, SWD flashing, OTA, test equipment strategy

🧩 Module Deep Dives

Doc Description
modules/nrf54l15.md MCU — nRF54L15 vs nRF52840 vs ESP32-S3, 2026 assessment
modules/sx1262.md LoRa — SX1262 vs LR2021, PTS configuration, module variants
modules/dwm3000.md UWB — DWM3000 replaces DWM1000, phone-as-anchor, 802.15.4z STS
modules/atgm336h.md GPS — ATGM336H vs MAX-M10S, power trade-off, multi-constellation
module-selection.md Research validation with sourced references for all 4 modules

🔌 PCB & Troubleshooting

Doc Description
pcb-design.md Perfboard layout, RF trace design, decoupling, 2-layer stackup
troubleshooting.md Diagnostic flowchart, 9 problem categories, 30+ test points

📋 Process & Planning

Doc Description
AGENTS.md Quick-reference for AI agents — credentials, mandates, key context
GUIDELINES.md Engineering mandates — zero-heap, PTS compliance, module decisions
productization.md Prototype-to-product roadmap — certifications, costs, licensing, BOM scaling

🎬 Multimedia

Multimedia assets live in the business-docs/ repo (submodule in meta):

Category Location Count
🖼️ Product photos business-docs/IMAGES/ 31 WebP
🎞️ Animated diagrams business-docs/IMAGES/ 7 animated WebP
🎨 Artwork business-docs/ARTWORK/ 21 SVG
🤖 Image prompts business-docs/PROMPTS/ 9 Flux.2 prompts
📄 Datasheets documentation/pdfs/ (documentation repo) 11 PDFs

Key Engineering Decisions

Area Choice Why
🧠 MCU nRF54L15 — not nRF52840 22nm, 128 MHz, DSP, 0.6 µA sleep, BLE 6.0
📡 LoRa SX1262 — not SX1276 2× power efficiency, native 868 MHz
🎯 UWB DWM3000 — Ch 5 (6.5 GHz) 802.15.4z STS, phone-as-anchor (Pixel 7 DW3720), FiRa compliant
🗺️ GPS ATGM336H — MOSFET gated $3.50 module, 25 mA acquisition, pin-compat with u-blox
🎵 Audio Codec2 700 bps — static Phase 1 Audio-over-LoRa DSP is hard; ship, then iterate
🔋 Power 300 mAh LiPo + supercap 18-day budget; supercap absorbs LoRa 110 mA bursts
🧵 Enclosure Macrame — not epoxy/plastic Sensory-safe, breathable, replaceable, indistinguishable from jewelry
📜 OS Zephyr RTOS — not FreeRTOS nRF Connect SDK, better driver support
🏠 Base RAK V2 + optional USB LoRa stick Existing hardware; phone handles UWB natively

Resource Link
🔗 Forgejo Repo forgejo.loopaware.com/ProjectAmulet/tracker
🔗 Redmine Project redmine.loopaware.com/projects/project-amulet
📄 Design Doc v2 docs/plan-v2.tex
📄 Design Doc v1 docs/plan-v1.tex
📸 Image sources business-docs/IMAGES/SOURCES.md
📚 PDF library documentation/pdfs/PARTS.md

Safety

⚠️ Never use unbranded LiPo batteries. Only source domestic cells with integrated PCM protection. Grey-market batteries lack thermal runaway protection and are a fire hazard when woven into clothing.

⚠️ PTS compliance is hardcoded. The SX1262 is locked to 869.4869.65 MHz. The token bucket enforces 10% duty cycle (max 360 s/h). These are not configurable — they are mandatory for legal operation in Sweden.


🇸🇪 Partille, Sweden · May 2026 · PTS-compliant · Made with care for sensory-sensitive families