使用 SDR 掃描頻譜
# 使用 SDR 掃描頻譜
這個小單元要利用 HackRF SDR 來傳送和接收音頻資料。HackRF 可以用來發射訊號,或者可以用來接收訊號,如果既要發射又要接收,那就必須用到兩台 HackRF。另外 HackRF 的發射功率較小,雖然是無線傳輸,兩台 HackRF 之間距離也不能太長,一般在實驗室中,空間的距離大概是數公尺之間,這樣的傳輸長度應該沒有問題,不過這個距離也會受到環境配置的影響。以下為了方便實驗,我們先使用一個現成的 FM 發射器,用來發射單頻的訊號,然後使用 HackRF 來接收這個單頻訊號,這樣就可以先行驗證接收的部份是否正常。之後我們再增加一台 HackRF 來發射同樣的單頻訊號,然後看是否依然能夠正確接收。如果都沒有問題的話,那麼可以進一步嘗試調整各種不同的參數並了解其與傳輸距離之間的關係。此處應特別注意一點:各國政府對於無線電頻道的使用,都會有不同的法令規範,因此在發射訊號之前,應特別注意是否符合法令規範,特別要注意是否干擾到其他已在運作中的頻道,以免觸範相關的法令。
# FM 發射器
市面上可以買到一些車用的 FM 發射器,主要就是將音頻訊號轉換成 FM 的發射訊號,發射之後就可以使用車上的 FM 接收器來收聽,一般大約台幣幾百元就可以買到。本實驗使用以下的發射器:
這個發射器,可以直接插在手機的音頻孔,由手機來播放聲音或音樂,然後將其轉成 FM 訊號。FM 的訊號部份,其中心頻率可以有幾個不同的選擇,可在操作時即時切換。一般要將其切換到不受干擾的頻道,以得到較好的收音品質。
應該要特別注意的是,發射器所設定的頻率,其實不一定是很精確的值,通常都可能會存在一些誤差,這個誤差可能和發射器的機型,使用的時間以及設定的頻率等都有一些連帶的關係。在接收的時候,如果可以將中心頻率調整得更加精確,則可以得到更好的收音品質。
# 掃描發射頻率
我們利用這個發送器發送頻率為 1Hz 的單頻訊號,可以從 這個連結 (opens new window) 下載。
目前用來發射 FM 訊號的發送器,其設定的中心頻率為 173.1 MHz,但實際上發射的真實頻率,可能會有誤差。因此最好在接收前,先掃描一下訊號的頻譜。從程式庫中尋找 osmocom Source, QT GUI Range, QT GUI Frequency Sink 三個模組,將其連接如下:
各模組的參數依次如下:
- Sample Rate: 系統的 Sample Rate 設定為 8 MHz。以 HackRF One SDR 來說,建議的抽樣速度至少 8 MHz,但應小於 20 MHz。
- QT GUI Range: 用來調整中心頻率
- Default Value: 173e6
- Start: 172e6
- Stop: 174e6
- Step: 10e3
- osomocomm Source: 用來接收 HackRF One 的訊號
- Device Arguments: hackrf=0
- Ch0: Frequency (Hz): fc
- Ch0: RF Gain (dB): 14
- Ch0: IF Gain (dB): 32
- Ch0: BB Gain (dB): 30
- QT GUI Frequency Sink: 用來觀察頻譜訊號
- FFT Size: 256
- Grid: Yes
- Autoscale: Yes
- Average: Medium
將檔案存檔,產生模型並執行之後,會看到訊號的頻譜。拉動滑桿,讓最高點大約出現在中心 0 的位置,如下圖所示:
根據目前掃描的結果,實際上收到的 FM 訊號,其中心頻率大約是 172.41 MHz,這個值和設定的 173.1 MHz 有些許誤差,可能是因為發射器設定的頻率較高,另外也可能因為使用很久而產生的偏差。
練習