- Restructured roadmap to focus on ESP32 firmware development only - Removed time constraints from all development phases - Clarified data flow: ESP32 streams to webapp, webapp handles all logging - Updated deliverables: firmware components, hardware integration, OLED support - Removed PC software and web visualization phases (handled by separate webapp) - Updated success criteria for ESP32 firmware performance metrics - Updated dev notes to reflect webapp integration architecture
8 KiB
ESP32 UWB Hardware Roadmap
MaUWB ESP32-S3 Ultra-Wideband Indoor Positioning System
🎯 Project Overview
Purpose: ESP32-S3 firmware for Ultra-Wideband indoor positioning hardware
- Hardware: 1 mobile tag + 8+ battery-powered anchors (Makerfabs MaUWB)
- Connectivity: Tag streams to PC via USB, anchors are battery-powered wireless
- Network: Tag connects to 8 closest anchors with automatic switching
- Goal: Reliable UWB ranging with anchor auto-positioning and real-time data streaming
📋 System Requirements
Hardware Components
- Tag Device: ESP32-S3 with USB connectivity
- Anchor Devices: 8+ ESP32-S3 units (battery powered)
- PC Interface: USB connection for data collection
- Power Management: Battery-powered anchors (no mains/WiFi)
Core Constraints
- ✅ Battery-powered anchors (no WiFi connectivity)
- ✅ Tag connects to 8 closest anchors (auto-switching)
- ✅ USB-only connection (tag to PC)
- ✅ No WiFi scanning needed (handled by PC)
- ✅ Warehouse too large for simultaneous connection to all anchors
🏗️ System Architecture
Data Flow Design
Anchors (Battery) → Auto-Position Calibration → Store Coordinates Locally
↓
Tag (Mobile) → Collect Raw Data + Anchor Coordinates → USB Stream → WebApp
↓
Real-time Display
+ Data Logging
+ Path Analysis
Critical Problem Solved
Challenge: How do battery-powered anchors transmit calibrated positions to PC? Solution: Tag acts as data relay - collects anchor coordinates and streams all data via USB to webapp for processing, logging, and visualization
🚀 ESP32 Firmware Development Roadmap
Phase 1: Anchor Auto-Positioning System
1.1 Distributed Positioning Algorithm
-
Anchor Discovery Protocol
- All anchors broadcast discovery signals on startup
- Build neighbor discovery table for each anchor
- Implement range-based network topology mapping
-
Distance Measurement Matrix
- Each anchor measures distances to all neighbors in range
- Store distance measurements locally (EEPROM/flash)
- Handle partial connectivity (not all anchors can reach each other)
-
Coordinate System Establishment
- Designate anchor with most connections as origin (0,0)
- Establish coordinate system orientation
- Implement distributed position calculation algorithm
-
Position Calculation & Storage
- Each anchor calculates its own position using trilateration
- Store calculated position in local memory
- Implement position confidence scoring
1.2 Anchor Communication Protocol
-
Inter-Anchor Data Exchange
- Protocol for sharing distance measurements
- Handle multi-hop communication for distant anchors
- Implement data consistency checks
-
Position Refinement
- Iterative position improvement algorithm
- Consensus mechanism for coordinate system alignment
- Error detection and correction
Phase 2: Tag Data Relay System
2.1 Enhanced Tag Functionality
-
Anchor Discovery & Connection
- Scan for available anchors
- Connect to 8 closest/strongest anchors
- Implement smooth anchor switching logic
-
Position Data Collection
- Request calibrated positions from connected anchors
- Aggregate anchor position data
- Handle missing or incomplete anchor data
-
Real-time Positioning
- Calculate tag position using 8 connected anchors
- Maintain position continuity during anchor handoffs
- Implement position smoothing/filtering
2.2 USB Data Streaming System
-
Real-time Data Stream
- Stream raw positioning data via USB (AT+RANGE format)
- Include anchor coordinates in data stream when available
- Maintain backward compatibility with current UWBHelper parsing
-
Data Collection Protocol
- Request anchor coordinates: "Send me your calibrated position"
- Anchor responds: {anchor_id, x, y, calibration_confidence}
- Forward anchor data immediately via USB to webapp
- No local file storage - webapp handles all logging
Phase 3: System Integration & Optimization
3.1 Quick Installation Workflow
- Automated Setup Process
- Power-on all anchors simultaneously
- Auto-discovery and network formation
- Position calibration and verification
- Tag pairing and webapp connection setup
- Target: Ready-to-use in <15 minutes
3.2 Performance Optimization
-
Battery Life Optimization
- Optimize anchor power consumption
- Implement sleep modes when possible
- Efficient UWB communication protocols
-
Data Transmission Efficiency
- Optimize AT command responses
- Minimize USB data bandwidth usage
- Ensure reliable anchor coordinate transmission
3.3 System Validation
-
Accuracy Testing
- Position accuracy validation
- Anchor auto-positioning verification
- End-to-end ESP32 system testing
-
Hardware Integration
- OLED display optimization
- UWB module reset and recovery
- Serial communication stability
🎯 Key Technical Challenges
1. Distributed Anchor Positioning
Challenge: Anchors must calculate positions without central coordination Solution: Implement distributed trilateration with consensus mechanism
2. Data Relay Through Tag
Challenge: Getting anchor position data to PC without direct connectivity Solution: Tag acts as mobile bridge collecting and relaying data
3. Coordinate System Consistency
Challenge: Ensuring all anchors use same coordinate system Solution: Distributed coordinate system establishment protocol
4. Anchor Handoff Management
Challenge: Smooth positioning during anchor switching Solution: Position continuity algorithms and coordinate system alignment
5. Partial Connectivity Handling
Challenge: Not all anchors can communicate directly Solution: Multi-hop communication and distributed data sharing
📦 ESP32 Firmware Deliverables
Firmware Components
- Enhanced Anchor Firmware - Auto-positioning, coordinate storage, inter-anchor communication
- Enhanced Tag Firmware - Data relay, anchor coordinate collection, USB streaming
- UWBHelper Library - Complete AT command implementation with positioning support
- Configuration Management - Network setup, device roles, calibration storage
Hardware Integration
- OLED Display Support - Real-time status, anchor/tag information, connection indicators
- Reset & Recovery - UWB module reset handling, error recovery protocols
- Power Management - Battery optimization for anchors, USB power for tags
- Serial Communication - Robust USB streaming, AT command processing
Documentation
- Firmware Installation Guide - PlatformIO build and flash procedures
- AT Command Reference - Complete UWBHelper API documentation
- Hardware Setup Guide - Pin configurations, OLED connections, reset procedures
- Calibration Procedures - Anchor positioning, system validation, accuracy testing
Validation & Testing
- Positioning Accuracy Report - ESP32 ranging performance metrics
- Battery Life Analysis - Anchor power consumption data
- Communication Reliability - USB streaming stability, AT command response times
🔄 ESP32 Firmware Success Criteria
- Quick Setup: Anchor auto-positioning completes in <15 minutes
- Ranging Accuracy: <30cm UWB distance measurement accuracy
- Battery Life: Anchors operate >8 hours on single battery charge
- Communication Reliability: Stable USB data streaming with <1% packet loss
- Network Stability: Automatic anchor discovery and handoff without interruption
- AT Command Compatibility: Full UWBHelper library integration with webapp