RF Field Observer & Heatmap: Visualizing Invisible Radio Environments

by sanjula nipun in Circuits > Wireless

89 Views, 3 Favorites, 0 Comments

RF Field Observer & Heatmap: Visualizing Invisible Radio Environments

FNT333.jpg

Making the Invisible Visible!

Today I’ve brought you a very valuable lesson along with a fun and interesting project πŸŽ‰πŸ”§.

We all use Wi-Fi a lot in our day-to-day lives, right? πŸ“‘ But have you ever thought about how Wi-Fi signals behave around us πŸ€”β“

Even though Wi-Fi and GSM signals from our phones are all around us πŸ“ΆπŸ“±, we can never actually see them with our eyes πŸ‘€.

Supplies

SP.PNG

ESP32

WS2812 Matrix PCB ( 4x4 or 8x8)

Breadboard

Jumper Wires

Doubleside Tape

Soldering Iron

Soldering Wires

Power Bank

RF Field Observer - Hacker Mode!

FN12.PNG

First, let’s look at how to build an RF Field Observer. πŸ”πŸ“Ά To make things a bit more exciting, I decided to design this with a hacker themed style. 🟒πŸ–₯️

At the moment, I don’t have a GSM module, so I displayed some fake data for demonstration purposes. πŸ“Š

However, if you use this project for school or educational activities, it can still be very useful. I included this feature with that in mind. πŸŽ“

I believe that if you slightly modify and improve this design, you can turn it into a really nice and creative project. πŸš€βœ¨

Hardware Assemble

MATRIX.PNG
SSM.PNG

First, I started with a WS2812 LED matrix. πŸ’‘ I soldered three small circuit wires to it if you prefer, you can also use three jumper wires. πŸ”§

To make the LEDs look clearer and more visible, I placed and neatly fixed a thin white paper sheet on top of the matrix. 🀍✨ Next, I mounted the matrix onto the breadboard using double‑sided tape so it stays firmly in place. 🧲

Then, I inserted the ESP32 into the breadboard and connected all the wires properly. I’ve included the wiring diagram for reference. πŸ“„πŸ”Œ

Since this ESP32 prototype is meant to be carried around, it’s important to make sure all the connections are secure and won’t come loose. πŸšΆβ€β™‚οΈβš‘

While moving around, I powered the prototype using a power bank. πŸ”‹ If you prefer, you can also use a battery to power this setup.

Software Configurations

CODE1.PNG
CODE2.png

Once all the hardware connections are done correctly, we can upload the required code to the ESP32. πŸ”Œβž‘οΈπŸ–₯️

I’ve shared the RF Field Observer code below, so anyone who needs it can download and use it. πŸ“₯πŸ“„

In the code, don’t forget to enter your Wi-Fi network name and password on lines 8 and 9. πŸ“ΆπŸ”

// WiFi Configuration - CHANGE THESE!
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

Also, if you’re using a larger WS2812 LED matrix than mine, such as an 8Γ—8 matrix, don’t forget to update line 13 in the code accordingly. πŸ”’πŸ§©πŸ“„

// WS2812 LED Matrix Configuration
#define LED_PIN 26
#define LED_COUNT 16
#define BRIGHTNESS 50

After setting everything up correctly, you can upload the code to the ESP32. πŸš€πŸ–₯️

Once the code is uploaded, you also need to upload the ESP32 sketch data. πŸ“‚βš™οΈ

I’ve shared the step by step process using photos to make it easy to follow. πŸ“Έβž‘οΈ

Download code file from here.

SM1.PNG
WEB2.PNG

Once both the code and sketch data are uploaded, you can open the Serial Monitor to check whether the ESP32 has successfully connected to your Wi-Fi. πŸ“ΆπŸ”

If it’s connected, you’ll be able to see the ESP32’s IP address displayed there. 🌐πŸ–₯️

Next, open a web browser such as Google Chrome 🌍 and enter that IP address in the address bar, then open it. πŸ”—βž‘οΈ

Now you can see the Hacker Mode RF Field Observer interface running beautifully. πŸŽ‰πŸŸ’πŸ’»

Final Interface - Invisible to Visible!

M6.gif

On this interface, you can first see a large Wi-Fi Heatmap and a GSM Heatmap. πŸ“ΆπŸ—ΊοΈ

I designed this heatmap so you can visually understand how your Wi-Fi signal behaves around you. πŸ‘€

The heatmap fills up block by block, continuously scanning the Wi-Fi signals around you. πŸ”²βž‘οΈ

It takes a few minutes for the entire heatmap to fill, and once it’s complete, you can clearly see how Wi-Fi signals behave depending on your location. πŸ“

Sometimes, you may even notice clear and interesting patterns forming on the heatmap. πŸ“Š

While the scan is running, try walking around with the ESP32, πŸšΆβ€β™‚οΈπŸ“‘ you’ll see the heatmap change in real time as the signal strength increases or decreases.

I’ve also added a REAL TIME SIGNAL STRENGTH panel on the side. This lets you quickly monitor signal changes instantly without waiting for the full heatmap to update. πŸ“ˆ

I’m hoping that someone will complete the GSM part of this project as well. πŸ€žπŸ“±

Unfortunately, I wasn’t able to finish that section at the moment.

Overall, this is a super cool and powerful tool. πŸ”₯πŸ› οΈ

You can build this project and impress your friends at school or university. πŸŽ“πŸ˜„πŸš€

WS2812 LED Matrix

RUID6b1928397a7a47bf95ae1ff8dd502b50.gif
While the heatmap is filling up, you’ll also be able to see the LED matrix working beautifully in sync with it. This allows you to visually experience the signal activity not only on the screen but also through the LED display. πŸ‘€πŸ’‘πŸ“‘

Manual Mapping Mode

CODE4.PNG

So, earlier we built the Hacker Mode πŸŸ’πŸ’».

That mode doesn’t require any manual control it simply displays how your Wi-Fi signal behaves. πŸ“ΆπŸ‘€

Now, in this step, we’re going to map the Wi-Fi signal and generate a heatmap. πŸ—ΊοΈ

So, what can we use this for? πŸ€”

  1. You can use it to find weak Wi-Fi signal areas in a large hall or building. πŸ’πŸ“‰
  2. Or imagine using it to discover the strongest Wi-Fi spot in your school. πŸ“

If you take this project one step further, you can even improve it for indoor mapping applications. πŸ πŸ—ΊοΈ All of this really depends on your creativity. πŸš€

Just like before, in the code for this mode, don’t forget to enter the Wi-Fi network name and password for the network you want to map πŸ”πŸ“Ά

Make sure to update lines 8 and 9 accordingly. πŸ“„βœοΈ

// WiFi Configuration - CHANGE THESE!
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

After that, you can configure the details of your LED matrix here. πŸ§©πŸ’‘

// WS2812 LED Matrix Configuration
#define LED_PIN 26 // GPIO pin connected to LED matrix (change if needed)
#define LED_COUNT 16 // 4x4 = 16 LEDs
#define MATRIX_WIDTH 4 // LED Matrix width
#define MATRIX_HEIGHT 4 // LED Matrix Hight
#define BRIGHTNESS 50 // 0-255, adjust brightness

After setting everything up, upload the code first, and then upload the sketch data, just like before. ⬆️

Once that’s done, check the IP address in the Serial Monitor. πŸ–₯️

Then, open a web browser 🌍 and enter that IP address. πŸ”—βž‘οΈ

Now you’ll be able to see the Wi‑Fi mapping interface working properly. πŸ—ΊοΈ

Download code file from here.

Wi-Fi Signal Heatmap Visualizer

WEVB2.PNG

Now you can see a more advanced interface compared to the previous one. πŸš€πŸ’»

At the top, you’ll be able to view your current Wi-Fi signal strength, πŸ“Ά followed by the signal quality. πŸ“Š then the mapping points being collected, πŸ—ΊοΈπŸ“ and finally, you can also see your network name. (SSID) πŸ”πŸ“‘

Below that, you’ll find the LED Matrix control interface. πŸŽ›οΈπŸ’‘

From here, you can adjust the brightness of your matrix and use the dropdown menu to change the display mode easily.

There are four display modes available πŸ‘‡

  1. Signal Strength Bar πŸ“Ά
  2. Mini Heatmap πŸ—ΊοΈ
  3. Rainbow Animation 🌈
  4. Signal Pulse πŸ’“

I’ve explained how each mode works separately in the sections below.

Auto Mapping

Auto-Mode-Scan.gif

In Auto Mapping mode, the ESP32 maps the received signal every second. β±οΈπŸ“Ά

Once you start auto mapping, you should walk from one corner to the other of the hall or room you want to map. πŸšΆβ€β™‚οΈπŸ 

As you move, you’ll be able to see the heatmap updating accurately based on your position. πŸ—ΊοΈβœ¨ It takes a few minutes to complete the full mapping process. ⏳πŸ”₯

Manual Mode Mapping

Manual-Mode-Scan.gif

By default, the system is set to Manual Click Mode. πŸ–±οΈ In this mode, you can click on the heatmap to add and display mapping data points. πŸ“πŸ—ΊοΈ

Manual mode allows you to map only specific areas, making it easy to identify where the signal is strong and where it is weak. πŸ“ΆπŸ”

On the heatmap, the signal levels are shown using colors:

  1. 🟒 Green – Excellent (-30 to -50 dBm)
  2. 🟑 Yellow – Good (-50 to -60 dBm)
  3. 🟠 Orange – Fair (-60 to -70 dBm)
  4. πŸ”΄ Red – Poor (-70 to -90 dBm)

By looking at the colors on your map, you can easily understand the signal behavior and overall quality.

MAPFDD.PNG

This is an example of a hall that I mapped. πŸ—ΊοΈ

Around the edges, the signal is quite weak, while the Wi-Fi router was placed in the center. πŸ“ΆπŸ“

That’s why the signal strength is much better in the middle of the map.

I believe this will be a very useful tool for you πŸ’‘πŸ› οΈ. If you have any questions, feel free to ask in the comments below... πŸ’¬πŸ‘‡