No description
  • C++ 80.9%
  • C 19.1%
Find a file
martin e402d1fe9b Add battery level indicator and optimize display layout
- Add battery icon with percentage display on main screen
- Implement battery voltage reading via ADC pin 4
- Remove network ID from main display to reduce clutter
- Reorganize UI layout for better space utilization:
  * Move battery icon to prevent text overflow
  * Compact header to single device info line
  * Gain 10 pixels vertical space for device list
- Battery updates every 30 seconds to conserve power
- Network ID still visible on 2-second startup screen
2025-08-31 18:57:22 +02:00
docs Update ESP32 firmware roadmap - focus on hardware development 2025-08-20 16:07:39 +02:00
lib/UWBHelper Implement proper UWB initialization and fix range data parsing 2025-08-25 19:46:51 +02:00
src Add battery level indicator and optimize display layout 2025-08-31 18:57:22 +02:00
.gitignore Initial commit: ESP32-S3 UWB positioning system 2025-08-19 18:50:38 +02:00
CLAUDE.md Refactor to unified firmware architecture with modular configuration system 2025-08-21 21:24:38 +02:00
platformio.ini Refactor to unified firmware architecture with modular configuration system 2025-08-21 21:24:38 +02:00
README.md Refactor to unified firmware architecture with modular configuration system 2025-08-21 21:24:38 +02:00

MaUWB ESP32-S3 Positioning System

Ultra-wideband (UWB) positioning system using ESP32-S3 and Makerfabs UWB modules for indoor positioning and warehouse mapping applications.

Working MaUWB Devices

Features

  • ESP32-S3 based anchor and tag devices
  • Real-time distance measurement with <10cm accuracy
  • OLED display for status and measurements
  • Multiple tag support (up to 64 tags)
  • 6.8Mbps communication rate
  • Complete AT command implementation
  • Position calculation with trilateration
  • Anchor auto-positioning system
  • Real-time positioning with USB data logging

MaUWB Modules

Hardware: Makerfabs MaUWB ESP32-S3 UWB Module with SSD1306 OLED displays

Unified Architecture

Single Firmware - All devices use the same main.cpp with config-driven behavior:

  • anchor: Base station with distributed positioning framework (default: ID=0, Network=1234)
  • tag: Mobile tracker with coordinate collection (default: ID=1, Network=1234)
  • debug: Development build with debug output enabled

Build & Upload

# Build with default settings
pio run -e anchor    # Anchor ID=0, Network=1234
pio run -e tag       # Tag ID=1, Network=1234

# Build with custom device ID and network
set PLATFORMIO_BUILD_FLAGS=-DUWB_INDEX=5 -DNETWORK_ID=2000
pio run -e anchor    # Anchor ID=5, Network=2000

# Upload to device
pio run -e tag -t upload

# Monitor serial output
pio device monitor

Project Structure

Modular Configuration System

  • src/main.cpp - Single unified firmware for all device types
  • src/config/ - Device behavior configuration
    • config.h - Hardware pins and system settings
    • device_config.h - Device role detection and unified behavior
    • anchor_config.h - Anchor-specific settings (positioning, inter-anchor communication)
    • tag_config.h - Tag-specific settings (USB streaming, coordinate collection)
    • positioning_config.h - Distributed positioning algorithm parameters
  • lib/UWBHelper/ - Complete UWB AT command library with positioning support
  • platformio.ini - Simplified build environments (3 instead of 8+)

AT Command Support

Complete implementation of all AT commands from the official manual:

Basic Commands

  • AT? - Test connection
  • AT+GETVER? - Get firmware version
  • AT+RESTART - Restart module
  • AT+RESTORE - Factory reset
  • AT+SAVE - Save configuration

Configuration

  • AT+SETCFG / AT+GETCFG? - Device configuration
  • AT+SETANT / AT+GETANT? - Antenna delay calibration
  • AT+SETCAP / AT+GETCAP? - System capacity settings
  • AT+SETRPT / AT+GETRPT? - Auto-reporting control

Network & Power

  • AT+SETPAN / AT+GETPAN? - Network ID configuration
  • AT+SETPOW / AT+GETPOW? - Transmission power control
  • AT+SLEEP - Sleep mode for battery conservation

Data Communication

  • AT+DATA / AT+RDATA - Custom data transmission
  • Real-time range reporting via AT+RANGE parsing

Library Features

The enhanced UWBHelper library provides:

  • Complete AT command coverage
  • Advanced range data parsing for multiple anchors
  • Position calculation algorithms (trilateration, multilateration)
  • Anchor position management for auto-positioning
  • Distance filtering for improved accuracy
  • Backward compatibility with existing code

Configuration

  • Network ID: 1234 (configurable via AT+SETPAN)
  • Baud Rate: 115200
  • Communication: 6.8Mbps (AT+SETCFG parameter)
  • Range filtering: Enabled for accuracy
  • Refresh Rate: 10Hz (configurable via AT+SETCAP)
  • Max Anchors: Unlimited (tags connect to 8 closest)
  • Max Tags: 64 per network

Documentation

Applications

This system is designed for:

  • Indoor positioning in warehouses and large buildings
  • Asset tracking and inventory management
  • Navigation assistance in GPS-denied environments
  • WiFi signal mapping and coverage analysis
  • Research and development in UWB positioning