GithubHelp home page GithubHelp logo

wrlab / wi-esp Goto Github PK

View Code? Open in Web Editor NEW
73.0 6.0 15.0 45.28 MB

This projects helps to acquire the CSI information of the Wi-FI network which can further be used to perform analysis on the RF link of the Wi-Fi.

CMake 3.58% Makefile 3.35% C 52.36% HTML 40.71%
csi wi-fi wi-fi-fingerprints csitool

wi-esp's Introduction

Wi-ESP

Steps to acquire CSI are as follows:

Step-1: Setup the wireless network to acquire CSI.

Step-2: Make Client/Server architecture to generate traffic.

Step-3: Acquire CSI to configure ESP32 on the same channel on which Wireless Network is established.

Device-Free Wi-Fi Sensing (DFWS) is becoming a popular research due to the ubiquitous availability of Wi-Fi signals and comparatively accurate sensing with less infrastructure. The primary advantage of DFWS is exploiting the Wi-Fi signals around us to detect a person, fall, gesture location detection, and various other applications passively. In comparison with state-of-the-art techniques using sensors, cameras, or wearables to monitor an environment or person, DFWS uses Wi-Fi signal patterns to sense the state. The main advantage of being device-free is that it does not require any specifc devices like sensors or cameras. DFWS can be an ideal solution for many applications like the Internet of Things (IoT), Human Activity Recognition (HAR), monitoring elderly people, and many more since it is less obtrusive and offers pervasive sensing. The earliest work on "Sensorless Sensing" is a human sensing application using Wireless Sensor Networks (WSN) and a Received Signal Strength Indicator (RSSI) based detection. These preliminary works on localization and tracking the presence of humans accelerated the deployment of various applications based on DFWS. Unlike the use of RSSI, Channel State Information (CSI) in 802:11n gave more fine-grained dive into the Physical (PHY) layer and leverage useful information at every frame level.

Youtube Links:

1 https://www.youtube.com/watch?v=Gybwx-z5ARo&ab_channel=WRL 2 https://www.youtube.com/watch?v=g1OiVEzNelI&ab_channel=WRL

Published Articles:

  1. Wi-ESP: https://academic.oup.com/jcde/article/doi/10.1093/jcde/qwaa048/5837600
  2. COVID-Beat: https://academic.oup.com/jcde/article/9/3/992/6590610
  3. HAR: https://ieeexplore.ieee.org/abstract/document/10444143

Cited Articles:

FAQ:

Q: DO I need to use UDP_Client and UDP_Server of ESP32 to acquire CSI ?

Answer:No, this is not essential to used UDP_Client and UDP_Server of the ESP32, This can be built on any device or any routher. The main purpose is just to generte the traffic to acquire CSI this can be done by any device and router.

Q: Do you also have access to the AGC for amplitude compensation.

Answer: No, ESP32 does not provide any control on the ASIC of the Wi-Fi module, so we can not change the AGC.

Q:do I need to recover the phase after the collection or is it already done in the CSI Tool ?

ANswer:Yes, the collection of Phase is already included in the CSI Tool. The CSI information includes phase and amplitude of all the subcarriers.

wi-esp's People

Contributors

atif024165 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

wi-esp's Issues

Phase values

Hi,

Thanks you for the interesting paper.
I am currently using nexmon_csi tool to extract CSI information, and I find your solution very interesting.

Can you please explain why the phase from esp32 is not random while in others it is random?
I have looked at the phase figures, I am not sure I was able to recognize a pattern (same goes with nexmon_csi).

I am referring to this quote:
"The amplitude and phase values received From the entire set of subcarriers can provide precise CSI values useful for various DFWS applications. The other existing CSI tools have random phase values from CSI and need correction for DFWS applications. The phase values received from all sub-carriers also show different signal strengths, enabling them to be used for different DFWS applications based on requirements."

Thanks,
Tomer

Compilation of udp_server and udp_client failed

~/esp/Wi-ESP/udp_server$ make -j4 flash Toolchain path: /home/kaustubh/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc Toolchain version: crosstool-ng-1.22.0-80-g6c4433a Compiler version: 5.2.0 App "udp_server" version: d61909e-dirty Python requirements from /home/kaustubh/esp/esp-idf/requirements.txt are satisfied. CC build/main/udp_server.o AR build/nimble/libnimble.a CXX build/nvs_flash/src/nvs_types.o CC build/openssl/library/ssl_cert.o /home/kaustubh/esp/Wi-ESP/udp_server/main/udp_server.c:19:38: fatal error: protocol_examples_common.h: No such file or directory compilation terminated. /home/kaustubh/esp/esp-idf/make/component_wrapper.mk:289: recipe for target 'udp_server.o' failed make[1]: *** [udp_server.o] Error 1 /home/kaustubh/esp/esp-idf/make/project.mk:552: recipe for target 'component-main-build' failed make: *** [component-main-build] Error 2 make: *** Waiting for unfinished jobs.... CC build/openssl/library/ssl_methods.o CC build/openssl/library/ssl_pkey.o CXX build/nvs_flash/src/nvs_ops.o CXX build/nvs_flash/src/nvs_item_hash_list.o CC build/openssl/library/ssl_x509.o CC build/openssl/library/ssl_lib.o CC build/openssl/library/ssl_stack.o CC build/openssl/platform/ssl_pm.o CC build/openssl/platform/ssl_port.o CXX build/nvs_flash/src/nvs_encr.o CXX build/nvs_flash/src/nvs_pagemanager.o AR build/openssl/libopenssl.a CXX build/nvs_flash/src/nvs_api.o CXX build/nvs_flash/src/nvs_storage.o CXX build/nvs_flash/src/nvs_page.o AR build/nvs_flash/libnvs_flash.a

/esp/Wi-ESP/udp_client$ make -j4 flash monitor Toolchain path: /home/kaustubh/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc Toolchain version: crosstool-ng-1.22.0-80-g6c4433a Compiler version: 5.2.0 App "udp_client" version: d61909e-dirty Python requirements from /home/kaustubh/esp/esp-idf/requirements.txt are satisfied. CC build/main/udp_client.o CC build/micro-ecc/micro-ecc/uECC.o CC build/mqtt/esp-mqtt/mqtt_client.o /home/kaustubh/esp/Wi-ESP/udp_client/main/udp_client.c:20:38: fatal error: protocol_examples_common.h: No such file or directory compilation terminated. /home/kaustubh/esp/esp-idf/make/component_wrapper.mk:289: recipe for target 'udp_client.o' failed make[1]: *** [udp_client.o] Error 1 /home/kaustubh/esp/esp-idf/make/project.mk:552: recipe for target 'component-main-build' failed make: *** [component-main-build] Error 2 make: *** Waiting for unfinished jobs.... CC build/mqtt/esp-mqtt/lib/mqtt_outbox.o CC build/mqtt/esp-mqtt/lib/mqtt_msg.o CC build/mqtt/esp-mqtt/lib/platform_esp32_idf.o AR build/micro-ecc/libmicro-ecc.a AR build/mqtt/libmqtt.a

----------------------------------------- END------------------------------------------------------

Please help me out here. I am willing to co-ordinate closely with you, I have acquired hardware just for executing your work of which I am a big fan of !! Thank You!!

Error when building Capture_CSI

I got an error when I tried to configure using menuconfig as well as when trying to build the Capture_CSI
Here is the error:
CMake Error at ../../../../tools/cmake/component.cmake:475 (add_library):
Cannot find source file:

C:/esp/esp-idf/examples/get-started/Wi-ESP-master/Capture_CSI/main/scan.c

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
.hpp .hxx .in .txx
Call Stack (most recent call first):
../../../../tools/cmake/component.cmake:538 (idf_component_register)
main/CMakeLists.txt:4 (register_component)

CMake Error at ../../../../tools/cmake/component.cmake:475 (add_library):
No SOURCES given to target: __idf_main
Call Stack (most recent call first):
../../../../tools/cmake/component.cmake:538 (idf_component_register)
main/CMakeLists.txt:4 (register_component)

CMake Generate step failed. Build files cannot be regenerated correctly.
cmake failed with exit code 1

Could you please help with that?
Thank you in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.