יום שלישי, 24 בספטמבר 2024

SDR - תכנות

 תכנות SDR (Software Defined Radio) הוא תחום המאפשר שליטה ברכיבי תקשורת באמצעות תוכנה במקום באמצעות חומרה ייעודית. להלן דוגמה פשוטה לשימוש ב-SDR עם Python, תוך שימוש בספרייה כמו `pyrtlsdr`, אשר מאפשרת לתקשר עם מקלטי RTL-SDR פופולריים.


### דרישות מקדימות:

1. התקן מקלט RTL-SDR.

2. התקנת התוכנה: ניתן להתקין את חבילת `pyrtlsdr` עם pip:

   ```bash

   pip install pyrtlsdr

   ```


### דוגמת קוד:

הקוד הבא מבצע קליטת אותות בתדר מסוים ומציג את הספקטרום של האות.


```python

from rtlsdr import RtlSdr

import numpy as np

import matplotlib.pyplot as plt


# יצירת אובייקט של המקלט SDR

sdr = RtlSdr()


# הגדרות המקלט

sdr.sample_rate = 2.048e6  # קצב דגימה

sdr.center_freq = 100e6    # תדר מרכזי 100MHz (תחום רדיו FM)

sdr.gain = 'auto'          # הגברה אוטומטית


# קריאת דגימות

samples = sdr.read_samples(256*1024)


# סגירת המקלט לאחר קריאת הדגימות

sdr.close()


# חישוב ספקטרום האות

power_spectrum = np.abs(np.fft.fftshift(np.fft.fft(samples)))**2


# ציר התדרים

freqs = np.fft.fftshift(np.fft.fftfreq(len(samples), 1/sdr.sample_rate))


# שרטוט הספקטרום

plt.figure(figsize=(10, 6))

plt.plot(freqs / 1e6, 10 * np.log10(power_spectrum))

plt.title('Power Spectrum')

plt.xlabel('Frequency (MHz)')

plt.ylabel('Power (dB)')

plt.show()

```


### הסבר:

- `RtlSdr()` יוצר חיבור למקלט SDR.

- התדר המרכזי מוגדר ל-100MHz, שהוא תחום שידורי FM.

- הקריאה `read_samples()` מקבלת את הדגימות מהמכשיר ומבצעת ניתוח ספקטרלי באמצעות FFT (Fast Fourier Transform).

- התוצאה מוצגת בגרף שמראה את עוצמת השידורים בתדרים שונים.


#### הערות:

1. יש לוודא שהדרייבר הנכון מותקן עבור המקלט RTL-SDR שלך.

2. ייתכן ויהיה צורך להתקין חבילות נוספות כמו `numpy` ו-`matplotlib`.


זו דוגמה פשוטה למתחילים.




עוד דוגמא


עבור רכיבי רדיו SDR (Software Defined Radio), ניתן להשתמש בספריית Python בשם [**PySDR**](https://pysdr.org/), או בספריות כמו [**RTL-SDR**](https://github.com/roger-/pyrtlsdr) המתאימה לרכיבים פופולריים, לדוגמה RTL-SDR. כך ניתן לקלוט, לעבד ולהציג נתוני רדיו מהמכשיר.


הנה דוגמה בסיסית לשימוש ב-`pyrtlsdr`:


```python

# ייבוא הספרייה המתאימה

from rtlsdr import RtlSdr

import numpy as np

import matplotlib.pyplot as plt


# הגדרת רכיב ה-SDR

sdr = RtlSdr()


# קביעת תדרים והגדרות אחרות

sdr.sample_rate = 2.4e6    # קצב דגימה

sdr.center_freq = 100e6    # תדר מרכזי (לדוגמה, 100MHz)

sdr.gain = 'auto'          # רווח (אפשר לשים גם ערך קבוע)


# קריאת דגימות מהרדיו

samples = sdr.read_samples(256*1024)  # קריאה של מספר דגימות


# גרף ספקטרום

plt.figure(figsize=(10, 6))

plt.psd(samples, NFFT=1024, Fs=sdr.sample_rate / 1e6, Fc=sdr.center_freq / 1e6)

plt.xlabel('תדר (MHz)')

plt.ylabel('עוצמה (dB)')

plt.title('Spektrum Analysis')

plt.show()


# ניקוי ושחרור המשאב

sdr.close()

```


### הסבר על הקוד:

1. **יבוא ספריות** - הספריות `rtlsdr` לניהול מכשיר ה-SDR ו-`numpy` ו-`matplotlib` לעיבוד והצגת המידע.

2. **הגדרת רכיב ה-SDR** - הגדרת רכיב ה-SDR עם קצב דגימה, תדר מרכזי ורווח.

3. **קריאת דגימות** - קריאת נתונים מה-SDR למטרת ניתוח.

4. **הצגת ספקטרום** - הצגת ספקטרום תדר באמצעות `matplotlib`.

5. **סגירה** - שחרור רכיב ה-SDR לאחר השימוש.


### דרישות

- להתקנת `pyrtlsdr`: ניתן להריץ `pip install pyrtlsdr`.

אין תגובות:

הוסף רשומת תגובה

SDR B205 דרך Raspberry Pi 5

  מצוין, הנה פתרון שמתאים בדיוק לצרכים שלך: ✅ ארכיטקטורת שליטה מרחוק ב-SDR B205 דרך Raspberry Pi 5 🧱 רכיבים עיקריים Raspberry Pi 5 – משמש ...