Agrim9 / FHSS_GNUradio

Building a block to implement FHSS in GNUradio
36 stars 19 forks source link

FHSS_GNUradio

Frequency Hopping Spread Spectrum (FHSS) is a method of transmitting radio signals by continuously switching ("hopping") over various frequencies determined by a pseudo random code. To know more about it, you can refer to the ppt in the repository FHSS_intro.pdf

We've built blocks to send PM modulated waves over 8 and 64 different frequencies, according to a maximally generated pseduo random code, synchronise the codes at recieving end, and using coherent demodulation to retrieve the message.

Pre-Requisite Libraries for GNUradio :-

  1. sudo apt-get install liblog4cpp5-dev
  2. sudo apt-get install swig
  3. sudo apt-get install doxygen
  4. sudo apt-get install libcppunit-dev
  5. sudo apt-get install cppunit
  6. sudo apt-get install cppunit-dev
  7. sudo apt-get install gnuradio-dev
  8. sudo apt-get install python-sphinx

Running the code on your PC's GNUradio:-

Block Desciption :-

  1. FHSS_demod_64 : Block for FHSS and PM demodulation for 64 frequencies version

    • Parameters: Sampling Rate
    • O/P : Final message signal
    • I/P : Modulated 64 frequency hopped PM wave
  2. FHSS_mod_64 : Block for FHSS and PM modulation for 64 frequencies version

    • Parameters: Sampling Rate, Modulation Sensitivity of PM ( kp*m(t))
    • O/P : Modulated PM wave hopped over 64 frequencies
    • I/P : Message Signal
  3. FHSS_demod_8 : Block for FHSS and PM demodulation for 8 frequencies version

    • Parameters: Sampling Rate
    • O/P : Final message signal
    • I/P : Modulated 8 frequency hopped PM wave
  4. FHSS_mod_8 : Block for FHSS and PM demodulation for 8 frequencies version

    • Parameters: Sampling Rate, Modulation Sensitivity of PM ( kp*m(t))
    • O/P : Modulated PM wave hopped over 8 frequencies
    • I/P : Message Signal

GRC Files :-

You can directly run the GRC files in the repository, for some reference/example.

  1. mod_8.grc : Simple modulator and demodulator for 8 frequencies version, you can observer hopping frequencies in QT GUI sink at end of modulator and final demodulated message at end of demodulator
  2. mod_64.grc : The same modulator and demodulator but for 64 frequencies version
  3. multipath.grc : GRC file to view performance of FHSS in simulated multipath environment
  4. interference.grc : GRC file to view performance of FHSS due to in band interferance.

Troubleshooting :-

  1. Compile.sh doesn't work :- Import CMakeList.txt inside the lib folder, and change the names of .cc files to .cpp/.py wherever required. Also, add a blank file blank.cpp in libs/ folder to ensure smooth running.

  2. For including your custom made block in grc, add the path to the config file located at /etc/gnuradio/conf.d and write the path of your "build" directory in the local blocks section in the file.

Then you are good to go :)

Useful Links for reference:-