Skip to content
/ ISILS Public

Undergraduate thesis project, focusing on the design and implementation of a system for interference signal identification and localisation. Independently built the system from scratch, covering full-cycle design and implementation.

License

Notifications You must be signed in to change notification settings

liyang-D/ISILS

Repository files navigation

Interference Signal Identification and Localization System (ISILS)

1. Introduction

This is a system for interference signal identification and localization. There are two modes: real-time and non-real-time.

system demo

The following hardware devices are needed:

  1. The spectrum analyzer Tektronix 306B is required for real-time acquisition.
  2. The WitMotion compass JY901 and The GNSS sensor NEO-M8T is required for localization.

If you do not have the devices above:

  1. If you do not have the spectrum analyzer, you can only read the existing file and get its identification results in non-real-time mode, but cannot acquire real time signal.
  2. If you do not have the compass and the GNSS sensor, you are unable to use the localization function, but you can still acquire and analyze the signal with the system.

2. Structure of the Directory

  • detector/ : programs related to detecting algorithm
    • best.pth: the best parameters used for prediction
    • dataset_generator.py: the tool used to convert raw data into dataset files
    • model.py: the structure of the model and the dataset class
    • train.py: python program used for model training
  • lib/ : library needed by the compass and gnss sensor
  • temp/ : temporary files generated by the running system
  • pics/ : pics needed by readme.md file
  • RSA_API.py: the basic APIs for Tektronix 306B
  • IQ_data_acquire.py: the program for data acquisition from Tektronix 306B
  • main.py: the main program to be run
  • style_sheet.qss: the style sheet file for the graphic interface

Notes: the files in data_transmission folder are the Matlab Simulink programs used for signal transmission via software defined radios (SDR). It has no direct relationship with the system, but can be used to simulate the interference source.

3. User Guide

Follow the guidance and you can start to use the system.

3.1 Basic set up

1) Tektronix Analyzer Configuration

To start using the system, first you should make sure you have installed the drive for Tektronix 306B. After that, you need to modify the path of the dll file in IQ_data_acquire.py and also main.py.

rsa = cdll.LoadLibrary("D:\\Program Files (x86)\\Tektronix\\RSA_API\\lib\\x64\\RSA_API.dll")

2) Compass Configuration

After you have connected the compass with your USB port, you can check the com number of the compass in the device controller.

com number

Then you need to modify the serial port in main.py file.

The default compass port number is 5. If the number you see is not 5, you need to change it during the initialization of MyWindow Class as follows.

window = MyWindow(compass_port=1)

3) GNSS Sensor Configuration

If you have a GNSS sensor NEO-M8T that is not configured, you need to configure it to get the expected data.

First, you should install and open the u-center software.

Select here to connect to your GNSS sensor.

Select GNSS sensor

Click View - Packet console to see if there are data being sent from the GNSS sensor.

Select GNSS sensor

The following page shows the packages that the computer is receiving from the sensor.

Select GNSS sensor

Click View - message view.

Messsage view

After you have opened the page, you can right click the unneeded messages to disable them. You only need to keep GNGGA or GPGGA message for our system.

Modify message view

After that, you can click the poll button to send the modification to the sensor.

Modify message view

Open View - Packet console again to see if your modification is working. If the messages received are all GNGGA or GPGGA (like above), then you are successful.

Select GNSS sensor

Now the configuration of the GNSS sensor is done and you can move on to the next step.

Remember to set the serial port in main.py too.

window = MyWindow(gnss_port=1)

4) Module Installation

Most of the modules and packages are already included in anaconda environment without any conflict.

Only following packages need an extra installation:

pip install pyserial
pip install pynmea2

3.2 System Running

1) Normal running

If you have an anaconda environment and have installed all the packages above, you can directly run the main.py file to use the system.

TIPS: To make the GUI display correctly, better make sure your screen resolution larger than 2432*1360.

2) Disable certain functions

If you do not have one of the required devices (Tektronix / compass / GNSS sensor) but still want to get the system running, you can set in the main.py file to disable certain functions.

window = MyWindow(if_capture=True, if_compass=False, if_gnss=True)

Once the value is set False, then the system will run without the corresponding device.

4. Model Optimization

This section contains the information for data organization and model optimization.

4.1 Data Set Acquisition and Organization

There are 2 steps to generate a data set.

  1. Raw data generation:

    Run IQ_data_acquire.py to obtain the raw signal data from the Tektronix spectrum analyzer.

    The program will save annotation files (txt) at the same time of acquiring signal data (csv), so it is important to set the parameters correctly.

    Tips:

    • The parameters that need modifying are mostly listed at the beginning of the main function, e.g., saving path / file name, category, frequency and bandwidth.
      • If the signal belongs to category 1 (NBN / WBN), you should set its frequency (f) and bandwidth (BW) correctly.
      • If the signal belongs to category 2 (MT / ST), you should add all the frequencies in the list (f_list).
    • The center frequency (cf) and sample rate (fs) of the spectrum analyzer can be modified according to your requirements.
    • You can also modify the acquisition length in the parameter. Remember to make sure the acquisition length is no less than 8192.
  2. Dataset organization: Run the detector/dataset_generator.py file to convert raw data into data set formatted data.

    • You can generate multiple data set files from one raw data file, because the length of the data is decided randomly. (Set the number by modifying the copy_num parameter)
    • It is important to make the source and target paths correct.
      • Source path is where your raw data are.
      • Target path is where you want the generated dataset to be.
    • Remember to set the organize_category correctly, because every time a new dataset is generated, the original cache will be removed. If your raw data contains more than one category of signals, then you should set it as All.

Now you have the data of the required format, and you can start to train your own model!

4.2 Model Training

There are 3 sub-models in the system, namely:

  1. Classifier: used to classify 3 types of signals:
    1. Band pass signal
    2. Single / Multi tone signal
    3. None
  2. BPModel: used to predict the bandwidth of a band pass signal.
  3. SMTModel: used to predict the number of single tone signals in a single / multi tone signal.

You can run the corresponding training program to train the models, and configure the paths, epochs, etc. in the main function.

The first time the dataset is imported, the system will generate a cache to store the data information. As the three models are targeted at different types of signals, they generate 3 caches respectively.

In the dataset folder, you will find 3 caches generated by the models. Also, in the detector folder, you can find 3 weight files.

  • ".cache0" and "best0.pth" is for Classifier.
  • ".cache1" and "best1.pth" is for BPModel.
  • ".cache2" and "best2.pth" is for SMTModel.

Every time a training process is completed, the program will export several weight files and a graph showing the model performance. You can replace the 3 existing weight files with your newly trained weight files to optimize the recognition performance.

About

Undergraduate thesis project, focusing on the design and implementation of a system for interference signal identification and localisation. Independently built the system from scratch, covering full-cycle design and implementation.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages