前言
Dantracker 是一個數年前 APRS 界頗為出名的 open source tracker 方案,介面無異於商品級的設備;一些自製 dot martix LCD 方案,或簡陋的 TFT 彩屏介面即時相形見拙。
不太普及的原因除了安裝資訊不足外,相信作者不再更新也是一個因素。網上的東西,沒人講就自然下沉。
我以前不講,除了希望網上多些資訊供参考外,另一原因是這個方案較適合駕車上人仕使用。But anyway,與其讓好東西下沉,不如當一個 topic 講一下。
這是 2011 年的方案,距今快近六年了,可找到的資料也定了。就 base on 這些資料,試製一下吧。
儘管是幾年前的東西,但至今也沒找到類似的替代品。
測試發現,可玩的比預期多。同樣,遇到的問題也比預計多得很,所以分兩集講。
Why Dantracker
aprs.fi 地圖,沒有 ham 在 moible 中是靜態的。
Dantracker 可顯示當前收到 station資訊,最近8 個 station的相對方位角和距離。自身 GPS 資訊,和最近一次收到的 aprsWX 資訊;內容較生動。
版本對決,KK7DS vs N7NIX
Dantracker 原作者為 KK7DS,是一開源方案。
N7NIX 以原著為基礎,發展出新一代的版本,加進支援 aprs message 收發,關機等功能。
N7NIX screen, Courtesy of http://www.trinityos.com
我對比兩者的功能,介面後,還是喜歡原著的,原因:
- 黑色介面,比 N7NIX 的彩色介面較舒服
- 儘管後者支援 aprs message,但代價是需配備keyboard 、 mouse。戶外使用有點不設實際。要功能完整,用 notebook 行 APRSISCE/32 吧。
- N7NIX 的介面見方,有違一般屏幕的比例。
- 我希望做到的是殘廢餐,開機 boot 起就用,按 off 制就熄機走人,簡簡單單,無需服待。
硬件準備
我用的是一台 Rpi rev2,由於這是 2011 年的方案。所以用舊款的也應沒問題。建議先將 reset pin (RUN) 銲上 pin header,否則需配備尖咀鉗。
KISS mode TNC 我用回自製的 TNC-X 。整個方案 settle 後希望可利用軟件 TNC 如 Direwolf,有利推廣。
一條 USB to RS232 cable,供接到 TNC 。
一個 USB GPS。
軟件準備
實測發現,Rpi 最新的 OS Jessie 不能成功編繹,會出現錯誤,所以用回 wheezy。最後的為2015年5月5日版。請到官網下載。
参考資料準備
除數個 YouTube 影片可供簡單看一下較果外,網上只有三篇資料可用。皆由 PA0ESH 編寫。
第一篇,是本文參考重點。但放心,根著做是不成的。http://www.pa0esh.nl/wordpress/?wpfb_dl=6
第二篇,有 2013 ,15 兩版本。但太多 network 設定,其他和第一篇類似。
http://www.pa0esh.nl/wordpress/wp-content/uploads/2015/02/Dantracker-on-a-Raspberry-PI-from-scratch.pdf
第三篇,是最後的更新。
http://www.trinityos.com/HAM/CentosDigitalModes/RPi/n7nix-dantracker-install.txt
三篇皆混合了 KK7DS 和 N7NIX 的版本來談。但個人覺得,作者較偏愛後者。這也增加了難度。
安裝步驟
首先,接上 USB to RS232 cord 和 USB GPS。
開機登入後,輸入以下指令應看到這兩東西。
lsbusb
見不到也可以繼續,因上集無需 TNC 和 GPS 也可玩到。
一反常態,無需更新以避免變為 Jessie。只更新軟件的目錄。
sudo apt-get update
之後,幹掉那個大而無用的 wolfram-engine。
sudo apt-get purge wolfram-engine
安裝所需軟件,需一行完成:
sudo apt-get install screen git python-serial libgtk2.0-dev gtk+-2.0 build-essential gcc pkg-config imagemagick automake autoconf libtool cvs curl libncurses-dev libssl-dev libax25-dev
下載加安裝需約一小時。
完成後下載 KK7DS 的版本。
git clone https://github.com/kk7ds/dantracker
進入該 folder ,並下載 libfap 。雖最新版本為 1.5;但在測試 jessie 時發現不論 1.3 或 1.5,最後階段編繹時皆失敗。為省時所以這裡用回 1.3。
cd dantracker
wget http://pakettiradio.net/downloads/libfap/1.3/libfap-1.3.tar.gz
解壓並安裝之
tar xvzf libfap-1.3.tar.gz
sudo cp libfap-1.3/src/fap.h /usr/local/include/
cd libfap-1.3
sudo cp src/fap.h /usr/local/include/
./configure
make
sudo make install
sudo ldconfig
完成後回到 dantracker folder
cd ..
跟著用類似步驟下載和安裝iniparser
sudo wget http://ndevilla.free.fr/iniparser/iniparser-3.1.tar.gz
tar xvzf iniparser-3.1.tar.gz
cd iniparser
sudo cp src/iniparser.h /usr/local/include
sudo cp src/dictionary.h /usr/local/include
make
sudo cp libiniparser.* /usr/local/lib
sudo ldconfig
完成後回到 dantracker folder
cd ..
戲肉來了,aprs-is.c main() 內含用家設定參數,需編輯之。
nano aprs-is.c
將作者的 callsign,所選 server,覆蓋範圍,靜態座標定為自身的資料。
然後 save 離開。
編譯前也需編輯 Makefile,加進參數。否則跟著的編繹會回報 warning。
nano Makefile
在第一行最後加入 –lm
然後 save 離開。
編繹運行以下指令:
touch .revision
make
之後進入 images folder 執行 make 指令:
cd images
make
所有安裝完成。這時可備份一下張 SD Card。
之後 reboot 一下,再進入 dantracker folder ,執行
sudo ./detect_gps.py
類似 lsusb,但回報的是 USB serial cord 和 GPS 的所屬 port 位。
進入 sub-folder examples,將 aprstest.ini 抄到 dantracker folder 中並改名為 aprs.ini 。
cd examples
cp aprstest.ini /home/pi/dantracker/aprs.ini
aprstest.ini 是測試設定檔,主要從 network 收取覆蓋範圍內 iGate 的 packet,將之顯示出來。GPS 則是 hard code 的 dummy data。
換句話說,這就是一個無需 radio 的 APRS tracffic的 monitor。
在 dantracker folder 中編輯 aprs.ini;將 callsign,靜態座標改回自己的,save 離開。
執行以下兩指令就可啟動 dantracker 了。
screen -dmS aprs ./aprs -m /home/pi/dantracker/aprs.ini
screen -dmS ui xinit /home/pi/dantracker/ui
YouTube demo
Raspberry Pi 冷知識
首兩畫面大家會發現右上角有個彩色四方形 (Rainbow Square)。這是輸入電源電壓過低的提示。如為紅色四方形,則是 CPU 溫度過高提示。
對我來說,是因將系統移植到 portable 後,7吋顯示屏的背光耗電近 1A ,用的電話充電火牛電流不足而拖低了電壓。
如 Rpi firmware 更新到最近(9月)的版本,圖示則會是較易明白的雷電 icon 和溫度計 icon。
關機程序
承上文提到,這個方案沒退出機制。所以關機只能 short reset pin 去 reboot Rpi。
小問題,可克服。我們將一個按制 (push button) 接到 Pin 39 (Gnd), Pin 40 (GPIO21)。
編寫一段 python 程式仔,當發現 GPIO21 落地,就執行關機指令。並將這程式加到每次開機執行。
詳情請參考這個網址,將 GPIO 編號改為 21 即成。
https://www.element14.com/community/docs/DOC-78055/l/adding-a-shutdown-button-to-the-raspberry-pi-b
將系統移植到流動平台後
由於仍是測試階段,不建議設為開機即運行的狀態 (要還原需用另一 linux 系統編輯取消)。
小結
上集示範了安裝和利用 aprstest.ini 設定檔作為一個固定 aprs 站台 monitor。介面美觀資訊明確。
下集將為戶外測試,接上 radio 和 GPS;和一個 Rpi 的 bug 導致陷入苦戰及最後的節衷方案。
待續…
有同好電郵查詢遇到的問題:
你好XKP!我按照你果個做法,也做佐,就系一運行就有錯誤。
Fatal server error:
(EE) Server is already active for display 0
If this server is no longer running, remove /tmp/.X0-lock
and start again.
(EE)
(EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
(EE)
No protocol specified
xinit: giving up
xinit: unable to connect to X server: Resource temporarily unavailable
xinit: server error
唔知系唔系中有邊個冇裝。
訊息是說第一句指令成功在背後執行。但第二句就失敗。
是入唔到 X windows。
一,你要做的是,跟建議刪掉這入tmp/.X0-lock 。
一A,行 xinit ./ui 應會進入一運作畫面,差的是沒有進入訊息而己。
二,試 startx,或 sudo startx。
如 startx 入到GUI介面,而你又係用緊 hdmi 接電腦LCD的,開一個termial 文字視窗,到dantracker 執行那兩句指令,應可行到(7 吋mon 可能唔work)
三,再唔得,bakcup 完重裝,留意安裝後,和 make 後的訊息有否版本問題,不成功的 warning。安裝軟件的長長指令,有否漏了 gtk+-2.0 那兩個library。之前也不要 upgrade。
仍唔work,咁你要回覆一下你的硬件ver,OS ver。
我已經把dantracker同direwolf連接佐,就系用direwolf -p命令虛擬一個叫/tmp.kisstnc出來俾dantracker用,我冇gps就試唔到發射,甘就有待你進一步測試.
上面打錯佐/tmp/kisstnc,甘先系
還有一個問題就系樹莓派有屏幕保護,我上網查過資料,按住設置,都系唔得.
係。呢個就係我講個bug。本以為一時三刻就搞掂;結果玩足三日…