🧿 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
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
🔌 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 |
Quick Links
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.4–869.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