Introduction: ESP32-C5 Dual Band WiFi Analyzer

This instructables show how to use the 2025 newly released ESP32-C5 dev board to build a dual band WiFi Analyzer.
Supplies
- Any ESP32-C5 dev board, e.g. Waveshare ESP32-C5 Dev Board
- Any Arduino_GFX supported display, ILI9341 is recommended for beginners
- Some breadboards and breadboard wires
Step 1: What Is WiFi Analyzer?
WiFi Analyzer is a handy app that help to visualize the WiFi signal information around you. It is very useful for helping select a right channel for setting up a new AP. If you selected a channel that overlap with other AP near you, you may encounter interference and degrade the network performance.
If you want continuous monitoring, dedicating a mobile phone or notebook for WiFi scanning is a little bit overkill. A WiFi dev board with display is more cost effective for this job. So at 2017, I built a ESP8266 WiFi Analyzer for 2.4G WiFi signal scanning. And then at 2020, I also use Seeedstudio Wio Terminal built a dual band WiFi analyzer.
Now ESP32 family released ESP32-C5, it support dual band WiFi now. So let's build a dual band WiFi Analyzer with ESP32-C5!
Step 2: WiFi Channels
Wireless LAN (WLAN) channels are frequently accessed using IEEE 802.11 protocols. The 802.11 standard provides several radio frequency bands for use in Wi-Fi communications, each divided into a multitude of frequency channelsnumbered at 5 MHz spacing (except in the 45/60 GHz band, where they are 0.54/1.08/2.16 GHz apart) between the centre frequency of the channel. The standards allow for channels to be bonded together into wider channels for faster throughput.
In 2.4G radio frequency bands, there are well know 13 channels. In some circumstances, it has the 14th channel. The allocated frequency range is linear and easy to represent.
However, in 5G radio frequency bands, the channel range distribution is fragmented. All WiFi possible channels should be channel 32-64, channel 68, channel 96, channel 100-128, channel 132-144, the channel of the above range should only be even number. Then the channel in the range 149-177 should only be odd number. Therefore, please note that the frequency range in the chart is not uniform.
Ref.:
Step 3: 5G WiFi Better?

In my scan area, the number of 5G WiFi AP is even more than 2.4G WiFi AP. But since 5G WiFi signal is significantly weakened after passing through walls if compared with 2.4G WiFi, most signals are lower than -70 dB. So 5G WiFi should encounter lesser interference with other AP nearby. Further more, 5G WiFi have more channels available and wider bandwidth, so it is a good option for small area high speed connection.
Step 4: Software Preparation
Arduino IDE
Download and install Arduino IDE latest version if not yet:
Arduino-ESP32
Follow installation steps to add Arduino-ESP32 support if not yet:
Arduino_GFX Library
Open Arduino IDE Library Manager by selecting "Tools" menu -> "Manager Libraries...". Search "GFX for various displays" and press "install" button.
You may refer my previous instructables for more information about Arduino_GFX.
U8g2 Library
Open Arduino IDE Library Manager by selecting "Tools" menu -> "Manager Libraries...". Search "U8g2" and press "install" button.
Note:
You may refer to Arduino Documentation for the details on how to install/import library to Arduino IDE.
Step 5: Wire Connection


Here are the connection summary between ESP32-C5 dev board and ILI9341 display:
ESP32-C5 ILI9341
======== =======
3v3 -> VCC
GND -> GND
GPIO23 -> CS
GPIO25 -> Reset
GPIO24 -> DC/RS
GPIO8 -> SDI/MOSI
GPIO10 -> SCK
GPIO26 -> LEDNote:
If you are not using ILI9341, you may refer to Arduino_GFX PDQgraphicstest.ino example for more connection details.
Step 6: Connect ESP32-C5 Dev Board

- Connect ESP32-C5 dev board
- Open Arduino IDE
- Select Tools menu -> Port -> the port of ESP32-C5 dev board
- Select Tools menu -> board - esp32 -> ESP32C5 Dev Module
Step 7: Open ESP32C5WiFiAnalyzer Example

Arduino_GFX have a set of examples for WiFi analyzer, You find it in Arduino IDE:
- Select File menu -> Examples -> GFX Library for Arduino -> WiFiAnalyzer -> ESP32C5WiFiAnalyzer
There are also have a ESP32C5WiFiAnalyzerUTF8 version, you should select this if you found non-english characters AP name around your area.
Step 8: Partition Scheme: Huge App

The UTF8 version example requires a over 2 MB for the UTF8 font data, so remember to select corresponding app size:
- Select Tools menu -> Partition Scheme -> Huge App (3MB...
Step 9: Compile & Upload
If you are not using ILI9341, you may reconfigure the Arduino_GFX setting section.
Then simply press the upload button and then wait the compiled program upload to the dev board.
Note:
I found my ESP32C5 dev board will not auto reset after upload the program, if you also encounter this, simply press reset button after upload can start the newly uploaded program.
Step 10: What's Next?
It's time to scan the WiFi signal around you!
There are still many things can improve:
- For saving vertical space to display 2 charts at the same time, the original scanned network count is remove, it should find some way showing it back.
- The ESP32 defined wifi_ap_record_t struct have 2 values called vht_ch_freq1 and vht_ch_freq2, utilize these 2 values can represent frequency range more accurately.
- To reduce the time of initial blank screen, it should make a quick scan first.
- Make it portable.

