Close
0%
0%

Hopefully Hertz

This project detects periodic motion by analyzing how Wi-Fi signals are disturbed by the environment—hoping to extract 1-second timing.

Similar projects worth following

This project aims to detect periodic movements in your environment using Wi-Fi signals. For this, I use two ESP32-S3 devices to extract Wi-Fi CSI (Channel State Information). CSI is data that represents how Wi-Fi signals change as they travel through the environment, allowing us to analyze the wireless channel in detail.

As you might guess, wireless signals don’t always travel directly from transmitter to receiver — they often prefer to bounce around. Sometimes they pass through your body, reflect off a ceiling fan, or even bounce off a construction worker’s pickaxe outside (true story). My project tries to capture a 1Hz signal from any such periodic disturbances.

The goal is not to precisely detect a 1Hz signal — it’s more about hoping something nearby just happens to have a 1-second rhythm.

  • Hoping you're having a calm day and your heart is beating exactly 60 times per minute. 
  • Hoping your ceiling fan rotates once per second (though that’s debatable). 
  • Hoping the construction worker outside doesn’t take too many breaks.

I use Python to perform a basic Fourier Transform (FFT) on CSI amplitude data collected over Wi-Fi. The result is a live graph that shows rhythmic peaks and prints the detected period. Since I’m only interested in slow, periodic motion, I filter out everything below 0.5 Hz and above 2.5 Hz. If you wish, you may modify the code.

main.py

x-python - 7.16 kB - 07/11/2025 at 13:12

Download

  • 2 × ESP32
  • 1 × Computer
  • 1 × USB Cable

  • FFT analysis

    Ergun PAYAL07/11/2025 at 13:06 0 comments

    Figure 1 shows the FFT graph when there is no periodic motion in the environment. Peaks can be seen around 0, 1, and 2 Hz, with a magnitude of approximately ~12. 

    Figure 2 shows the FFT graph generated by rhythmically moving my hand between two ESP32 devices. The magnitude level reaches approximately ~500. 

    In the video, you can see a live analysis. The rhythmic movement doesn't have to occur directly between the ESP32 devices, but background activity can make it harder to detect.

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates