# Low-Cost Sensor Based on SDR Platforms for TETRA Signals Monitoring
## 2 Material and Methods
### Sensor Design and Implementation: Software Applications  
The software applications were designed and implemented in the free and open-source GNU Radio software development toolkit. In 2001, [PERSON] began implementing the GNU Radio project in order to provide a general framework for SDR platforms in terms of software control [29].  
Software application for data control and processing in the case of our sensor includes several modules. Some of them are made with existing signal processing blocks available in libraries of the GNU Radio toolkit, others have been written and implemented especially for our sensor needs.  
Figure 3 shows the radio interface module of the SDR platform. The module is built with existing GNU Radio blocks and it also includes: a block for displaying the spectrum (QT Frequency Sink), a block for saving IQ samples (File Sink) and a block that prepares the \(N\) samples for the purpose of FFT calculation (Stream to Vector). The vector size is given by the number of FFT calculation points (FFT_size).  
In Figure 4, the module of data logging and FFT calculation is presented. The block can be found in the GNU Radio libraries. The number of calculation points of the FFT is imposed by means of the variable FFT_size. Additionally, depending on the purpose, different types of windows can be chosen: rectangular, hamming, blackman, etc.  
Figure 2: Correspondence between the spectral lines obtained after applying FFT and the TETRA channels.  
Figure 5 emphasizes the power calculation module of the TETRA channel (Channel Power Measurement). The module was written specifically for this purpose in Python and imported into GNU Radio. Basically, this module implements the procedure presented in Section 2.2.  
In Figure 6, we show the module devoted to the selection the TETRA channel and to the displaying of its power. The module consists of the GNU Radio blocks already available.  
Figure 7 shows the Geo-Location module. This module was written specifically in Python and has the role of integrating the measurements provided by a low-cost GNSS receiver into our monitoring sensor. The reason for choosing the GNSS receiver was that it has the advantage of accessing several satellites simultaneously. This leads to an increased positioning accuracy, a decreased redundancy and an increased availability of the received positioning data, even when the field of view of satellites is partially obstructed.  
Figure 4: FFT calculation method in GNU Radio.  
Figure 5: The TETRA channel power computation module.  
Figure 3: Radio interface module to SDR platform and data saving in IQ format.  
Figure 6: TETRA channel selection and the channel power display module.  
The used GNSS receiver is able to catch signals from the GPS and GLONASS satellite constellations and manages to have a positioning accuracy of about 2.5 m. Data from the GNSS receiver are transmitted to the sensor using the NMEA-0183 protocol. The Python application interprets the Recommended Minimum Specific GNSS Data (RMC) messages and synchronizes the position with the measurements made on the TETRA signals. The data are then saved in a *.csv file type for further processing. Additionally, through the Qt QML Map block, the data are displayed on the map.