diff --git a/groundstation/auto-tune.py b/groundstation/auto-tune.py index d83e33cc..b473e96e 100644 --- a/groundstation/auto-tune.py +++ b/groundstation/auto-tune.py @@ -2,6 +2,20 @@ from rtlsdr import RtlSdr import numpy as np 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) sampling_rate = 1024e3 # 250e3 # Hz duration = 65536/sampling_rate # 1 # seconds @@ -15,7 +29,7 @@ sdr = RtlSdr() # configure device sdr.sample_rate = sampling_rate # 250e3 # 2.4e6 -center_frequency = 434.8e6 +#center_frequency = 434.8e6 sdr.center_freq = center_frequency sdr.gain = 4 sdr.direct_sampling = False @@ -39,43 +53,44 @@ positive_frequencies_indices = np.where(frequencies >= 0) positive_frequencies = frequencies[positive_frequencies_indices] amplitude_spectrum = 2/n * np.abs(fft_result[positive_frequencies_indices]) # Normalize for amplitude -# Plotting the results -plt.figure(figsize=(12, 6)) - -plt.subplot(1, 2, 1) -plt.plot(t, signal) -plt.title('Time Domain Signal') -plt.xlabel('Time (s)') -plt.ylabel('Amplitude') - -plt.subplot(1, 2, 2) -plt.stem(positive_frequencies, amplitude_spectrum, markerfmt=" ", basefmt="-b") -plt.title('Frequency Domain (FFT)') -plt.xlabel('Frequency (Hz)') -plt.ylabel('Amplitude') -plt.grid(True) - -plt.tight_layout() -plt.show() - -print(amplitude_spectrum) +if (graph == 'y'): + # Plotting the results + plt.figure(figsize=(12, 6)) + + plt.subplot(1, 2, 1) + plt.plot(t, signal) + plt.title('Time Domain Signal') + plt.xlabel('Time (s)') + plt.ylabel('Amplitude') + + plt.subplot(1, 2, 2) + plt.stem(positive_frequencies, amplitude_spectrum, markerfmt=" ", basefmt="-b") + plt.title('Frequency Domain (FFT)') + plt.xlabel('Frequency (Hz)') + plt.ylabel('Amplitude') + plt.grid(True) + + plt.tight_layout() + plt.show() + +# print(amplitude_spectrum) x = amplitude_spectrum -print(x) +# print(x) min_value = min(x) max_value = max(x) #freq_min = np.argmax(min_value) -print(np.argmax(x)) -print(np.argmax(x)*(150e3 - 10e3)/(9770 - 709)) -print(sampling_rate) -print(center_frequency) +# print(np.argmax(x)) +# print(np.argmax(x)*(150e3 - 10e3)/(9770 - 709)) +# print(sampling_rate) +# print(center_frequency) offset = (np.argmax(x)*(150e3 - 10e3)/(9770 - 709)) 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(min_value) -print(max_value) +#print(min_value) +#print(max_value)