Drone Finder is a tool designed to locate drones by reading Receiver Antennas' RSSI (Received Signal Strength Indicator) values from wfb-ng. It displays an On-Screen Display (OSD) in real-time, indicating the proximity of a drone to the receiver based on signal strength.
- Real-Time OSD: Displays an on-screen indication of the drone's proximity based on RSSI values.
- RSSI Analysis: Reads RSSI data from receiver antennas to calculate how close a drone is.
- Dynamic Frequency Updates: Adjusts beeper frequency to indicate signal strength, making it easier to understand proximity.
- Modular Design: Organized into multiple modules for ease of maintenance and extensibility.
.
├── cairo_renderer.py # Module for rendering OSD with Cairo
├── frequency_updater.py # Module that updates the frequency based on RSSI values
├── main.py # Main entry point of the application
├── osd_widget.py # PyQt5 widget for displaying the OSD
├── main.spec # PyInstaller spec file for packaging the app
├── build/ # Build directory (generated by PyInstaller)
├── dist/ # Distribution directory for binaries (generated by PyInstaller)
├── venv/ # Virtual environment (not included in Git)
└── README.md # Project README file
-
Install required dependencies:
sudo apt update sudo apt install libgirepository1.0-dev
-
Clone the repository:
git clone https://github.com/ramkrishna757575/openIPC-drone-finder.git cd DroneFinder -
Create and activate a virtual environment:
python3 -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate`
-
Install the required dependencies:
pip install -r requirements.txt
-
To build a binary run the following command. You can find the binary with name
maininsidedistfolder.pyinstaller --onefile main.py
To run the application, use the following command:
python main.py [--verbose] [--osd]--verbose: Enable verbose mode for logging.
--osd: Enable OSD mode for displaying how close the drone is to the receiver.
main.py
The entry point of the application. It sets up argument parsing, starts the frequency updater, and initializes the OSD if specified.
osd_widget.py
Defines the OSDWidget class, which is a PyQt5 widget for displaying the real-time OSD.
cairo_renderer.py
Defines the CairoRenderer class, which uses Cairo to render the signal strength on a surface.
frequency_updater.py
Contains functions for fetching and updating the current frequency.