End sem 7; week 2 winter session 2025
This commit is contained in:
58
7th-Semester-Fall-2024/ECOMMS/final-project/gfsk_demod.py
Normal file
58
7th-Semester-Fall-2024/ECOMMS/final-project/gfsk_demod.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import numpy as np
|
||||
import scipy as sp
|
||||
from threading import Thread
|
||||
import time
|
||||
import queue
|
||||
|
||||
import matplotlib.animation as animation
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
from rtlsdr import RtlSdr
|
||||
|
||||
import dsp
|
||||
|
||||
|
||||
class GFSKDemod:
|
||||
def __init__(self, sdr:RtlSdr, baud_rate:int=9600, num_samples:int=512):
|
||||
self.sdr = sdr
|
||||
self.baud_rate = baud_rate
|
||||
self.num_samples = num_samples
|
||||
self.fig, self.ax = plt.subplots()
|
||||
|
||||
self.duration = self.num_samples/self.sdr.sample_rate
|
||||
|
||||
# Demodulate an update the sound buffer
|
||||
def _demod(self, samples):
|
||||
message = dsp.quad_demod(samples)
|
||||
message = dsp.lowpass(message, 16E3, self.sdr.sample_rate)
|
||||
#message /= np.max(np.abs(message))
|
||||
#message = message.astype(np.float32)
|
||||
time = len(message)*self.sdr.sample_rate
|
||||
t = np.linspace(0,time,len(message))
|
||||
return t, message
|
||||
|
||||
|
||||
# Begin reading and demodulation
|
||||
async def start(self):
|
||||
plt.ion()
|
||||
plt.show()
|
||||
|
||||
async for samples in self.sdr.stream(self.num_samples):
|
||||
self.ax.clear()
|
||||
t, message = self._demod(samples)
|
||||
|
||||
#num_samples = int(len(message)*self.resample_rate/self.sdr.sample_rate)
|
||||
#message = sp.signal.resample(message, num_samples)
|
||||
|
||||
#t = np.linspace(0,1,len(message))*t[:-1]
|
||||
#self.ax.plot(t,message)
|
||||
#spectrum = np.abs(sp.fft.fftshift(sp.fft.fft(samples)))**2
|
||||
#spectrum_db = dsp.db(spectrum)
|
||||
#self.ax.plot(spectrum_db)
|
||||
|
||||
self.fig.canvas.draw()
|
||||
self.fig.canvas.flush_events()
|
||||
|
||||
|
||||
def stop(self):
|
||||
self.sdr.cancel_read_async()
|
||||
Reference in New Issue
Block a user