LoRa / Sub-GHz Antenna Optimization: From Ceramic to FPC

LoRa / Sub-GHz Antenna Optimization: From Ceramic to FPC

We recently worked on the RF design of a compact LoRa/GNSS Nomad  Terminal handheld device, which is based on LoRa, designed to communicate/ navigate, and deploy anywhere. The antenna turned out to be one of the more challenging parts.

For a small handheld, antenna performance is affected by much more than the antenna itself. The PCB, ground plane, battery, display, enclosure, and even the way the device is held can all influence the final RF performance.

During the project, we evaluated several antenna configurations:

Ceramic Antenna → FPC Antenna + Coaxial Cable → FPC Antenna + Pogo Pin

The final FPC antenna configuration was validated with both RF measurements and outdoor testing, achieving S11 of -11.13 dB @ 868 MHz, -12.82 dB @ 915 MHz, and a 3 km LoRa link in our field test.

1. Ceramic Antenna

The initial design used a ceramic antenna for its compact size and simple integration. However, its placement was relatively constrained, limiting our ability to optimize the surrounding RF environment.

2. FPC + Coaxial Cable

We then tested an FPC antenna with a coaxial connection. This gave us more freedom to position the antenna away from the PCB, battery, and display, but introduced additional cabling and mechanical complexity.

3. FPC + Pogo Pin

The final approach uses an FPC antenna connected through pogo pins. It provides flexible antenna placement while keeping the RF connection and mechanical structure compact.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together. The complete

What’s the biggest antenna design challenge you’ve encountered when working with compact LoRa or Sub-GHz devices? Share your experience togehther!

u/Vearts — 3 days ago
▲ 14 r/Lora

LoRa / Sub-GHz Antenna Optimization: From Ceramic to FPC

We recently worked on the RF design of a compact LoRa/GNSS Nomad  Terminal handheld device, which is based on LoRa, designed to communicate/ navigate, and deploy anywhere. The antenna turned out to be one of the more challenging parts.

For a small handheld, antenna performance is affected by much more than the antenna itself. The PCB, ground plane, battery, display, enclosure, and even the way the device is held can all influence the final RF performance.

During the project, we evaluated several antenna configurations:

Ceramic Antenna → FPC Antenna + Coaxial Cable → FPC Antenna + Pogo Pin

The final FPC antenna configuration was validated with both RF measurements and outdoor testing, achieving S11 of -11.13 dB @ 868 MHz, -12.82 dB @ 915 MHz, and a 3 km LoRa link in our field test.

1. Ceramic Antenna

The initial design used a ceramic antenna for its compact size and simple integration. However, its placement was relatively constrained, limiting our ability to optimize the surrounding RF environment.

2. FPC + Coaxial Cable

We then tested an FPC antenna with a coaxial connection. This gave us more freedom to position the antenna away from the PCB, battery, and display, but introduced additional cabling and mechanical complexity.

3. FPC + Pogo Pin

The final approach uses an FPC antenna connected through pogo pins. It provides flexible antenna placement while keeping the RF connection and mechanical structure compact.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together. The complete

What’s the biggest antenna design challenge you’ve encountered when working with compact LoRa or Sub-GHz devices? Share your experience togehther!

u/Vearts — 3 days ago

LoRa / Sub-GHz Antenna Optimization: From Ceramic to FPC

We recently worked on the RF design of a compact LoRa/GNSS Nomad  Terminal handheld device, which is based on LoRa, designed to communicate/ navigate, and deploy anywhere. The antenna turned out to be one of the more challenging parts.

For a small handheld, antenna performance is affected by much more than the antenna itself. The PCB, ground plane, battery, display, enclosure, and even the way the device is held can all influence the final RF performance.

During the project, we evaluated several antenna configurations:

Ceramic Antenna → FPC Antenna + Coaxial Cable → FPC Antenna + Pogo Pin

The final FPC antenna configuration was validated with both RF measurements and outdoor testing, achieving S11 of -11.13 dB @ 868 MHz, -12.82 dB @ 915 MHz, and a 3 km LoRa link in our field test.

1. Ceramic Antenna

The initial design used a ceramic antenna for its compact size and simple integration. However, its placement was relatively constrained, limiting our ability to optimize the surrounding RF environment.

2. FPC + Coaxial Cable

We then tested an FPC antenna with a coaxial connection. This gave us more freedom to position the antenna away from the PCB, battery, and display, but introduced additional cabling and mechanical complexity.

3. FPC + Pogo Pin

The final approach uses an FPC antenna connected through pogo pins. It provides flexible antenna placement while keeping the RF connection and mechanical structure compact.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together. The complete

What’s the biggest antenna design challenge you’ve encountered when working with compact LoRa or Sub-GHz devices? Share your experience togehther!

u/Vearts — 3 days ago
▲ 6 r/IOT

LoRa / Sub-GHz Antenna Optimization: From Ceramic to FPC

We recently worked on the RF design of a compact LoRa/GNSS Nomad  Terminal handheld device, which is based on LoRa, designed to communicate/ navigate, and deploy anywhere. The antenna turned out to be one of the more challenging parts.

For a small handheld, antenna performance is affected by much more than the antenna itself. The PCB, ground plane, battery, display, enclosure, and even the way the device is held can all influence the final RF performance.

During the project, we evaluated several antenna configurations:

Ceramic Antenna → FPC Antenna + Coaxial Cable → FPC Antenna + Pogo Pin

The final FPC antenna configuration was validated with both RF measurements and outdoor testing, achieving S11 of -11.13 dB @ 868 MHz, -12.82 dB @ 915 MHz, and a 3 km LoRa link in our field test.

1. Ceramic Antenna

The initial design used a ceramic antenna for its compact size and simple integration. However, its placement was relatively constrained, limiting our ability to optimize the surrounding RF environment.

2. FPC + Coaxial Cable

We then tested an FPC antenna with a coaxial connection. This gave us more freedom to position the antenna away from the PCB, battery, and display, but introduced additional cabling and mechanical complexity.

3. FPC + Pogo Pin

The final approach uses an FPC antenna connected through pogo pins. It provides flexible antenna placement while keeping the RF connection and mechanical structure compact.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together.

What’s the biggest antenna design challenge you’ve encountered when working with compact LoRa or Sub-GHz devices? Share your experience togehther!

u/Vearts — 5 days ago
▲ 3 r/esp32

LoRa / Sub-GHz Antenna Optimization: From Ceramic to FPC

We recently worked on the RF design of a compact LoRa/GNSS Nomad  Terminal handheld device, which is based on LoRa, designed to communicate/ navigate, and deploy anywhere. The antenna turned out to be one of the more challenging parts.

For a small handheld, antenna performance is affected by much more than the antenna itself. The PCB, ground plane, battery, display, enclosure, and even the way the device is held can all influence the final RF performance.

During the project, we evaluated several antenna configurations:

Ceramic Antenna → FPC Antenna + Coaxial Cable → FPC Antenna + Pogo Pin

The final FPC antenna configuration was validated with both RF measurements and outdoor testing, achieving S11 of -11.13 dB @ 868 MHz, -12.82 dB @ 915 MHz, and a 3 km LoRa link in our field test.

1. Ceramic Antenna

The initial design used a ceramic antenna for its compact size and simple integration. However, its placement was relatively constrained, limiting our ability to optimize the surrounding RF environment.

2. FPC + Coaxial Cable

We then tested an FPC antenna with a coaxial connection. This gave us more freedom to position the antenna away from the PCB, battery, and display, but introduced additional cabling and mechanical complexity.

3. FPC + Pogo Pin

The final approach uses an FPC antenna connected through pogo pins. It provides flexible antenna placement while keeping the RF connection and mechanical structure compact.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together.

The main takeaway from the project was that antenna performance in a compact LoRa device is a system-level problem. Antenna selection, placement, PCB layout, and mechanical design all need to be considered together.

What’s the biggest antenna design challenge you’ve encountered when working with compact LoRa or Sub-GHz devices? Share your experience togehther!

u/Vearts — 5 days ago
▲ 110 r/esp32projects+3 crossposts

Building a TinyML 5-digit Recognition System on ESP32-S3

I've been experimenting with running a complete digit recognition system directly on an ESP32-S3 using TensorFlow Lite Micro.

The goal was to recognize 5-digit readings (such as meter displays) completely on-device without relying on a PC or cloud inference. The hardware I used was an ESP32-S3 development board with an onboard camera and AMOLED display, but the workflow should apply to similar ESP32-S3 camera boards.

How it works:

  • Data Collection: Flashed a utility firmware to capture camera frames aligned via an on-screen yellow bounding box, outputting labeled image pairs and a label.csv.
  • Model Training & INT8 Quantization: Trained a lightweight CNN model and quantized it to INT8 to run within the ESP32-S3's memory limits.
  • On-Device Inference: Compiled the quantized model directly into the ESP-IDF binary and deployed it back to the board.

 The result is surprisingly reliable—it reads all 5 digits cleanly in real time.

 

Hardware & Tech Stack:

  • Board: Makerfabs MaTouch ESP32-S3 AMOLED AI Camera
  • Framework: ESP-IDF + TensorFlow Lite Micro
  • Tooling: Custom Python tools for capture & quantization

 

I put together a detailed write-up covering the complete workflow in case anyone wants to reproduce or adapt it for a similar project. I'd also love to hear how others approach digit recognition with TensorFlow Lite Micro. Have you found any effective ways to improve accuracy or speed up the data collection process?

u/Vearts — 7 days ago
▲ 37 r/IOT+3 crossposts

Building a Real-Time UWB Localization System over Ethernet (ESP32-S3 + PoE)

I've been experimenting with an Ethernet-based UWB localization setup recently and wanted to share the workflow. The idea is to keep the embedded side simple while moving the localization calculations to a PC.

In this setup, the UWB nodes continuously perform ranging between the tag and anchors. An ESP32-S3 Ethernet gateway collects the ranging data and forwards it over the local network. A PC application then receives the data stream, calculates the tag coordinates in real time, and visualizes the results. Since all positioning algorithms run on the PC instead of the microcontroller, it's much easier to test different localization methods, manage multiple tags, or integrate additional data processing.

Hardware Used

  • 3×UWB nodes (2 Anchors + 1 Tag)
  • 1×ESP32-S3 Ethernet (PoE) gateway
  • Ethernet cable
  • USB cable

Step 1: Prepare the Hardware

Prepare the required UWB devices, an ESP32-S3 Ethernet gateway, and the necessary cables.

Step 2: Configure the UWB Nodes

Assign the ID and role (Anchor or Tag) for each UWB node using the configuration tool.

Step 3: Flash the Firmware and Connect the Devices

Upload the firmware to the ESP32-S3 gateway, connect it to the local network, and establish communication with the UWB nodes.

Step 4: Start Real-Time Positioning

Open the PC application, set the anchor coordinates, and visualize the tag position updating in real time.

Follow the steps above; I’ve built a complete Ethernet UWB positioning system with UWB devices. And the PC is keeping updating the trajectory of the moving tag.

The firmware and PC application are available on GitHub for anyone interested in reproducing or modifying the project. I'd be interested to hear how others structure their UWB localization systems. Feel free to talk in the comments below!

u/Vearts — 1 month ago

Building a Real-Time UWB Localization System over Ethernet (ESP32-S3 + PoE)

I've been experimenting with an Ethernet-based UWB localization setup recently and wanted to share the workflow. The idea is to keep the embedded side simple while moving the localization calculations to a PC.

In this setup, the UWB nodes continuously perform ranging between the tag and anchors. An ESP32-S3 Ethernet gateway collects the ranging data and forwards it over the local network. A PC application then receives the data stream, calculates the tag coordinates in real time, and visualizes the results. Since all positioning algorithms run on the PC instead of the microcontroller, it's much easier to test different localization methods, manage multiple tags, or integrate additional data processing.

Hardware Used

  • 3×UWB nodes (2 Anchors + 1 Tag)
  • 1×ESP32-S3 Ethernet (PoE) gateway
  • Ethernet cable
  • USB cable

Step 1: Configure the UWB Node Roles (picture 2-8)

  • Connect the ESP device to the computer using a USB-C cable and power it on.
  • Download the corresponding file and open the uwbtools.exe program.
  • Connect the serial port and read the device parameters.
  • Modify the ID and role of the device and save. (ID:0, Role: Tag).
  • Re-read the device information and check if the parameters have been saved.
  • Follow the above steps to set anchor point 0 and anchor point 1. (ID:0, Role: Anchor; ID:1, Role: Anchor)

Step 2:Code Design With Arduino IDE (picture 9-12)

  • Connect the ESP device to your computer using a USB-C cable.
  • Connect the ESP device to the router (the network segment where the computer is located) using an Ethernet cable and power it on.
  • Open LAN_Anchor.ino.
  • Select and set the parameters in the Tools menu.
  • Install the EthernetBonjour library.
  • Verify it and upload.

Step 3: Tag positioning (picture 13-14)

  • Open uwb_POEpositioning.exe, search for the corresponding device, and connect.
  • Set the anchor point positions to correspond one-to-one with the actual positions of the objects.
  • Click the "Apply and Reset Map" button.

Step 4: Result (picture1)

Follow the steps above; I’ve built a complete Ethernet UWB positioning system with UWB devices. And the PC is keeping updating the trajectory of the moving tag.

The firmware and PC application are available on GitHub for anyone interested in reproducing or modifying the project. I'd be interested to hear how others structure their UWB localization systems. Feel free to talk in the comments below!

u/Vearts — 1 month ago
▲ 10 r/ArduinoProjects+1 crossposts

Testing 4 Anchors + 3 Tags on ESP32 + DW3000 (4 Anchors, 3 Tags)

I've been experimenting with ESP32 + DW3000 for indoor positioning, and one question I kept coming back to was how well it would behave once multiple tags were active at the same time.

Most demos online only show a single moving tag, but in real applications—robotics, asset tracking, warehouses—you usually need several tags transmitting simultaneously. That's where timing conflicts and packet collisions start becoming a challenge.

To test this, I set up four fixed anchors around a room and connected three tags to the network. After assigning IDs and configuring the anchor coordinates in the visualizer, I walked one of the tags (T2) around the test area while the other nodes remained active.

The result was encouraging. The system continuously updated the moving tag's trajectory while all four anchors and three tags stayed online throughout the test.

This is still a relatively small deployment, but it's a good starting point for exploring larger ESP32 + DW3000 RTLS systems.

I'm now curious how others are scaling DW3000 networks beyond this. Are you using TDMA, custom scheduling, or another approach to reduce collisions when more tags are transmitting simultaneously? I'd be interested to hear what has worked (or not worked) in your own projects.

If anyone wants to reproduce the setup, I can share the repository.

u/Vearts — 2 months ago

Testing 4 Anchors + 3 Tags on ESP32 + DW3000 (4 Anchors, 3 Tags)

I've been experimenting with ESP32 + DW3000 for indoor positioning, and one question I kept coming back to was how well it would behave once multiple tags were active at the same time.

Most demos online only show a single moving tag, but in real applications—robotics, asset tracking, warehouses—you usually need several tags transmitting simultaneously. That's where timing conflicts and packet collisions start becoming a challenge. 

To test this, I set up four fixed anchors around a room and connected three tags to the network. After assigning IDs and configuring the anchor coordinates in the visualizer, I walked one of the tags (T2) around the test area while the other nodes remained active. 

The result was encouraging. The system continuously updated the moving tag's trajectory while all four anchors and three tags stayed online throughout the test.

This is still a relatively small deployment, but it's a good starting point for exploring larger ESP32 + DW3000 RTLS systems.

I'm now curious how others are scaling DW3000 networks beyond this. Are you using TDMA, custom scheduling, or another approach to reduce collisions when more tags are transmitting simultaneously? I'd be interested to hear what has worked (or not worked) in your own projects.

If anyone wants to reproduce the setup, I can share the repository.

u/Vearts — 2 months ago

Testing 4 Anchors + 3 Tags on ESP32 + DW3000 (4 Anchors, 3 Tags)

I've been experimenting with ESP32 + DW3000 for indoor positioning, and one question I kept coming back to was how well it would behave once multiple tags were active at the same time.

Most demos online only show a single moving tag, but in real applications—robotics, asset tracking, warehouses—you usually need several tags transmitting simultaneously. That's where timing conflicts and packet collisions start becoming a challenge.

To test this, I set up four fixed anchors around a room and connected three tags to the network. After assigning IDs and configuring the anchor coordinates in the visualizer, I walked one of the tags (T2) around the test area while the other nodes remained active.

The result was encouraging. The system continuously updated the moving tag's trajectory while all four anchors and three tags stayed online throughout the test. 

This is still a relatively small deployment, but it's a good starting point for exploring larger ESP32 + DW3000 RTLS systems.

I'm now curious how others are scaling DW3000 networks beyond this. Are you using TDMA, custom scheduling, or another approach to reduce collisions when more tags are transmitting simultaneously? I'd be interested to hear what has worked (or not worked) in your own projects.

If anyone wants to reproduce the setup, I can share the repository.

u/Vearts — 2 months ago
▲ 1 r/uwb

Testing 4 Anchors + 3 Tags on ESP32 + DW3000 (4 Anchors, 3 Tags)

I've been experimenting with ESP32 + DW3000 for indoor positioning, and one question I kept coming back to was how well it would behave once multiple tags were active at the same time.

Most demos online only show a single moving tag, but in real applications—robotics, asset tracking, warehouses—you usually need several tags transmitting simultaneously. That's where timing conflicts and packet collisions start becoming a challenge.

To test this, I set up four fixed anchors around a room and connected three tags to the network. After assigning IDs and configuring the anchor coordinates in the visualizer, I walked one of the tags (T2) around the test area while the other nodes remained active.

The result was encouraging. The system continuously updated the moving tag's trajectory while all four anchors and three tags stayed online throughout the test.

This is still a relatively small deployment, but it's a good starting point for exploring larger ESP32 + DW3000 RTLS systems.

I'm now curious how others are scaling DW3000 networks beyond this. Are you using TDMA, custom scheduling, or another approach to reduce collisions when more tags are transmitting simultaneously? I'd be interested to hear what has worked (or not worked) in your own projects.

If anyone wants to reproduce the setup, I can share the repository.

u/Vearts — 2 months ago
▲ 14 r/IOT

Testing 4 Anchors + 3 Tags on ESP32 + DW3000 (4 Anchors, 3 Tags)

I've been experimenting with ESP32 + DW3000 for indoor positioning, and one question I kept coming back to was how well it would behave once multiple tags were active at the same time.

Most demos online only show a single moving tag, but in real applications—robotics, asset tracking, warehouses—you usually need several tags transmitting simultaneously. That's where timing conflicts and packet collisions start becoming a challenge.

To test this, I set up four fixed anchors around a room and connected three tags to the network. After assigning IDs and configuring the anchor coordinates in the visualizer, I walked one of the tags (T2) around the test area while the other nodes remained active.

The result was encouraging. The system continuously updated the moving tag's trajectory while all four anchors and three tags stayed online throughout the test.

This is still a relatively small deployment, but it's a good starting point for exploring larger ESP32 + DW3000 RTLS systems.

I'm now curious how others are scaling DW3000 networks beyond this. Are you using TDMA, custom scheduling, or another approach to reduce collisions when more tags are transmitting simultaneously? I'd be interested to hear what has worked (or not worked) in your own projects.

If anyone wants to reproduce the setup, I can share the repository.

u/Vearts — 2 months ago

Using UWB for Real-Time Race Car Tracking in an Indoor Racing Gaming

Recently, we worked on an indoor racing track project. We had to deploy a real-time tracking system for a fleet of miniature racing cars on an indoor track at an entertainment park.

 The goal was to display each car's position, trajectory, and race ranking on a large screen while maintaining smooth updates and reliable tracking performance.

As we know, Ultra-wideband (UWB) is a technology that enables secure, reliable ranging and precision sensing, through wireless communication, but the main problem of UWB is the signal mutual conflicts/interference, that when multiple anchors&tags exists.

 That is why MaUWB, which is based on STM32 controller and DW3000, solves the signal mutual conflicts with TDMA, widely used in different positioning and tracking projects. (picture 1)

https://preview.redd.it/1aofxmbl659h1.png?width=1278&format=png&auto=webp&s=94849cde340a15f17fe2c945db8caf23cf7aaf07

The Hardware Deployment

Anchors (Fixed Nodes):8 fixed Anchors installed around the racing track (picture 2)

Tags (Mobile Nodes): A custom UWB Tag installed on each race car (picture 3)

One of the key challenges was maintaining stable operation with multiple moving Tags within the same positioning area. To reduce signal conflicts and ranging interference, the system uses a TDMA-based scheduling mechanism. This approach significantly improves stability and eliminates signal mutual conflicts when the cars move together.

Result

By combining software and hardware architecture, Position data is updated in real time and rendered on a large display screen. (picture 4)

·  Real-time vehicle positions

· Driving trajectories

· Dynamic race rankings

The deployment of the MaUWB project not only greatly improved the gaming experience and visual effects but also reduced the difficulty of using UWB technology, which provides great convenience and a solid foundation for project software development.

I'd be interested to hear how you handle multi-tag UWB deployments, especially when scaling multiple moving devices. Let's discuss in the comments!

u/Vearts — 2 months ago

Using UWB for Real-Time Race Car Tracking in an Indoor Racing Arena

Recently, we worked on an indoor racing track project. We had to deploy a real-time tracking system for a fleet of miniature racing cars on an indoor track at an entertainment park.

 The goal was to display each car's position, trajectory, and race ranking on a large screen while maintaining smooth updates and reliable tracking performance.

As we know, Ultra-wideband (UWB) is a technology that enables secure, reliable ranging and precision sensing, through wireless communication, but the main problem of UWB is the signal mutual conflicts/interference, that when multiple anchors&tags exists.

 That is why MaUWB, which is based on STM32 controller and DW3000, solves the signal mutual conflicts with TDMA, widely used in different positioning and tracking projects. (picture 1)

 

The Hardware Deployment

Anchors (Fixed Nodes):8 fixed Anchors installed around the racing track (picture 2)

Tags (Mobile Nodes): A custom UWB Tag installed on each race car (picture 3)

One of the key challenges was maintaining stable operation with multiple moving Tags within the same positioning area. To reduce signal conflicts and ranging interference, the system uses a TDMA-based scheduling mechanism. This approach significantly improves stability and eliminates signal mutual conflicts when the cars move together.

Result

By combining software and hardware architecture, Position data is updated in real time and rendered on a large display screen. (picture 4)

·  Real-time vehicle positions

· Driving trajectories

· Dynamic race rankings

The deployment of the MaUWB project not only greatly improved the gaming experience and visual effects but also reduced the difficulty of using UWB technology, which provides great convenience and a solid foundation for project software development.

I'd be interested to hear how you handle multi-tag UWB deployments, especially when scaling multiple moving devices. Let's discuss in the comments!

u/Vearts — 2 months ago

Using UWB for Real-Time Race Car Tracking in an Indoor Racing Gaming

Recently, we worked on an indoor racing track project. We had to deploy a real-time tracking system for a fleet of miniature racing cars on an indoor track at an entertainment park.

The goal was to display each car's position, trajectory, and race ranking on a large screen while maintaining smooth updates and reliable tracking performance.

As we know, Ultra-wideband (UWB) is a technology that enables secure, reliable ranging and precision sensing, through wireless communication, but the main problem of UWB is the signal mutual conflicts/interference, that when multiple anchors&tags exists.

That is why MaUWB, which is based on STM32 controller and DW3000, solves the signal mutual conflicts with TDMA, widely used in different positioning and tracking projects. (picture 1)

 

The Hardware Deployment

Anchors (Fixed Nodes):8 fixed Anchors installed around the racing track (picture 2)

Tags (Mobile Nodes): A custom UWB Tag installed on each race car (picture 3)

One of the key challenges was maintaining stable operation with multiple moving Tags within the same positioning area. To reduce signal conflicts and ranging interference, the system uses a TDMA-based scheduling mechanism. This approach significantly improves stability and eliminates signal mutual conflicts when the cars move together.

Result

By combining software and hardware architecture, Position data is updated in real time and rendered on a large display screen. (picture 4)

  •  Real-time vehicle positions
  • Driving trajectories
  • Dynamic race rankings

The deployment of the MaUWB project not only greatly improved the gaming experience and visual effects but also reduced the difficulty of using UWB technology, which provides great convenience and a solid foundation for project software development.

I'd be interested to hear how you handle multi-tag UWB deployments, especially when scaling multiple moving devices. Let's discuss in the comments!

 

u/Vearts — 2 months ago
▲ 6 r/IOT

Using UWB for Real-Time Race Car Tracking in an Indoor Racing Gaming

Recently, we worked on an indoor racing track project. We had to deploy a real-time tracking system for a fleet of miniature racing cars on an indoor track at an entertainment park.

 The goal was to display each car's position, trajectory, and race ranking on a large screen while maintaining smooth updates and reliable tracking performance.

As we know, Ultra-wideband (UWB) is a technology that enables secure, reliable ranging and precision sensing, through wireless communication, but the main problem of UWB is the signal mutual conflicts/interference, that when multiple anchors&tags exists.

 That is why MaUWB, which is based on STM32 controller and DW3000, solves the signal mutual conflicts with TDMA, widely used in different positioning and tracking projects. (picture 1)

 

The Hardware Deployment

Anchors (Fixed Nodes):8 fixed Anchors installed around the racing track (picture 2)

Tags (Mobile Nodes): A custom UWB Tag installed on each race car (picture 3)

One of the key challenges was maintaining stable operation with multiple moving Tags within the same positioning area. To reduce signal conflicts and ranging interference, the system uses a TDMA-based scheduling mechanism. This approach significantly improves stability and eliminates signal mutual conflicts when the cars move together.

Result

By combining software and hardware architecture, Position data is updated in real time and rendered on a large display screen. (picture 4)

  •  Real-time vehicle positions
  • Driving trajectories
  • Dynamic race rankings

The deployment of the MaUWB project not only greatly improved the gaming experience and visual effects but also reduced the difficulty of using UWB technology, which provides great convenience and a solid foundation for project software development.

I'd be interested to hear how you handle multi-tag UWB deployments, especially when scaling multiple moving devices. Let's discuss in the comments!

 

u/Vearts — 2 months ago
▲ 15 r/IOT

Build TVOC Alarm System with ESP32S3 Board on Datacake

Recently, I’ve built a TVOC monitoring project around the ESP32-S3 touch 2.4-inch development board. It integrated mainboard is equipped with premium display performance, fully compatible with LVGL & Squareline Studio for fast GUI design. Therefore, we took advantage of this to carry out a TVOC monitoring project with it.

The whole workflow is straightforward: onboard sensor continuously collects real-time TVOC air quality data, measured values get displayed instantly on the 2.4” local screen for onsite checking. The ESP32 will only send an HTTP API request to the Datacake IoT cloud platform over Wi-Fi when the TVOC reading exceeds the preset threshold.

 

Once data lands on Datacake, the cloud platform immediately triggers pre-configured rules and sends out warning emails right away for remote early warning. No complicated extra wiring or expensive modules needed. Perfect for indoor home air monitoring, workshop environment tracking, and beginner-friendly IoT practice.

The core hardware we need to use in this project (image 1):

1. ESP32-S3 SPI Resistive Touch 2.4" ST7789*1pcs, which integrates with premium display, LVGL & Squareline Studio for fast GUI design.

2. TVOC and eCO2 SGP30 & Temperature and Humidity Sensor*1pcs, it uses a special heat isolation structure, which can effectively reduce the detection error caused by sensor heating, ensuring the accuracy and stability of environmental monitoring data.

3. USB cable*1 pcs

There are three main setting steps (image 2):

 1. Create New Device on Datacake

Just select the communication method and create the device name, and the creation will be successful

 2. Code Design With Arduino IDE

Configure the WiFi settings and enter the Webhook, host, and TOVC limit values ​​in the Arduino code to establish the connection between the device and Datacake.

 3. Modify Datacake Platform Configuration

Check the format of the JSON data sent from the Arduino, configure the correct decoder on the Datacake platform to properly parse the data, and set up rules to send alert emails via Datacake.

Check Alert Email (image 3)

Then set the device in your scenery. Whenever the TVOC value exceeds the limit, you will receive an alert email.

More project details can be checked on GitHub.

Follow the steps to build your own projects right now! Any ideas, welcome to share in the comments!

u/Vearts — 2 months ago

Build TVOC Alarm System with ESP32S3 Board on Datacake

Recently, I’ve built a TVOC monitoring project around the ESP32-S3 touch 2.4-inch development board. It integrated mainboard is equipped with premium display performance, fully compatible with LVGL & Squareline Studio for fast GUI design. Therefore, we took advantage of this to carry out a TVOC monitoring project with it.

The whole workflow is straightforward: onboard sensor continuously collects real-time TVOC air quality data, measured values get displayed instantly on the 2.4” local screen for onsite checking. The ESP32 will only send an HTTP API request to the Datacake IoT cloud platform over Wi-Fi when the TVOC reading exceeds the preset threshold.

 

Once data lands on Datacake, the cloud platform immediately triggers pre-configured rules and sends out warning emails right away for remote early warning. No complicated extra wiring or expensive modules needed. Perfect for indoor home air monitoring, workshop environment tracking, and beginner-friendly IoT practice.

The core hardware we need to use in this project (image 1):

1. ESP32-S3 SPI Resistive Touch 2.4" ST7789*1pcs, which integrates with premium display, LVGL & Squareline Studio for fast GUI design.

2. TVOC and eCO2 SGP30 & Temperature and Humidity Sensor*1pcs, it uses a special heat isolation structure, which can effectively reduce the detection error caused by sensor heating, ensuring the accuracy and stability of environmental monitoring data.

3. USB cable*1 pcs

There are three main setting steps (image 2):

 1. Create New Device on Datacake

Just select the communication method and create the device name, and the creation will be successful

 2. Code Design With Arduino IDE

Configure the WiFi settings and enter the Webhook, host, and TOVC limit values ​​in the Arduino code to establish the connection between the device and Datacake.

 3. Modify Datacake Platform Configuration

Check the format of the JSON data sent from the Arduino, configure the correct decoder on the Datacake platform to properly parse the data, and set up rules to send alert emails via Datacake.

Check Alert Email (image 3)

Then set the device in your scenery. Whenever the TVOC value exceeds the limit, you will receive an alert email.

More project details can be checked on GitHub.

Follow the steps to build your own projects right now! Any ideas, welcome to share in the comments!

u/Vearts — 2 months ago
▲ 1 r/IOT

SD card SPI VS SDIO mode

SD cards are frequently used in embedded design. We used a lot of SD cards in Makerfabs products; it’s easy to store tests, images, music, data, and more. However, there are actually two methods to use SD cards.

1. SPI Mode

https://preview.redd.it/rx8ykfy8gf3h1.png?width=1246&format=png&auto=webp&s=28660f15b2ff19c6b801ecfbc61b0dca506496a7

2.  SDIO/1bit Mode

https://preview.redd.it/agudv2p9gf3h1.png?width=1246&format=png&auto=webp&s=471c59e6329bbed167a3ee4a984060be6336ecb2

With ESP32/Arduino IDE, SPI  used the SPI library; SDIO used SD_MMC library. We used SPI mode in MaTouch AI ESP32S3 2.8" TFT ST7789V and SDIO mode in MaTouch Lite ESP32-S3 SPI Resistive Touch 2.4" ST7789 for comparison.

https://preview.redd.it/wk2z8ymagf3h1.png?width=1246&format=png&auto=webp&s=639ff7d56c7f53d227d1a7f6fbae71de7662e88a

1. With a total data 1048576 bytes, in SPI mode, the read/written time is about 2.4s~2.5s

https://preview.redd.it/qe6g10ubgf3h1.png?width=794&format=png&auto=webp&s=632178109dcae449b266b6f7ba153c61ecce8990

 2. While in SDIO/1bit mode, the read time 0.3s and written time 0.55s;

https://preview.redd.it/iivay8ncgf3h1.png?width=834&format=png&auto=webp&s=d253bc7264cdf809c7eb669c9bad6594cb87a9ec

Detailed results with multiple tests:

https://preview.redd.it/5gfvngsegf3h1.png?width=1041&format=png&auto=webp&s=7b7b6d8372f6be6429ba7ee2ff8dafc8dbb7895d

That is, the read/write speed with SPI/SDIO 1 bit:

https://preview.redd.it/jwddsovfgf3h1.png?width=1041&format=png&auto=webp&s=2006a33d55c94a9cb495e91bc0d35c03e5cc7e5e

Both the 2 modes have their respective advantages and disadvantages:

https://preview.redd.it/zteh5okigf3h1.png?width=788&format=png&auto=webp&s=f284dcab81de9fa9ac4207b070b56921aeb80f33

In most MaTouch products, we implemented and tested SD card(16G/32G). Some of them use the SPI mode, and some use the SDIO mode.

Conclusion:

  • When you use SD card with SPI bus, it needs 4 GPIOs, it is easy to use for common users. Besides, multiple items can be implemented on SPI bus
  • SDIO/1-bit mode uses fewer (3) GPIOs; four times higher speed; SDIO pins can not be shared.

Any creative ideas are welcome to be shared here!

reddit.com
u/Vearts — 3 months ago