Generating an emergency signal#
Learning goals
Understand how we process signals in the frequency domain
Explain typical modulation and coding methods
Analyze a link budget for a given digital communication link
Introductory problem
After found out the lost signal and find the solution for transmitting the temperature information as an analog signal very silly. This is a waste of bandwidth! you think.
You should design and implement a prototype of a system that sends regularly temperature data. Questions to think about:
What will be the range of the signals?
Which and how much data should be sent per device?
What are the bandwidth requirements?
How many devices do we expect on the field? Is interference an issue?
What happens if a data packet is lost?
Which frequency range are we going to use?
Which communication protocols can we use?
Where will be the data received and where will it be forwarded and stored?
Preparation#
Preparation could take 2 hours.
Go through Flowgraph fundamentals in GNU Radio tutorials
Read sections 2.1 and 2.2 of Telemedicine Technologies by Fong et.al.
In-class activities#
Transmitting an analog signal#
Let us start simple by feeding the signal directly to the SDR.
Tip
If you are in a class and do not want to avoid interfering other students, use the loopback cable as follows:

Run the following graph with your SDR.
Fig. 3 Flow graph with frequency spectrum and waterfall diagram. gnuradio/transceiver_analog.grc
. You also have to download gnuradio/temperature.wav
.#
Two type of PlutoSDR blocks are included. PlutoSDR Sink
uses the native libiio
library and Soapy PlutoSDR sink
uses SoapySDR
. SoapySDR
uses libiio
and is an abstraction layer for various SDR devices.
Exercise 6
What does the flow graph do?
What does
Float To Complex
do?What does
Rational Resampler
do?What does
Complex to Mag
do?Run the flow graph and change
wav_gain
,tx_gain
andrx_gain
. What happens?Optional: Is the RF signal that is transmitted by the antenna an AM signal? For the detailed formula of AM refer to the \(y(t)\) shown here.
Exercise 7
Now, try with antennas:
First try to receive the signal you transmit. How do
wav_gain
,tx_gain
andrx_gain
affect the signal you hear?Put your device closer to the neighbor’s device. Do you observe any interference? If yes:
where do you see the interference?
how can you reduce the interference?
Optional: Try to create a one-way communication with your neighbor by deactivating one of the tx or rx blocks both on your and your neighbor’s side. Put the devices side by side. Pick the minimum gain values which is sufficient for communication. Now, replace the antenna with a longer one. What do you observe?
Details of AM is out of the scope of this course. If you are interested, refer to this video by Tall Paul.
Exercise 8
Disable the PlutoSDR blocks and replace emulate their functionality with other (non-device) blocks.
Hint
Use a Frequency Shift
component.
Transmitting a digital signal#
Run the following flow graph:
Fig. 4 Flow graph that transmits receives encoded temperature signals using digital modulation. gnuradio/temperature_modulation_digital.grc
.#
What does
Noise Source
do? How is this kind of noise called?What does a
Constellation Sink
visualize?What do you notice in the constellation diagrams when you increase
noise_percent
?Bottom right
Time Sink
has three inputs. What do they visualize?Change the modulation technique to QPSK by:
disabling one and activating another
Constellation object
.also change
bits_per_symbol
to an appropriate value.optional: change the
delay
so that you don’t get any error.
Which property of the system changes if you change the modulation technique?
Packet-based communication#
In computer networking, we typically enclose the data that we want to transmit in a packet. The following flow graph:
Generates data with a number of bytes
Generates a signature for the data called CRC (cyclic redundancy check)
Assembles the following in a packet in order:
Header – called access code in the flow graph (4 bytes)
the length of the transmitted data in bytes (two bytes); repeated two times (2 * 2 bytes = 4)
data
CRC (4 bytes)
Modulates the packet bits
Demodulates and extracts bits again
Searches for the header, if it is found, it extracts the
length
and readslength
bytes.Checks CRC. If correct, then prints the the content to the terminal.
Fig. 5 Flow graph that represents packet-based communication. gnuradio/packet_based_communication.grc
.#
Download and run the flow graph. You should see two time sinks.
Both time sinks show different
packet_len: ...
s. Do these numbers make sense to you?What could be the advantage of
a header (access code)?
CRC?