|
|
|
@ -2,6 +2,20 @@ from rtlsdr import RtlSdr
|
|
|
|
import numpy as np
|
|
|
|
import numpy as np
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
|
|
graph = 'n'
|
|
|
|
|
|
|
|
center_frequency = 434.9e6
|
|
|
|
|
|
|
|
if (len(sys.argv)) > 0:
|
|
|
|
|
|
|
|
print("There are arguments!")
|
|
|
|
|
|
|
|
center_frequency = float(sys.argv[1])
|
|
|
|
|
|
|
|
if (center_frequency == 0):
|
|
|
|
|
|
|
|
center_frequency = 434.9e6
|
|
|
|
|
|
|
|
if (len(sys.argv)) > 1:
|
|
|
|
|
|
|
|
print("There are more arguments")
|
|
|
|
|
|
|
|
if (sys.argv[2] == 'g') or (sys.argv[2] == '-g'):
|
|
|
|
|
|
|
|
graph = 'y'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create a sample signal (sum of two sine waves)
|
|
|
|
# Create a sample signal (sum of two sine waves)
|
|
|
|
sampling_rate = 1024e3 # 250e3 # Hz
|
|
|
|
sampling_rate = 1024e3 # 250e3 # Hz
|
|
|
|
duration = 65536/sampling_rate # 1 # seconds
|
|
|
|
duration = 65536/sampling_rate # 1 # seconds
|
|
|
|
@ -15,7 +29,7 @@ sdr = RtlSdr()
|
|
|
|
|
|
|
|
|
|
|
|
# configure device
|
|
|
|
# configure device
|
|
|
|
sdr.sample_rate = sampling_rate # 250e3 # 2.4e6
|
|
|
|
sdr.sample_rate = sampling_rate # 250e3 # 2.4e6
|
|
|
|
center_frequency = 434.8e6
|
|
|
|
#center_frequency = 434.8e6
|
|
|
|
sdr.center_freq = center_frequency
|
|
|
|
sdr.center_freq = center_frequency
|
|
|
|
sdr.gain = 4
|
|
|
|
sdr.gain = 4
|
|
|
|
sdr.direct_sampling = False
|
|
|
|
sdr.direct_sampling = False
|
|
|
|
@ -39,43 +53,44 @@ positive_frequencies_indices = np.where(frequencies >= 0)
|
|
|
|
positive_frequencies = frequencies[positive_frequencies_indices]
|
|
|
|
positive_frequencies = frequencies[positive_frequencies_indices]
|
|
|
|
amplitude_spectrum = 2/n * np.abs(fft_result[positive_frequencies_indices]) # Normalize for amplitude
|
|
|
|
amplitude_spectrum = 2/n * np.abs(fft_result[positive_frequencies_indices]) # Normalize for amplitude
|
|
|
|
|
|
|
|
|
|
|
|
# Plotting the results
|
|
|
|
if (graph == 'y'):
|
|
|
|
plt.figure(figsize=(12, 6))
|
|
|
|
# Plotting the results
|
|
|
|
|
|
|
|
plt.figure(figsize=(12, 6))
|
|
|
|
plt.subplot(1, 2, 1)
|
|
|
|
|
|
|
|
plt.plot(t, signal)
|
|
|
|
plt.subplot(1, 2, 1)
|
|
|
|
plt.title('Time Domain Signal')
|
|
|
|
plt.plot(t, signal)
|
|
|
|
plt.xlabel('Time (s)')
|
|
|
|
plt.title('Time Domain Signal')
|
|
|
|
plt.ylabel('Amplitude')
|
|
|
|
plt.xlabel('Time (s)')
|
|
|
|
|
|
|
|
plt.ylabel('Amplitude')
|
|
|
|
plt.subplot(1, 2, 2)
|
|
|
|
|
|
|
|
plt.stem(positive_frequencies, amplitude_spectrum, markerfmt=" ", basefmt="-b")
|
|
|
|
plt.subplot(1, 2, 2)
|
|
|
|
plt.title('Frequency Domain (FFT)')
|
|
|
|
plt.stem(positive_frequencies, amplitude_spectrum, markerfmt=" ", basefmt="-b")
|
|
|
|
plt.xlabel('Frequency (Hz)')
|
|
|
|
plt.title('Frequency Domain (FFT)')
|
|
|
|
plt.ylabel('Amplitude')
|
|
|
|
plt.xlabel('Frequency (Hz)')
|
|
|
|
plt.grid(True)
|
|
|
|
plt.ylabel('Amplitude')
|
|
|
|
|
|
|
|
plt.grid(True)
|
|
|
|
plt.tight_layout()
|
|
|
|
|
|
|
|
plt.show()
|
|
|
|
plt.tight_layout()
|
|
|
|
|
|
|
|
plt.show()
|
|
|
|
print(amplitude_spectrum)
|
|
|
|
|
|
|
|
|
|
|
|
# print(amplitude_spectrum)
|
|
|
|
x = amplitude_spectrum
|
|
|
|
x = amplitude_spectrum
|
|
|
|
print(x)
|
|
|
|
# print(x)
|
|
|
|
min_value = min(x)
|
|
|
|
min_value = min(x)
|
|
|
|
max_value = max(x)
|
|
|
|
max_value = max(x)
|
|
|
|
|
|
|
|
|
|
|
|
#freq_min = np.argmax(min_value)
|
|
|
|
#freq_min = np.argmax(min_value)
|
|
|
|
print(np.argmax(x))
|
|
|
|
# print(np.argmax(x))
|
|
|
|
print(np.argmax(x)*(150e3 - 10e3)/(9770 - 709))
|
|
|
|
# print(np.argmax(x)*(150e3 - 10e3)/(9770 - 709))
|
|
|
|
print(sampling_rate)
|
|
|
|
# print(sampling_rate)
|
|
|
|
print(center_frequency)
|
|
|
|
# print(center_frequency)
|
|
|
|
|
|
|
|
|
|
|
|
offset = (np.argmax(x)*(150e3 - 10e3)/(9770 - 709))
|
|
|
|
offset = (np.argmax(x)*(150e3 - 10e3)/(9770 - 709))
|
|
|
|
freq_max = center_frequency + offset
|
|
|
|
freq_max = center_frequency + offset
|
|
|
|
|
|
|
|
|
|
|
|
print(f"The maximum signal is {max_value} at frequency {freq_max}")
|
|
|
|
print(f" {freq_max} {max_value}")
|
|
|
|
#print(f"The minimum signal is {min_value} at frequency {freq_min}")
|
|
|
|
#print(f"The minimum signal is {min_value} at frequency {freq_min}")
|
|
|
|
|
|
|
|
|
|
|
|
print(min_value)
|
|
|
|
#print(min_value)
|
|
|
|
print(max_value)
|
|
|
|
#print(max_value)
|
|
|
|
|
|
|
|
|
|
|
|
|