Sense Human Movement with ESP32 CSI
Use two ESP32 DevKits to visualize how human movement changes Wi-Fi CSI.
Introduction
30 Second Summary
A room can look completely still while the radio signals crossing it change every time someone moves. Those invisible changes can reveal movement without asking anyone to carry a sensor.
In this project, you will use two ESP32 DevKits to create a controlled ESP-NOW link that captures Wi-Fi CSI as a person moves between the boards. A live dashboard in Microsoft Edge will turn those measurements into amplitude, phase, I/Q, and history plots that react in real time.
What You'll Build
As you walk across a fixed two-board radio path, the live amplitude-history chart will shift when your body disturbs the signal.
By the end of this project, you'll have:
- A controlled radio link that continuously sends ESP-NOW traffic without relying on your room's router.
- A live CSI stream where you can watch records beginning with CSI_DATA, arrive from the receiver.
- A browser dashboard where phase, IQ, amplitude, and phase-history plots update as someone moves around the radio path.
- Secret Mission: Export one labeled CSI sample for each of the left, center, and right room zones.
Are there any prerequisites?
You need two classic ESP32 DevKit boards, two compatible USB data cables, and a Windows computer with internet access. The project adds no cost when you use the hardware you already have.
Before We Start
Before the hands-on work begins, lock in what this experiment proves and why that evidence matters. You are first establishing a stable movement-sensitive CSI link before training a three-zone neural network.
Set Up Windows and the ESP-CSI Source
Reliable movement sensing starts with a toolchain you can trust. A build or flashing problem can masquerade as bad Wi-Fi CSI data.
This step pins ESP-IDF to v6.1. It also pins the ESP-CSI source to one commit.
You will also map each board to a known serial port. Those labels keep the sender and receiver actions separate.
In this step, get ready to:
- Prepare ESP-IDF v6.1 in an activated terminal.
- Extract the pinned ESP-CSI source snapshot to C:\esp\esp-csi.
- Assign sender and receiver COM port labels.
Prepare the ESP-IDF toolchain
Espressif Installation Manager keeps the pinned ESP-IDF release reproducible. PowerShell runs the official installer commands.
- Press the Windows key to open Windows search.
- Type PowerShell.
- Press Enter to open PowerShell.
- Install Espressif Installation Manager by running this command:
winget install Espressif.EIM
What does this command do?
- The winget command asks the Windows package manager to install an application.
- The Espressif.EIM package provides Espressif Installation Manager.
- Allow the installation to finish.
- Press the Windows key to open Windows search.
- Type Espressif Installation Manager.
- Press Enter to open the application.
- Select Manage Installations.
Espressif Installation Manager is now the control panel for your pinned toolchain. Compare the installation list with the three states below.
✔️ The pinned version is installed
ESP-IDF v6.1 is already listed. Continue with that installation.
ⓧ I see an older version
Keep the older installation in place. Add the pinned release needed by this project.
- Switch back to PowerShell.
- Install ESP-IDF v6.1 by running this command:
eim install -i v6.1
What does this command do?
- The eim install command installs ESP-IDF through Espressif Installation Manager.
- The -i v6.1 option selects the project release.
- Return to Espressif Installation Manager after the command finishes.
- Select Manage Installations.
- Confirm ESP-IDF v6.1 is listed.
ⓧ No ESP-IDF installation is listed
Your installation list is empty. Install the pinned release before continuing.
- Switch back to PowerShell.
- Install ESP-IDF v6.1 by running this command:
eim install -i v6.1
What does this command do?
- The eim install command installs ESP-IDF through Espressif Installation Manager.
- The -i v6.1 option selects the project release.
A quiet PowerShell window for several minutes is normal while EIM downloads the toolchain.
- Return to Espressif Installation Manager after the command finishes.
- Select Manage Installations.
- Confirm ESP-IDF v6.1 is listed.
Installation not completing?
- Keep the Windows computer connected to the internet while EIM downloads the framework.
- Close PowerShell after installing EIM if the eim command is unavailable.
- Open a fresh PowerShell window before trying the pinned installation command again.
Still stuck? Help me troubleshoot my ESP-IDF installation on Windows
- Return to Manage Installations in Espressif Installation Manager.
- Select Open Dashboard for the ESP-IDF v6.1 installation.
- Select Open IDF Terminal from the dashboard.
Before you run the toolchain check, do you expect the activated terminal to recognize idf.py?
- Verify the activated ESP-IDF terminal by running this command:
idf.py --help
What does this check prove?
- The idf.py command is available because the IDF terminal activated the ESP-IDF environment.
- The --help option lists the root-level commands without changing a project.
You should see help text containing the available ESP-IDF options. That is the toolchain locked in for both boards.
No help text?
- Confirm you opened the terminal through the ESP-IDF v6.1 dashboard.
- Return to Manage Installations if the pinned installation is missing.
- Open a fresh IDF terminal after correcting the installation.
Need help? Help me activate ESP-IDF so idf.py works
Extract the pinned ESP-CSI source
A commit snapshot freezes the examples at one known state. This keeps later sender and receiver instructions aligned with the files on your computer.
Why does the path avoid spaces?
ESP-IDF does not support spaces in its framework or project paths. The path C:\esp\esp-csi keeps every later command compatible.
- Press the Windows key to open Windows search.
- Type Microsoft Edge.
- Press Enter to open Microsoft Edge.
- Open the pinned ESP-CSI commit page.
- Select Browse repository at this point.
- Select Code.
- Select Download ZIP.
Microsoft Edge downloads the repository state from commit 8633d67152db2808f141cc1595970aa9cf406045 as a ZIP archive.
- Press the Windows key to open Windows search.
- Type File Explorer.
- Press Enter to open File Explorer.
- Go to the folder where Microsoft Edge saved the ZIP archive.
- Right-click the downloaded ESP-CSI ZIP archive.
- Choose the File Explorer option that extracts the entire archive.
- Enter C:\esp as the destination folder.
- Start the extraction.
You should now see the extracted snapshot folder inside C:\esp.
- Select the extracted snapshot folder.
- Rename the folder to esp-csi.
- Open the renamed esp-csi folder.
The File Explorer address bar should show C:\esp\esp-csi. Your pinned source now has a stable path with no spaces.
Path looks different?
- Check for an extra snapshot folder nested inside C:\esp\esp-csi.
- Move the repository contents up one level if the address bar shows two nested ESP-CSI folders.
- Rename the outer repository folder to esp-csi if the commit hash remains in its name.
Still stuck? Help me fix my extracted ESP-CSI folder path
Identify the sender and receiver COM ports
Port matching is a little fiddly because Windows updates the list as cables move. Windows Device Manager identifies each board through the entry that disappears and returns.
- Disconnect both ESP32 DevKits from the Windows computer.
- Press the Windows key to open Windows search.
- Type Device Manager.
- Press Enter to open Device Manager.
- Review the current serial-port entries whose names begin with COM.
This disconnected baseline makes the next port entry easy to isolate.
- Place a removable Sender label on one ESP32 DevKit.
- Connect the labeled sender board with one USB data cable.
You should see one new entry whose port name begins with COM.
- Disconnect the sender board.
The new COM entry should disappear from Device Manager.
- Reconnect the sender board.
The same COM entry should return.
- Record the sender assignment here: your sender COM port.
One board is now mapped from its physical Sender label to its Windows port.
- Place a removable Receiver label on the second ESP32 DevKit.
- Connect the labeled receiver board with the second USB data cable.
You should see a second COM entry appear in Device Manager.
- Disconnect the receiver board.
The second COM entry should disappear while the sender entry remains.
- Reconnect the receiver board.
The second COM entry should return.
- Record the receiver assignment here: your receiver COM port.
Both ESP32 DevKits are now powered through their USB data cables. Each board has a known role and COM port.
Board not appearing in Device Manager?
- Confirm the board uses a USB data cable instead of a charge-only cable.
- Try another USB port on the Windows computer.
- Disconnect one board while identifying the other if the entries are difficult to distinguish.
Need help? Help me identify my ESP32 COM ports in Device Manager
Before the final toolchain check, do you expect the activated terminal to display the ESP-IDF help options?
- Switch back to the activated ESP-IDF v6.1 terminal.
- Verify the toolchain again by running this command:
idf.py --help
Why repeat this check?
The final run confirms that the activated terminal stayed available while you prepared the source and hardware. The help text proves idf.py is ready for the sender project.
You should see the ESP-IDF help text again.
Before reconnecting the boards, do you expect Windows to reuse the two port assignments you recorded?
- Return to Device Manager from earlier.
- Disconnect the sender board.
- Reconnect the sender board.
You should see your sender COM port disappear before returning.
- Disconnect the receiver board.
- Reconnect the receiver board.
You should see your receiver COM port disappear before returning.
Your Windows toolchain is ready. Next, you will flash the labeled sender so it produces controlled ESP-NOW traffic.
Flash the CSI Sender
Your ESP-IDF toolchain and COM labels are ready. A stable Wi-Fi CSI link now needs one board to generate controlled radio traffic.
You'll flash the official ESP-CSI sender onto the classic ESP32 DevKit labeled as the sender. It uses ESP-NOW to transmit probe traffic without your Wi-Fi router.
In this step, get ready to:
- Prepare the sender example for the classic ESP32 target.
- Flash the official sender firmware.
- Confirm controlled ESP-NOW traffic is running.
Why ESP-NOW for this link?
ESP-NOW sends frames directly between the two boards. The experiment does not depend on your room's router.
This controlled transmitter removes router placement as a changing variable. It also reduces interference from other clients using that router.
Move to the sender project
The activated IDF terminal from earlier uses PowerShell to track a current folder. Pointing it at the sender example ensures every following command configures the correct project.
- Switch back to the activated IDF terminal from earlier.
- Move to the sender example by running this command:
Set-Location -Path C:\esp\esp-csi\examples\get-started\csi_send -PassThru
What does this command do?
- The Set-Location command points PowerShell at the sender example.
- The -PassThru option prints the new current location for confirmation.
The terminal prints C:\esp\esp-csi\examples\get-started\csi_send as its current location.
Configure the classic ESP32 target
An ESP-IDF target tells the build system which chip architecture the firmware must use. This sender example needs the esp32 target for your classic DevKit.
- Configure the sender example for your board by running this command:
idf.py set-target esp32
What does this command do?
- The set-target operation configures the current example for a selected chip.
- The esp32 value selects the classic ESP32 architecture used by your DevKit.
You'll see configuration progress that names esp32. The terminal then returns to its prompt without an error.
Target configuration not completing?
- Confirm the terminal's current location ends with csi_send.
- Confirm you are using the activated IDF terminal from the previous step.
- Check that the source path contains no spaces.
Still stuck? Help me troubleshoot the ESP32 target configuration.
Flash the sender firmware
Flashing copies the official sender firmware onto the board. The serial monitor then lets you read the sender's startup output.
The first build can take longer because ESP-IDF compiles the example before flashing it.
- Record the sender port you identified earlier here: your sender COM port.
- Keep the sender's USB data cable connected.
Before you run this, do you expect the sender monitor to show channel measurements or only the sender's transmitting role?
- Build, flash, and monitor the sender by running this command:
idf.py -p [[SENDER_COM_PORT="your sender COM port"]] flash monitor
What does this command do?
- The -p option directs ESP-IDF to your sender's COM port.
- The flash operation writes the sender firmware to the board.
- The monitor operation opens the board's serial output after flashing.
When the monitor opens, you'll see a banner containing CSI SEND. That banner confirms the sender firmware is running.
You do not see channel measurements or a person's location from this board. That limitation is expected.
Good work. The transmitting half of your sensing rig is now creating traffic for the receiver to measure.
Don't see the sender banner?
- Confirm that your sender COM port matches the sender entry you identified in Device Manager.
- Confirm that no other program is using the sender COM port.
- Check that the current terminal path ends with csi_send.
Still stuck? Help me troubleshoot the CSI sender flash.
- Close only the serial monitor by pressing Ctrl+].
- Leave the sender's USB data cable connected.
You'll return to the activated IDF terminal prompt. The sender remains powered with its flashed firmware running.
The sender is now transmitting controlled ESP-NOW traffic. Next, you'll turn the second ESP32 into the receiver that captures live CSI records.
Flash the CSI Receiver
Your sender ESP32 is already transmitting controlled ESP-NOW traffic. That gives your experiment a stable radio source.
The ESP-CSI receiver captures Wi-Fi CSI. It exposes those measurements through serial streaming on its COM port.
In this step, get ready to:
- Switch the activated terminal to the official receiver example.
- Configure the receiver example for the classic ESP32 target.
- Flash the receiver firmware to inspect its serial output.
Switch to the receiver project
Your activated ESP-IDF v6.1 terminal applies commands to its current folder. The receiver example lives inside the pinned source snapshot from earlier.
- Point the terminal at the receiver example by running this command:
Set-Location -Path C:\esp\esp-csi\examples\get-started\csi_recv -PassThru
What does this command do?
- The Set-Location command changes the terminal's current folder to the official receiver project.
- The -PassThru option prints the selected folder path for confirmation.
You'll see C:\esp\esp-csi\examples\get-started\csi_recv in the returned path. Every following idf.py command now acts on the receiver example.
Receiver path not found?
Check that the folder path ends in csi_recv. Confirm that your pinned source snapshot still lives at C:\esp\esp-csi.
Still stuck? Help me locate the ESP-CSI receiver example in PowerShell
Configure the receiver target
The ESP-CSI source supports several Espressif chips. Selecting esp32 applies the configuration for your classic ESP32 DevKit.
- Configure the receiver project for your board by running this command:
idf.py set-target esp32
What does this command do?
- The idf.py set-target esp32 command selects the classic ESP32 as the receiver project's build target.
- This keeps the receiver hardware target aligned with the sender configuration from earlier.
- Wait for the target configuration to finish.
You'll see configuration output before the terminal prompt returns. Good progress. The official receiver example now targets your classic ESP32 DevKit.
Target configuration failed?
Confirm that the terminal is still activated for ESP-IDF v6.1. Check that its current path ends in csi_recv.
Need a hand? Help me configure the ESP-CSI receiver for the esp32 target
Flash the receiver and inspect CSI
Flashing replaces the program on the receiver board. Your sender stays untouched because this command uses the receiver's identified COM port.
Your prediction checkpoint is simple: will the receiver print a location label or raw channel measurements.
- Leave the sender ESP32 powered through its existing USB cable.
- Replace PORT in the command below with the receiver COM port you identified earlier.
- Flash the receiver firmware by running the edited command:
idf.py -p PORT flash monitor
What does this command do?
- The -p PORT part directs idf.py to the receiver's serial port.
- The flash action writes the official csi_recv firmware to the receiver board.
- The monitor action opens the receiver's serial output after flashing.
- Watch the receiver terminal until several data lines scroll past.
You'll see multiple lines beginning with CSI_DATA,. Each line contains channel measurements captured from the sender's traffic.
The fast numeric stream is dense by design. It proves that acquisition works while leaving the movement patterns hard to interpret.
You've reached the key hardware checkpoint. The receiver is now measuring the channel created by your sender.
No CSI records appearing?
- Confirm that the flash command uses the receiver COM port you identified earlier.
- Confirm that the sender remains powered through its USB cable.
- Close any other program that may be using the receiver COM port.
Still seeing no records? Help me troubleshoot missing CSI_DATA records from my ESP32 receiver
The browser viewer needs exclusive access to the receiver's serial port. Closing the monitor releases that port without stopping either board.
- Close only the serial monitor by pressing Ctrl+].
- Leave both ESP32 DevKits connected to their USB cables.
You'll return to the activated IDF terminal prompt. Both boards remain powered with their firmware running.
The receiver COM port is now available for browser serial access.
Your two-board link now produces live Wi-Fi CSI records. Next, you'll turn that numeric stream into real-time charts you can inspect while someone moves through the radio path.
Visualize CSI in the Web Viewer
Your two-board radio link is alive. The sender produces controlled ESP-NOW traffic while the receiver prints live CSI_DATA, records.
Those raw rows move too quickly for you to spot useful Wi-Fi CSI patterns. The official ESP-CSI viewer in Microsoft Edge turns the same stream into live charts.
In this step, get ready to:
- Serve the official browser viewer from the pinned source folder.
- Load the viewer in Microsoft Edge.
- Connect the receiver COM port to the live charts.
Serve the viewer locally
The csi_viewer.html file needs a local HTTP server so Edge can load it. Binding the server to loopback keeps the page available only on your Windows computer.
- Switch back to the activated ESP-IDF v6.1 terminal from earlier.
- Move into the viewer tools folder and start its local server by running these commands:
cd C:\esp\esp-csi\examples\get-started\tools
python -m http.server --bind 127.0.0.1
What Do These Commands Do?
- The cd command places the terminal in the folder containing csi_viewer.html.
- The python command serves that folder on port 8000.
- The address 127.0.0.1 restricts the server to this computer.
- Leave this terminal running so Edge can request the viewer files.
The terminal remains occupied because it is serving the page. It starts logging local requests when Edge loads the viewer.
Local Server Not Starting?
- Confirm that C:\esp\esp-csi\examples\get-started\tools exists inside your pinned source snapshot.
- Confirm that you switched back to the activated ESP-IDF terminal from earlier.
- Close any other local server using port 8000.
Still stuck? Help me start the local ESP-CSI viewer server
Open the CSI viewer in Microsoft Edge
Web Serial lets the browser request direct access to a COM port. The receiver port supplies the measurements that drive the charts.
- Press the Windows key to open the search bar.
- Type Microsoft Edge and press Enter to open it.
- Click the address bar at the top of Edge.
- Type http://localhost:8000/csi_viewer.html into the address bar.
- Press Enter to load the viewer.
- Use the page language control to switch the viewer to English.
The viewer controls are now in English. You will see Connect above the chart area.
Viewer Page Not Loading?
- Return to the local server terminal from earlier.
- Confirm that the server remains active.
- Check that the Edge address matches http://localhost:8000/csi_viewer.html exactly.
Need help? Help me load the ESP-CSI viewer in Microsoft Edge
Claim the receiver serial stream
Each CSI_DATA, record contains complex I/Q samples for many Wi-Fi subcarriers. The viewer converts those samples into separate views of the measured channel.
Before you connect, do you expect the sender port or the receiver port to make the Valid count rise?
- Click Connect in the viewer.
- Select only the receiver COM port in the browser permission prompt.
- Confirm the selected receiver port in the browser prompt.
That is the live visual link working. The viewer shows Connected while the Valid count rises continuously.
The phase panel updates from the receiver stream. The IQ panel updates alongside it.
The amplitude chart redraws continuously. The phase-history chart extends as new records arrive.
Viewer Not Updating?
- Confirm that the receiver serial monitor remains closed so Edge can claim its COM port.
- Verify that you selected the receiver COM port instead of the sender COM port.
- Keep both ESP32 DevKits powered through their USB data cables.
Still stuck? Help me troubleshoot an ESP-CSI viewer that is connected but not updating
The receiver stream is now readable at a glance. Next, you'll fix the board placement before repeating one controlled walk across the radio path.
Make Human Movement Visible
The two-board link now feeds live Wi-Fi CSI charts into Microsoft Edge. Your next goal is to turn those moving lines into evidence that the channel reacts to a person.
A chart that updates only proves that data is arriving. This controlled test holds board placement steady so repeated movement can be separated from ordinary background variation.
In this step, get ready to:
- Fix the two ESP32 DevKit boards at least 1 metre apart.
- Compare a quiet baseline with a center crossing.
- Repeat timed walks across all three markers.
Fix the radio path
Wi-Fi CSI is sensitive to environmental changes such as a person crossing the radio path. A fixed layout makes your body the intended source of change.
- Switch back to the Microsoft Edge viewer from earlier.
- Confirm the page still shows Connected.
- Check that the Valid count continues increasing.
The live feed is still healthy. You can now arrange the sensing area without changing the firmware or viewer.
- Place the sender at one side of the open test area.
- Place the receiver at least 1 metre from the sender.
The two boards now define a clear radio path across the test area.
- Point the sender's PCB antenna toward the open test area.
- Point the receiver's PCB antenna toward the open test area.
Both antennas now face the space where you will move.
- Secure the sender in its current position.
- Secure the receiver in its current position.
The hardware layout is now fixed. Keep both boards in these positions for every movement test.
- Place a visible marker to the left of the sender-receiver path.
- Place a visible marker at the center of the sender-receiver path.
The left marker defines an outer test zone. The center marker crosses the direct radio path.
- Place a visible marker to the right of the sender-receiver path.
- Return to the Microsoft Edge viewer from earlier.
- Check that the Valid count still increases continuously.
Your fixed layout now has left, center, and right movement positions. The live receiver continues measuring the same radio path.
Compare a baseline with center movement
The channel moves slightly even when nobody crosses it. A quiet baseline lets you compare that background variation with a direct center crossing.
- Stand outside the marked test area.
- Hold still for a short baseline interval.
The amplitude-history chart should continue showing the channel's background variation while the test area remains empty.
Before you cross the center marker, do you expect the new trace to resemble the quiet baseline or show a timed disturbance?
- Cross the center marker at a steady walking pace.
- Review the amplitude-history chart immediately after the crossing.
You should see an observable disturbance near the time your body crosses the sender-receiver path. That first disturbance turns the live chart into evidence of movement-sensitive sensing.
What does the center disturbance prove?
Your body changes how the Wi-Fi signal travels through the test area. The receiver records those changes across Wi-Fi subcarriers.
A later neural network needs repeated labeled examples. It also needs held-out testing before it can assign zones reliably.
No clear disturbance at center?
- Confirm the viewer still shows Connected.
- Check that the Valid count keeps increasing.
- Check that neither board moved during the baseline or crossing.
Still stuck? Help me troubleshoot a weak movement disturbance in my ESP32 CSI viewer.
Repeat the movement test
One center crossing can coincide with ordinary background variation. Repeated walks test whether the disturbance follows your movement at roughly the same time.
- Leave both boards untouched.
Before you repeat the center walk, do you expect a real movement response to occur near the crossing time on one pass or on all three?
- Repeat the same center crossing three times at a consistent pace.
- Review the amplitude-history chart after the third pass.
Across the three center passes, you should see an observable disturbance near each crossing time. The exact shapes can vary while the timed response remains repeatable.
- Repeat the timed walk at the left marker.
- Review the amplitude-history chart after the left pass.
The left pass should create another movement disturbance. Its shape can differ from the center trace.
- Repeat the timed walk at the right marker.
- Review the amplitude-history chart after the right pass.
The right pass should produce a disturbance around the time you move through that marker. Differences among the three traces are movement-sensitive fingerprints for later collection.
Seeing inconsistent disturbances?
- Repeat the center route at the same walking pace.
- Confirm that neither board shifted between passes.
- Check that the PCB antennas still face the open test area.
Need help? Help me make my ESP32 CSI movement test more repeatable.
You have your sensing result. The fixed two-board link now shows repeatable CSI disturbances when a person crosses its radio path.
Secret mission
Capture Three Zone Samples
Turn the movement-sensitive CSI stream into three labeled zone samples. Keep the radio layout fixed while you capture matching intervals at the left, center, and right markers.
Clean Up Your Resources
Clean Up Your Resources
Everything in this project runs on your Windows computer and existing ESP32 DevKit boards, so these resources create no cloud charges. Decide whether to keep the experiment running, pause it for later, or remove its local files.
Resources you used:
- Running local CSI viewer session in Microsoft Edge with the local server and two powered boards.
- Local ESP-CSI source folder at C:\esp\esp-csi.
- Zone captures zone_left.csv, zone_center.csv, and zone_right.csv with the experiment note stored beside them.
- Installed ESP-IDF version v6.1 managed through Espressif Installation Manager.
Your boards remain reusable
Unplugging both boards stops the experiment. The sender and receiver firmware remains on the boards until you flash another project.
Keep everything running
No action is needed. This option keeps the live experiment ready for more movement tests or longer captures.
- Keep the Microsoft Edge viewer connected to the receiver COM port.
- Leave the local server terminal running.
- Leave both boards powered in their fixed positions.
- Keep C:\esp\esp-csi for future builds.
- Keep the three zone captures with their experiment note.
Pause - I'll come back to this later
This option stops the live experiment while preserving every file for your next session.
- Close the Microsoft Edge viewer tab to release the receiver COM port.
- Switch back to the activated IDF terminal running the local viewer server.
- Press Ctrl+C to stop the local server.
- Unplug the sender board.
- Unplug the receiver board.
Your flashed firmware remains on both boards. Your source folder and zone dataset remain available on the computer.
Delete - I don't want to use this again
This option permanently removes the local source and captured data. Your ESP32 DevKit boards remain reusable for another project.
- Close the Microsoft Edge viewer tab to release the receiver COM port.
- Switch back to the activated IDF terminal running the local viewer server.
- Press Ctrl+C to stop the local server.
- Unplug the sender board.
- Unplug the receiver board.
The live viewer session is now stopped. The current firmware remains on each unpowered board until another project replaces it.
- Press the Windows key to open search.
- Type File Explorer into the search box.
- Press Enter to open File Explorer.
- Enter C:\esp in the address bar.
- Select the esp-csi folder.
- Press Shift+Delete to remove the folder permanently.
- Complete the Windows deletion confirmation.
You should no longer see esp-csi inside C:\esp.
- Return to the folder containing the three zone captures.
- Select zone_left.csv, zone_center.csv, zone_right.csv, plus the experiment note.
- Press Shift+Delete to remove the selected files permanently.
- Complete the Windows deletion confirmation.
The three CSV files and their experiment note should no longer appear in that folder.
Removing ESP-IDF is optional. The installation remains useful for future ESP32 projects.
- Press the Windows key to open search.
- Type Espressif Installation Manager into the search box.
- Press Enter to open the application.
- Select Manage Installations.
- Find the v6.1 installation.
- Select Open Dashboard.
- Select Remove.
- Complete the removal confirmation.
The v6.1 installation should no longer appear under Manage Installations. Espressif Installation Manager remains installed.
Nice Work!
Nice Work!
You did it! Your two ESP32 DevKits now form a controlled ESP-NOW link that captures movement-sensitive Wi-Fi CSI. This first project turns those radio measurements into evidence that your hardware plus room layout are ready for the follow-on zone classifier.
You've learned how to:
- Build a controlled two-board ESP-NOW link that sends probe traffic without relying on the room's router.
- Capture live CSI_DATA, records from the receiver. Inspect the CSI charts in Microsoft Edge.
- Run a controlled movement test across three fixed markers. Recognize movement-sensitive fingerprints in the amplitude-history plot.
- Secret Mission: Export three labeled zone samples for the later neural-network classifier. Preserve the experiment layout in a repeatability note.
Ready to quiz yourself?