ESP32

Indoor Tracking System with MaUWB_ESP32S3 for High Precision Positioning

Indoor Tracking System:

Indoor Tracking System with MaUWB_ESP32S3 for High Precision Positioning- With the MakerFabs MaUWB DW3000 chipset, you can perform precise indoor and outdoor position tracking of humans and objects within a 500-meter range. And the coolest thing is, you can use this chipset with any controller that has a simple UART port.

indoor tracking system with mauwb esp32s3 for high precision

I have multiple of these chipsets, which I plan to use to create multiple tags and anchors for precise position tracking. I have already started experimenting and created one tag, which worked exceptionally well. However, I still need to create more tags to implement the position tracking algorithm and design a computer application for live tracking of, let’s say, kids, employees, objects, or even pets. Today, we are going to make a simple yet highly precise indoor tracking system.

allpcb circuit

So, without any further delay, let’s get started!!!




Overview MaUWB_ESP32S3:

In Sept. 2024, MakerFabs released an updated version of the MaUWB_DW3000 based on the ESP32.

The latest version, however, is based on the ESP32S3 Microcontroller Unit (MCU) by Espressif. This is equipped with WiFi and features Bluetooth 5 (LE). It is commonly used for IoT and embedded applications. This new update is just mind-blowing, and they call it the MaUWB_ESP32S3 UWB module.

indoor tracking system

  • The board also has a small I2C supported SSD1306 Oled display module.
  • Additionally, there are two USB-C type ports; one is labeled as USB-Native and the other one is labeled as USB-TTL.
  • This small connector is for the battery and it’s also labeled as BAT and the pins are labeled with + and – signs.
  • It has multiple pin Headers along the sides for connecting to other components and sensors.

mauwb dw3000 chipset for indoor tracking system

On the backside is the MaUWB Chipset and a lot of tiny components. But thanks to MakerFab’s for making it completely open source, so, you can go ahead and check it’s schematic and other documents.



MaUWB-DW3000 Working:

mauwb dw3000 working as indoor tracking system

The MaUWB chipset is composed of the STM32 and DW3000/PA. The STM32 is pre-programmed by Makerfabs, drives the DW3000 module and handles all tasks in multiple anchor/tag applications, such as time slot setting, and reports the final result via UART to the ESP32S3 through simple AT commands. And as I mentioned at the start of the video, you can use this chipset with any controller that has a simple UART port.



What is UWB?

Ultra-wideband (UWB) is a short-range wireless communication protocol that operates through radio waves, enabling secure, reliable ranging and precision sensing. In field applications, the primary challenge for UWB is signal conflicts and interference when multiple anchors and tags are present.

This UWB module solves mutual conflicts among multiple anchors and tags, supporting up to 8 anchors and 64 tags in an application to create a multi-anchor, multi-tag positioning system. It also supports antenna delay settings for both tags and anchors.

MaUWB_ESP32S3 Features:

  • Board USB supply voltage range is from 4.8V to 5.5V. 5.0V Typical.
  • Board Battery supply voltage range is from 3.4V to 4.2V. 3.7V Typical.
  • Supports AT commands.
  • DW3000 with PA, max range 500M
  • It has two modes of data transmission rate 850kbps and 6.8Mbps.
  • The maximum packet length is 1023 bytes, which meets the application requirements of high data volume exchange.
  • The module serial port communication baud rate is 115200.
  • Comply with IEEE802.15.4-2011 ultra-wideband standard.
  • Easy to integrate without additional RF design.
  • Support CH5 (6489.6MHZ) RF band.
  • Strong resistance to multi-path fading.
  • Precision 0.5M(in range 100m)
  • The system supports 8 Anchors 64 tags.
  • The module supports free configuration of refresh rate, up to 100Hz.
  • Module (Tag) deep hibernation working current as low as 35uA, working current 34mA.

For now, I only have these two boards, so I am going to use one as a Tag and the other as an Anchor.

Mauwb esp32s3 indoor tracking system

When you first power up these modules, if the boards are pre-programmed, you will be able to see the Tag and Anchor IDs, frequencies, and information about the maximum number of supported tags, which is 64.

If, however, you do not see this information, or if both boards are programmed as tags or as anchors, there is no need to worry. We have programs that allow us to set which board will act as a Tag and which as an Anchor. We can change the Tag and Anchor IDs. Anyway, let’s open the programs.

I downloaded these programs from the MakerFab’s official product page. These are the original programs; I did not change a single line of code.

If you want to use a board as an Anchor, upload the Anchor program. If you want to use the board as a Tag, simply upload the Tag program.

Currently, the Anchor ID is 0, and the Tag ID is also 0.



MaUWB_ESP32S3 Anchor Program:




MaUWB_ESP32S3 Tag Program:

Since these boards are based on the ESP32S3 microcontroller units, make sure the ESP32 boards are installed in the Arduino IDE. For guidance, you can read my getting started article on the ESP32, where I explain how to add the ESP32 Board Manager URL link in the Arduino IDE and install the entire ESP32 boards package.

esp32 board installation for indoor tracking system

Once the ESP32 boards are installed, ensure that the ESP32S3 Dev Module is available in the list.

You will also need to install these two libraries

Adafruit_GFX.h

Adafruit_SSD1306.h

For the Oled display module. Let me show you how to install these libraries in the Arduino IDE.

Copy the Library name Adafruit_GFX.

Go to the Sketch Menu then to Include Library, and click on the Manage Libraries.

Paste the library name in the search box.

Now, follow the same steps for the Adafruit_SSD1306.

ssd1306 oled library installation for indoor tracking system

You can see I have installed both the libraries.



Finally, you can go ahead and upload the programs. For this, simply go to the Tools menu > Board > ESP32 Arduino and select the ESP32S3 Dev Module.

Again go to the Tools Menu > Port: and select the correct communication port. Repeat the same steps for both the boards “Anchor and Tag”. On my laptop the Anchor board is connected to the communication port 11 and the Tag board is connected to the Com port 12. On your system these ports may be different.

Once the programs are successfully uploaded.

Mauwb esp32s3 indoor tracking system

You can see that nothing has changed on the displays because I uploaded the same programs. With the company’s code, you can only monitor the values on the Serial Monitor, where you can view the range and RSSI values in real-time.

indoor tracking system

You can see the Range in cm, right now its around 24cm. Let me change the position of the Tag to see if the distance and RSSI values change.



arduino indoor tracking system

After moving it to the other side of the table, the distance changed to 157cm. You will see one to 2cm difference when it comes to accuracy. But don’t expect such level of accuracy when the distance is 100 meters or more.

Anyway, its working great as expected, but it seems impractical to sit in front of a laptop to use the Serial Monitor. The Serial Monitor is useful for debugging, but for practical use, it doesn’t feel right. Since the boards already have OLED displays, why not print this information directly on them?

To achieve this, I modified the programs.



Modified Anchor Program:




Modified Tag Program:

This function has no return type but takes one argument of type String. We provide it with the response message, and using these instructions, we extract the Tag ID, range, and RSSI values, which we then print on the OLED display module. The same exact function, I have also used on the Tag side.



I have already uploaded the modified programs and now let’s watch this Indoor Tracking System in action.

indoor tracking systemu using esp32 and mauwb ultra wide band

Now, I can directly read the distance and RSSI values on the displays. The Anchor is still connected to the laptop because I am using it to power the anchor board.

esp32 and mauwb indoor tracking system

However, I have powered the Tag board using my regulated 5V power supply and the 4S lithium-ion battery. Instead of using such a large battery and power supply, I could also use a small LiPo battery, but unfortunately, I don’t have one right now.

Since I need to make it portable, this is the only setup I could think of for now. I will take the Tag outside so you can see the distance. I cannot go very far, but I will cover enough distance for you to get the idea.

esp32 indoor tracking system

I walked out of my room to the balcony, which is 1252cm away from the Anchor board. Now, for the exact location, you can read my article on “Indoor Positioning System“. In this project, i have used multiple Anchors.

 

So, that’s all for now.



Watch Video Tutorial:

 

Engr Fahad

My name is Shahzada Fahad and I am an Electrical Engineer. I have been doing Job in UAE as a site engineer in an Electrical Construction Company. Currently, I am running my own YouTube channel "Electronic Clinic", and managing this Website. My Hobbies are * Watching Movies * Music * Martial Arts * Photography * Travelling * Make Sketches and so on...

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button