Projects you can run tonight

Each project is small enough to finish in an evening, and complete enough to actually run: every script executes end to end on simulated or recorded signals in under 15 minutes, with a checklist of what to look for when it works. A radio is optional.

Beginner

A QPSK modem with a measured BER curve

Build a QPSK transmitter and receiver in NumPy with root-raised-cosine pulse shaping, an AWGN channel and a matched filter, then measure the bit error rate from 0 to 10 dB Eb/N0 against theory.

Laptop CPU (macOS, Linux or Windows), Python and NumPy, under 15 seconds · about 2 h · python, numpy
Intermediate

A headless GNU Radio FM receiver tested on synthetic IQ

Generate an FM test signal in NumPy, save it as SigMF, demodulate it with a headless GNU Radio 3.10 flowgraph and check the recovered tone frequency, deviation and audio SNR in code.

Laptop CPU (macOS, Linux or Windows), GNU Radio 3.10 and NumPy, under 5 seconds · about 3 h · python, numpy, gnuradio, soapysdr
Intermediate

A LoRaWAN link budget and coverage map calculator

Compute EU868 LoRaWAN uplink sensitivity, time on air, duty-cycle limits and range per spreading factor from Semtech, LoRa Alliance, ITU-R and 3GPP sources, then map coverage around one gateway in NumPy.

Laptop CPU (macOS, Linux or Windows), Python and NumPy, under 5 seconds · about 3 h · python, numpy
Intermediate

An OFDM link with pilot-based channel estimation

Build a 64-subcarrier OFDM link in NumPy over a multipath Rayleigh channel, estimate the channel from comb pilots by least squares, interpolate, equalise with one tap per subcarrier and measure MSE and BER.

Laptop CPU (macOS, Linux or Windows), Python and NumPy, under 10 seconds · about 3 h · python, numpy