Git Product home page Git Product logo

waterfall's Introduction

Waterfall

A waterfall spectrum analyzer for the ADALM-PLUTO SDR, written in Odin (and a bit of C), using fenster and libiio. Only on X11 (for now?). This is a project that was made for the University of Twente First year's Electrical Engineering Wireless transmission project of 2023.

Mobile data LTE bands around 800MHz
Mobile data LTE bands around 800MHz

Youtube Video demonstration
Video demonstration of Waterfall on YouTube (click for the video)

Dependencies

Linux, X11, Odin, libiio, C build tools

Building and running

First you build it:
$ odin run build
Then, connect the ADALM-PLUTO to your pc.
Now you can run it:
$ ./waterfall
It should bring up the window.

Usage

Pressing the up-and-down arrow keys changes the frequency that the ADALM-PLUTO 'focuses' on, and with it, the center frequency.
The center frequency is at the middle of the screen.
Pressing the left-and-right arrow keys changes the sampling rate (and with it, the bandwidth of the FFT).
Holding shift while pressing the arrow keys makes it take smaller steps.

When running the program, there are two optional command-line arguments. The first is the 'level', which dictates the screen size and FFT bin size. The second is the screen height, so the amount of history the program displays.

Clicking at a spot in the window will print the frequency at the cursor.
Pressing 'm' will print the amplitude at the highest frequency, and colour it light red.
The 'q' and the escape key will quit the program.

Details

The sample rate seems to be directly proportional to the bandwidth of the signal. At a sample rate of 60MSPS and a focus frequency of 100MHz, I suspect the frequency at the left of the screen is 70MHz, and the one on the right 130MHz (confirmed with experimentation).
Every frame is normalized, so if there's no one loud signal, you will see a lot of noise.
In this repo, there are functions for reading and writing .WAV files, which can be implemented quite easily.
There is currently a memory leak and more wierdness going on with closing the device and destroying the buffer. I am not sure why it won't destroy the buffer properly.

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.