Maker.io main logo

How to Build an UWB Indoor Positioning System using ESP32 and Qorvo DWM3

2025-10-17 | By Rinme Tom

License: General Public License Bluetooth / BLE Breadboards EEPROM Arduino

This project presents a fully functional DIY indoor positioning system using Ultra-Wideband (UWB) technology, specifically built with the ESP32 microcontroller and Qorvo DWM3000 UWB modules. It enables centimetre-level real-time tracking accuracy within indoor environments and is designed for asset tracking, robotics, and AR/VR applications.

UWB Indoor Positioning System using ESP32

Project Overview

This solution addresses the limitations of GPS and other wireless technologies (Bluetooth, Wi-Fi) for indoor positioning, achieving up to 10 cm accuracy using UWB’s time-of-flight measurements. The system uses at least three stationary anchors (ESP32 + DWM3000 modules) and a mobile tag device. The tag exchanges precise UWB pulses with anchors, performing double-sided two-way ranging (DS-TWR), allowing trilateration of its exact indoor location.

Position Tracker using Qorvo

Key Technologies and Components

  • Ultra-Wideband (UWB): UWB measures the time radio pulses travel between devices, offering high resistance to multipath interference from walls and metal surfaces, and outperforming Wi-Fi and Bluetooth for sub-meter accuracy indoors.

  • Qorvo DWM3000: A compact, ready-to-use UWB RF module with integrated antenna, built around DW3110 IC, compliant with IEEE 802.15.4z, supporting global operation and real-time location applications. Communicates with ESP32 via SPI.

  • ESP32 Microcontroller: Acts as both tag and anchor host µC. Manages SPI-based ranging, data filtering, and Wi-Fi communication for real-time data streaming.

  • Python Visualisation: The tag transmits JSON data over Wi-Fi to a Python script running on a PC, which applies trilateration (least squares optimisation) to calculate and plot the tag’s location live on a floor plan, updating as the tag moves around the space.

    DWM3000 Module Pinouts

Project Methodology

  • Anchor placement: Three or more anchors are installed at known fixed coordinates in the room.

  • Tag initiation: The mobile tag device continuously ranges to all anchors.

  • Double-sided TWR: Tag and anchors exchange UWB signals and measure timestamps down to fractions of a nanosecond.

  • Trilateration: Collected distances are processed by a Python script to determine the exact position using least squares optimisation.

  • Live tracking: Real-time positional and signal strength data are streamed and visualised, providing robust tracking even in cluttered or metallic environments.

Working demo of UWB Positioning System

Hardware and Firmware Essentials

  • ESP32-DWM3000 pairs for both tag and anchors

  • Firmware for both roles, optimised for SPI speed, ranging protocol, error handling, and anchor identification

  • Wi-Fi-based TCP data streaming for remote visualisation

  • Median filtering and RSSI checks ensure reliability and accuracy

Circuit Diagram

Applications

  • Industrial asset tracking

  • Indoor robotics positioning

  • AR/VR localisation in enclosed spaces

  • Precise navigation in warehouses, airports, or factories

This project delivers a scalable, open-source foundation for highly accurate indoor location systems using modern UWB technology, ideal for maker, industrial, and research environments. This UWB indoor positioning system using ESP32 demonstrates how UWB technology can deliver professional-grade location tracking performance in a maker-friendly package, opening up possibilities for robotics navigation, warehouse tracking, and VR/AR indoor localisation applications.

Valm. osa # ESP32-WROOM-32D-N8
RF TXRX MOD BT WIFI TH SMD
Espressif Systems
5,81 €
View More Details
Valm. osa # DWM3000EVB
EVAL BOARD DWM3000 UWB XCVR MODU
Qorvo
25,31 €
View More Details
Add all DigiKey Parts to Cart
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.