esp-csi console_test [中文]
This example provides a test platform for Wi-Fi CSI, which includes functions such as data display, data acquisition and data analysis, which can help you quickly understand Wi-Fi CSI.
- Display:you can quickly understand the impact of different antennas, human movement and equipment placement on Wi-Fi signals by viewing the real-time data such as Wi-Fi RF noise bottom, CSI, RSSI and noise floor of RF.
- Acquisition:All collected Wi-Fi CSIS will be stored in files. You can also mark the data for different motor behaviors for later neural network and machine learning.
- Analysis:It can realize the detection of human movement and whether there are people in the room, and help you quickly the application scenario of Wi-Fi CSI.
This example provides two working modes of esp32-s3 development board
and router
as Wi-Fi CSI contracting equipment. Using esp32-s3 development board
as contracting equipment has better adjustment effect on contracting rate, RF size and channel. In both modes, esp32-s3 development board
is used as the receiving device for Wi-Fi CSI.
The esp-idf version of the current project is ESP-IDF Release v5.0.2
cd esp-idf
git checkout v5.0.2
git submodule update --init --recursive
./install.sh
. ./export.sh
Note: Since esp-idf v5.0.0 or above supports destination address filtering, the effect will be better, so it is recommended to use v5.0.0 or above
-
Use esp32-s3 to send CSI:Burn project
csi_send
to esp32-s3 development boardcd esp-csi/examples/get-started/csi_send idf.py set-target esp32s3 idf.py flash -b 921600 -p /dev/ttyUSB0 monitor
-
Use router to send CSI:The router is not connected to other intelligent devices to avoid network congestion affecting the test effect.
- Burn project
console_test
to another esp32-s3 development boardcd esp-csi/examples/console_test idf.py set-target esp32s3 idf.py flash -b 921600 -p /dev/ttyUSB1
- Run
esp_csi_tool.py
incsi_recv
for data analysis. Please closeidf.py monitor
before running. Please use UART port instead of USB Serial/JTAG port.cd esp-csi/examples/console_test/tools # Install python related dependencies pip install -r requirements.txt # Graphical display python esp_csi_tool.py -p /dev/ttyUSB1
- After running successfully, the following CSI data visualization interface is opened. The left side of the interface is the data display interface
Raw data
, and the right side is the data model interfaceRaw model
:
The real-time visualization interface consists of two parts: the Raw data
and the Radar model
. Raw data
displays the original CSI sub-carrier data, and Radar model
uses algorithms to analyze the CSI data. As a result, it can be used for detection of someone/noneone, move/static, by selecting the Raw data
and Radar model
buttons in the upper right corner, you can choose to display the two interfaces separately.
The top left is the configuration router connection information window. Use the device to connect to the router and receive the CSI between the router and the device.
- SSID:router account
- password:router password
- auto connect:If checked, the next time you turn it on, it will automatically connect to the last connected router.
- connect / disconnect:connect/disconnect button
- custom:You can send more control commands such as: restart, version acquisition, or enter custom commands on the device side
This window can display the waveform of some channel CSI data in real time. If wave filtering
is checked, the filtered waveform will be displayed.
This window displays the RSSI waveform information, which can be used to compare with the CSI waveform to observe the changes of RSSI when the personnel in the room are in different states.
This window displays system logs such as time, memory, etc.
This window displays Wi-Fi channel status information.
This window is used to calibrate the room status threshold and display room status ( someone/noneone, move/static ).
-
delay:start calibration delay time, no one is required in the room during calibration, and people can leave the room within the delay time after starting calibration.
-
duration:calibration process duration.
-
add:if checked, the recalibrated threshold will be accumulated based on the current threshold.
-
start:start calibration button.
-
wander(someone) threshold:the threshold for judging room presence/absence will be set automatically after calibration, or can be set manually by the user.
-
jitter(move) threshold:the threshold for judging the move/static of people will be set automatically after calibration, or it can be set manually by the user.
-
config:after the user manually sets the threshold, click the configure button.
-
display table:if checked, the room status and people status information table will be displayed on the right side of the waveform box. The specific parameters in the table are as follows.
status threshold value max min mean std room/people status Judgment threshold real-time value maximum value minimum value average value standard deviation
This window displays the specific data of indoor people's movement, the bar graph on the left shows the number of people's movement in real time, and the table on the right records the specific movement time.
- mode:observation mode,
minute, hour, day
three modes are to record the number of people's movements per minute, hour, and day. - time:observation time, the default current time, you can manually set the time to start the observation.
- auto update:if checked, the bar graph of the number of people's movements will be automatically updated and displayed in real time.
- update:after clicking, the bar graph of the number of people's movements will be manually updated and displayed.
The meaning of each parameter in the table is as follows:
room | human | spend_time | start_time | stop_time |
---|---|---|---|---|
room status | people status | spend time of movement | start time of movement | stop time of movement |
This window is used to collect CSI data when people perform different actions. The collected data will be stored under the path of esp-csi/examples/console_test/tools/data
, and the collected data can be used for machine learning or neural network.
- target:Select the motor behaviors to collect
- delay:Select the delay time of collection, which is how long to wait after clicking the
start
button - duration:The duration of collecting an action
- number:Collection times
- clean:Click to clear all collected data
- start:start collecting button
Here, taking connecting the router as an example, the operation flow of the visualization system interface is introduced.
- Enter the router account and password in turn in the router connection window
- (option)check
auto connect
- Click
connect
After the connection is successful, you will see the router status information in the "log print window", and the "CSI data waveform display window" will display the CSI data waveform.
The purpose of calibration is to let the device know the CSI information when there is no one in the room, and to obtain the threshold of personnel movement. If the current version does not calibrate, only personnel movement detection can be performed. The longer the calibration time, the lower the probability of false touches.
- Set the delay time of
delay
, here is 10 seconds for example (i.e. 00:00:10), so that people can leave the room. - Set the duration of
duration
calibration, here is 10 seconds as an example. - Click
start
and selectyes
, the person leaves the room within 10 seconds (delay
time), ensure that there is no one in the room within 10 seconds during the calibration period (duration
calibration duration), and return to the room after the calibration. - ( option ) to manually adjust the room status threshold and the person status threshold based on the calibration results.
After the calibration is completed, the room status will be displayed in the room status display window, and it will be judged that there is noneone static, someone moves, and someone static three status.
- In
filter outliers
, set how many times the threshold is reached in a row to determine the room/people state, so as to filter outliers. - Click
config
to configure. - ( option ) In the room status waveform window, click the horizontal line in front of
wander
to hide its waveform, which is convenient for observing other waveforms. Similarly, other waveforms can also be hidden by the following method. - ( option ) Check
display table
to view the indoor status and people status information table.
In these observation windows, the number of people's movements per minute will be displayed in a histogram according to our settings. The time information of each movement is recorded in the table on the right.
- In the
mode
of the people's movement data display window, select the observation mode to view the movement of the people in the room in one minute, one hour or one day. Here, chooseminute
as an example. - ( option ) Set the time to start the observation in
time
, the default is the current time start. - Check
auto update
to automatically update the test results, if not checked, each time you clickupdate
, the test results will be updated once.
- ( option ) Clear previous acquisition data records in
clean
in the motion acquisition window. - In
target
, select the action to be collected, here selectmove
as an example. - In
delay
, set the delayed acquisition time after clicking to start, here is an example of setting a delay of 5 seconds. - In
duration
, set the duration of collecting an action in, here we choose 500 ms as an example. - In
number
, set the number of times to be collected, here is 1 collection as an example. - Click
start
, the system will start collecting data after the delay time, and the personnel will complete the corresponding action within the set time.
After the collection is over, it will stop automatically. We can see the data we collected under the path of esp-csi/examples/esp-radar/console_test/tools/data
.
- By selecting
Raw data
andRadar model
in the upper right corner of the interface, theRaw data
interface andRadar model
interface can be displayed separately. - Select the critical line between different windows with the mouse, and drag and drop to zoom in/out of each window.