史上最簡單平宜 iGate 方案,Direwolf + SDR 入門應用

 

direwolf_cover

前言

近月從管理平台發現不少舊文的溜灠率奇高,其中多和 TNC 有關;估計是新一批 Ham 蠢蠢欲試。

有人試,就是這個 blog 的動力。不過可行方案太多,實不能續一測試評頭品足。

Anyway,現在介紹一個易設的 iGate 方案,以我的標準來說,應是最簡單的方案了,原因是無需銲接,MCU 編程等。

這是在 Raspberry Pi 上運行 DireWolf + SDR 手指方案。

 

APRS 入門之路

ham 入門,遇到的首個問題是要找到志同道合的人交流、測試。發射無人接收與回應是令人沮喪的。

語音方面,不外 in band,到中繼嗌 CQ,但回應也不是必然的。

APRS 方面,起一個私家陣較適合,不論陰晴,在家隨時就可測試;想到街外試,也只需放條天線到窗邊就 ok,不假外求。

 

Why Direwolf + SDR

對初學者來說:

  • Direwolf 作者很用心做了很詳細的說明書,只需跟著照做一晚時間就搞掂,無需四處張鑼 guideline ,反覆測試。
  • Direwolf 功能強大,一個 solution 包含 tracker iGATE digipeater 等等功能。可專注一個 solution 玩法,繼而成精。
  • Rpi + SDR 不需要外配接收機,成本最平。
  • 這是一個 Rx only iGate,純接收的 iGate;設定成功率極高。與可發射的相比,可發射硬件的設定是和 Echolink 一樣的。不過新手遇到問題往往是 sound dongle 與接收機的接線,音量配搭。這沒有固定統一的方案可用,只能各施各法。
  • 與其他 TNC 方案相比,Direwolf + SDR 手指方案無需銲接,MCU 編程。這些對不善於硬件處理同好更方便。這是軟件年代的好處。
  • 與其他類似功能的 Linux packagemultimon-ng 相比,Direworlf 優化了在 Rpi 的運行。自稱解碼率也相當高。

 對我來說:

  • Direwolf 支援 APRS 9600。能整合 APRS 1200/9600 應用是我的心願,雖前路十分漫長。
  • Direwolf 支援 APRS telemetry。 整合後應可將 AD 數值回傳,功能和商用品看齊。

 

硬件預備

降低成本,我用的是舊款的 Raspberry Model BOS 則是最新的 Jessie。當然你用最新的 Rpi 2/3 會更爽。

rpi2_direwolf

 

SDR 手指,以前實驗用開的。

整個方案成本約港幣 $300 而已。對比自製 TNC 的成本,銲接人工時間;或商品化的 Tracker/iGate 的售價約 $700 (未計運費);這個價錢既無敵,學到的更多。

 

軟件設置

最新的 Jessie 預設的是登入 X windows GUI 介面,是我們不需的。我們到 Preferences 一欄,更改設定預設為 CLI (文字模式)。其他設定如鍵盤,time zone 等也請設定好。

gui_1

 

gui_2

 

GPU memory 下調到 16 以節省記憶體。之後請 reboot

reboot 登入後,我們先剷除一個用不著又大 sizepackage :

sudo apt-get purge wolfram-engine

這樣就釋放了 640M 了。對一張幾 G 容量的 SD card 來說,這是很寶貴的資源。

 

安裝準備

安裝前先將 SDR 手指接上 RpiUSB Port

另先在自己的電腦下載 Direwolf 完整檔,詳閱 folder doc 內的說明書。這裡只講皮毛速成的東西,所以一定看說明書。

官網連結
https://github.com/wb2osz/direwolf

重點必閱兩個 pdf 文件
Raspberry-Pi-APRS
Raspberry-Pi-SDR-IGate

第一個文件我們這個 project 只需 6-12 頁。
第二個文件只三頁。

先參考第一份文件,由第六頁開始。

 

 

安裝步驟

check 一下 bundlegcc 是否支援 floating point
gcc –v

這會回傳一大堆參數,其以應有 –with-fpu=vfp –with-float-hard

例牌動作,更新 Rpisoftware,firmware
sudo apt-get update && sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update

然後 reboot
sudo reboot

刪除附送的音效 package
sudo apt-get remove –purge pulseaudio
sudo apt-get autoremove
rm -rf /home/pi/.pulse

  reboot
sudo reboot

1.3,1.4 章節有關 IP6 設定和備份可不理。原因 IP6 一般家用環境用不著,這個方案的設定也很簡單,失敗再來也是只一晚半晚的時間。

安裝所需的 sound library
sudo apt-get install libasound2-dev

下載 DireWolf 源碼
cd ~
git clone
https://www.github.com/wb2osz/direwolf
cd direwolf

2.3 章節 有關 hamlib 無需安裝。

2.4 章節是用來作 tracker 的設定。這裡也用不著。有機會另文再談。所以直跳 2.5

編繹與安裝 DireWolf

cd ~/direwolf
make
sudo make install
make install-rpi

make install-conf

DireWolf 安裝完成。可試執行之

cd ~
direwolf

由於我們還未設定相關的音頻輸入,所以會見到錯誤訊息,不要緊,跟著就完成。

這之後就是參考 Raspberry-Pi-SDR-IGate 了。

 

安裝 SDR 所需的 library

sudo apt-get install cmake build-essential libusb-1.0-0-dev

下載,編繹 SDR driver
cd ~
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON
make
sudo make install
sudo ldconfig

所有安裝動作完成。

留意,說明書內所提到的 home directory/home/pi 。

原文說 sdr.conf/usr/share/doc/direwolf/examples。但實測發現 sdr.conf 己在 home directory

file_list

 

編輯這個 sdr.conf 檔:
nano sdr.conf

將兩處 xxx 改為你的業餘電台呼號連 SSID,以我的測試平台為例是 VR2XKP-15

123456 改為你的 passcode

IGSERVER 後的 server 改為亞洲的 asia.aprs2.net

ctrl-x ,選 y 儲存。

為求安心,做我最善長的動作,又 reboot 一下。

 

測試

登入後,執行以下指令呼叫 direwolf 開工。

rtl_fm -f 144.64M – | direwolf -c sdr.conf -r 24000 -D 1 –

144.640M144.640MHz。可按自身環境需要調到其他頻道。

24000sample rate 24000。留意說明書有部份章節是 44100。這裡我們無需用到這樣高的 sample rate

direwolf_run

留意中段的頻率顯示為144892000Hz,而不是144.640MHz。原因不明

 

我用 FTM-350 作為 tracker,發射一個 beacon,不需一會就能顯示在 aprs.fi

direwolf_client

下方顯示接收到的 Packet 內容

 

xkp-6_direwolf

VR2XKP-6 成功顯示在 aprs.fi 地圖上

一個簡單 Rx-iGate 就完成了。然而這簡單歸簡單,他也不會將自身坐標 plotaprs.fi 地圖上。

先按 ctrl + c 離開。

參考 direwolf.confiGate 一欄,將接收用的一行
的例子移除前綴 # 號,加進 sdr.conf 即可。如想加進comment,也是照辦煮碗的在後面加進 comment=”xxxxxxx”

PBEACON sendto=IG delay=0:30 every=60:00 symbol=”igate” overlay=R lat=22^29.14N long=114^20.83E comment=”test”

需一行完成。

經緯坐標也是新 ham 經常混淆的參數,因有不同表示規格。可到 http://netvicious.com/gps/ 檢索你的位置,就可得出各規格的經緯坐標值。

這裡用度+小數;但例子中也有 UTM 格式的,用那款格式是悉隨專便。

sdr_conf

加進 PBEAON 一欄後,再運行 direwolf,就可顯示 iGate 預設位置

為保私穩,我們可將位置設到家附近的公園,休憩地方,馬路等公眾地方即可。

 

direwolf_xkp6

搞掂。兩機的坐標均為 dummy data。我都希望有咁既 coverage

 

調校

如本 blog SDR 文章內提到,這些廉價 SDR 手指長期運作會發熱,繼而發生頻率漂移。這是理論。但就我過住的測試,盡管天時暑熱下運作幾小時,也不會因此而影響接收 (或影響咗我都唔知)。

畢竟,是在 VHF 接收 1200 AFSK 而已,要求不高的。再者我們的 iGate 放在室內環境,温差也不太。

但如很介意,我會建議在 24×7 運行後一兩個星期後測試是否誤碼很多,再行調校會較實際。過熱頻率漂移不會無限遠,兩星期要漂都漂盡。正常無影響的也無需多此一舉。

Raspberry-Pi-SDR-IGate 最後章節內提到的調校手續,是以 NOAA-1 衛星訊號為基準。但這顆衛星既遠離香港,以衛星作為基準對初學者接收也很有難度。

 

noaa1

 

我們可參考 KK4NXA 放到網上的 Creating an APRS iGate Using RTL-SDRPDF 文檔。第 10,11 頁。簡單來說,是以 GSM 手提電話頻道作參考,計算出誤差並記下。

 

What’s Next

對新 Ham 來說,想進入 APRS 世界裡,這是第一步。
熟習操作後,可進一步設定有發射功能的 iGate
熟能生巧,有了一 set 完整的 APRS 設備後,更多新東西等著你探索

For me :
DireWolf
著眼於 APRS 9600 運用。現成東西就可起個 APRS 9600 設備出來,I like it

APRS 9600 的發射配置,應也和舊文 D-Star iGate 的接線一樣,又是現成的東西。唔試對自己唔住。

其他附帶功能也很有趣,值得測試一下。

 

硬件 TNC 等設備的將來

軟件、互聯網年代下,新軟解方案只會越趨完善。我認為硬件 TNC 將續漸退下舞台。硬件 TNC 的剩餘價值在於供電就運行,無電就停機的簡單邏輯上;較適合用於電源唔穩定的惡劣環境。

這是電腦和 Rpi 不能及的,時停電對 Hard disk,讀寫中的 SD card 是致命。

 

總結

藏器於身,即時使用。用來形容這個方案最適合不過。

 

2016-Aug

這是 2016 年八月的 iGate 地圖。 新 Ham 可會留下你的足跡

 

下期上映

是久違了的傳感器應用系列,需環境所限不太成功,但也可介紹一下新玩意。

Posted in APRS, SDR | Tagged , , , , | 1 Comment

淺談 GPS 的 Channel 意義

 

my_gps

接觸 APRS 咁耐,因本文為所用過的 GPS 大合照。

左為第一,二代的 SONY IPS-5000,5200。

右為最新的豉油碟。未有豉油碟之前,反應最快的是 EPSON 模組。

前言

曾經有訪客留言希望講解一些 GPS 的模塊 spec。當時只能留言回覆簡單講一下。原因講 spec 係好沉悶,很難成文。

近排可能 Yaesu 知道我的難處,終給我借題發揮一下…,感激。

 

Yaesu  FT 旗艦機

Yaesu 過往手提旗艦機款配備 GPSAPRS 一體化應用,不是新聞。重點係個內/外置 GPS 效果強差人意,只能說是聊勝於無。

我沒用過,但只要你身邊有人配備,實難聽到好說話。

現在新出的型號,強調起用了號稱支援 66 頻道 ( 66 channel ) 的 GPS 模塊,望一洗頹風。

yaesu_ch66

多款新機自稱搭載  improved 66 ch GPS receiver included,那是否承認舊形號的 GPS 唔多掂

 

究竟是當年技術不濟而飲恨收場,還是當用家係水魚,錯誤評估用家水平與要求

作為一個做過下電子既人,我認為是後者。原因簡單:用較差的的模塊,成本較平;cut costs 之餘又可賺多點利潤,老細最鐘意。

但買得旗艦機款的 Ham 多對質素有要求:錢已附出了不少,唔該你俾返同等 level 的貨色給我,咁就出事。

 

TH-D72GPS

將 GPS 塞進主機內,不需關鍵技術。只要模塊夠細就 ok

Picture courtesy of  http://www.gad.net/Blog/2015/11/28/fixing-a-loose-knob-on-a-kenwood-th-d72a/

 

Channel 多寡的迷思

在我考了個 Ham 牌後,很快就醉心 APRS 的研究,那理所當然也需了解 GPS 的系統和各種特性。當年資訊不如現在發達,Internet 剛起步,能 dialup BBS 已經很勵害了。

我那時對 channel 的理解,很自然用字面去解釋,channel 者,頻道也。接收到一個衛星訊號就一個 channel。這解釋一直自我感覺良好很多年。

直至 Internet 年代,能上網溜灠各 GPS 生產商的規格表以至訂購回來。就發現:嗯,點解有的 GPS 號稱支援三十多條 ch

GPS 系統,即美國的全球衛星定位系統。由 24+8 顆衛星組成 (24 顆處於工作狀態,另 8 顆輪休處於備用/維護狀態)。

 

gps-const

Picture courtesy of  http://dannyblair.uwinnipeg.ca/gps.htm

 

地球是圓的,人站在球面上的一點;頂多見到 12 顆衛星(另12 顆在球的另一面)。要定位,收到 2-4 顆衛星的有效訊號即可。多 channel 任君選擇,你可在收到的 ch 中選最強的三顆就最好。

但為什麼要支援到三十多條 ch,比整個系統的衛星數目還多呢?

工程角度上看,是不會做沒用的東西。但上網查找資料,絕大部份的解釋也和我當初的見解一樣,即接收到一個 satellite 訊號就一個 channel

當初可能是對,但用在現時肯定不是合理的解釋。

終於靠 Google 大神找到一個較合理的解釋:

所有 GPS 衛星均在同頻發射訊號,理論上會發生訊號重疊現象。

那接收端 (即 GPS 接收模組) 如何分辦和解碼呢?

首先,每顆 GPS 衛星每 1mS 會發射出一段 1024 bit 訊息。這段訊息由衛星內的 Pseudo Random Number (PRN)產生器產生,而各 GPS 衛星的 PRN code 是不同的,情況就如每衛星的獨有序號。

接收端在 GPS 頻道理論上可收到所有 GPS 衛星的訊號。她要進行 Correlation 去處理、分辦出較強訊號衛星的序號。

方法是以特定序列代表某一衛星序號,將之乘以該收到的1024 bit 訊息;如兩者相符即找到相應的衛星序號。透過這種方法,我們可得出正確的衛星序列和時序上的同步。

相反,如結果不符,則將該 1024bit shift 1 bit 再試,直到整個 1023 bit 試完才可確認這段訊息不屬於任何一顆 GPS 衛星。

然後重覆整個 Correlation 程序。

好,每 1mS 發出訊息,即每秒 1000 次。1023 bit (第 1 round 一定要做,所以 1024 – 1 = 1023 ),理論上最多一秒多的的就可解到一條訊息,不論該條訊息有效與否。

GPS 衛星有其獨特的 PRN code,即共最多 32 組需要配對。那即是說最耐可花 32sec 去求衛星的序號。

然而,GPS 衛星與接收端也各自運行,所產生的 Doppler shift 隨時可高達 +/-10kHz。這也生了接收端隨時需在 40 組預設 shift 了的頻道上執行 Correlation 程序。

那最壞情況是掃完這 40 組頻才知解不到衛星序號。

但假如接收端可同時處理兩組 Correlation 程序,就可同一時間搜尋兩個 GPS 衛星序號,理論上最久搜尋時間就可減半了;並如此類推。

這個同時處理幾組 Correlation 程序能力,籠統來說就是Channel66 channel,即同時可處理 66Correlation 程序。

假設在市區陸上行駛途中,已用 4 顆衛星作 3D fix 定位,有更強的解碼能力,可以將剩餘的 Correlation 程序繼續尋找可用的備用衛星序號並記存在星曆中,那就可長期在 3D fix 模式下作較準的定位了。

上文簡釋自  http://electronics.stackexchange.com/questions/11884/how-many-gps-channels-make-sense

 

總結

When in doubt,find it out。活在資訊自由的國度裡,就要享受資訊自由的好處。 閱讀 GPS 接收器的規格,除靈敏度外,還看 Channel 參數。

Posted in APRS, Research | Tagged , , , | Leave a comment