Dantracker 下集 – 無線收發編

 

dan2_cover

 

上集提要

安裝過程和經 network 收取並顯示 aprs 站台資訊。

下集重點

下集主要嘗試以無線電收發 aprs packet,並顯示在 dantrackeraprs.fi 上。

為此,也陷入前所未遇到,瀕臨失敗的苦戰。

 

Devil 級數的 screen power saver

承上集提到的 Rpi bug,就是 10minRpi 自動關掉視頻訊號。

鍾意就係 feature,唔鍾意就係 bug。對我來說,用在 7″ display 上,停咗 signal 都唔會停那塊食電背光,所以明顯是 bug

和大部份人一樣,由細到大用開 MS windows,本以為按一兩下 mouse 就可關掉這個功能,結果玩足三日,將網上所有方法試暈都係唔 work

最後方法還是打那塊 7″ display 主意。

這是一塊觸控屏,之前沒用觸控的原因是觸控驅動程式和 Rpi 最新的 OS Jessie 有衝突,按多幾下就會搞死個 OS,要重裝。

而剛好這個 project 用的 OS wheezyok,可能這是上天的安排。所以不配備 keyboardmouse 下,唯有 10min 內或黑畫面後按一下 screen

Stupidbut work

 

RF 收發的準備

由於想試真實環境,沒有其他路徑如 WiFinetwork 等提供訊息流,所以沒有設定 Rpi WiFi 的參數。

folder 內的 aprs.ini 刪去或備份到另一檔案。然後將 examples folder 內的 aprs.ini 抄到工作 folder 中。

nano 編輯 aprs.ini,將作者的資料改為自己的。

telemetryport 必需前面加 #,否則運行不了。

這個 telemetry 參數是有點古怪的。獨佔一個 serial port。而這個方案已有一個 portgps,一個接 TNC 。為什麼還要多一個 port 處理 telemetry

這個時侯還是搞不清的,所以加上 # ignore 佢先。

 

Round one

接上 TNC-X 後,執行上集的兩指令,發現不能顯示從我的 ftm-350 發出的 beacon,儘管 TNC 接收燈著了。

由於室內也收不到 GPS 訊號,會否因此構成影響也不清楚,所以唯有戶外測試。

戶外測試發現,儘管 GPS 接收良好,但仍舊不能顯示 APRS 站資訊。當下也只能不停更改指令和 ini 檔案參數,只一次成功,但 reboot 後也不能重覆。

 

dan2_sh1

 

dan2_sh2

 

dan2_sh3

 

玩了一個下午,只有一次不能重覆的成功,too bad

事後檢討

由於 ini 參數內有一 initial tnc 的指令參數,TNC-X 本身就是一個 KISS TNC,應不需啟動轉 mode 指令。會否因此而 talk 唔到係 unknown

不要緊,這個時侯就係鬥裝備齊唔齊。舊文介紹過的 16F88 TNC 可用同一對指令 KISS ONRESTARTmodeKISS TNC。遂換上之。

另一擔心的是,都幾肯定那兩指令不能直用。但要改到點,完全無概念。

inibeaconing 一欄,明顯是 smart beaconing 參數。

Smart beaconing 廣泛用於 mobileaprs 站台。簡單來說汽車行得越快,發出 beacon 間隔越密。速度慢,beacon 間隔也變疏。

咁我坐定定係公園試,會否 0 速度下而不發出 beacon 也是 unknown。我總不能為試 trackercallUber

上集提到的三份文件,其實都係提到 stress test,即經 network 收取 aprs 就停。會否這個 solution 只能行到這一步而已,也開始擔心。

 

Round two

三號風球下有蓋戶外地方再試。

換上 16F88 TNC,並先用指今轉為 KISS mode

事前在網上不能找到有效的解決方法,只能在零碎的片段找到 aprs -v

這個指令可勉強測試到與 TNC 的收發連接,收到會顯示 aprs string,按 Ctrl + c 離開時 TNC 會發射一下 beacon

但在執行指令換上 aprs -v 也不得要領。仍是不能顯示資訊。

今次的結果,只能觀察到 beaconingatrest_rate 參數會反映在 GPS 一欄上。

1800 = 30min

 

Round three

不能無了期的 trial & error,接近失敗邊緣。

三份文件己無參考價值。也沒有其他秘笈可用。然而, open source 方案可貴之處是源碼是公開的。而源碼己告訴了你一切。

source code 是最後一步了,c program 早已連本帶利還回給老師。只能盡力而為。

翻看 ui.c ,有以下一段:

ui_key

 

實測發現,按 c 掣會進入一黑畫面。b m k 則無反礙。

dan2_press_c

 

去到此時,我初步結論是:

個方案寫到有初步成效就停止繼續,
或轉為商業應用而停止免費發放,
又或是商業應用的方案,但抽起部份功能放給 ham

上文提到的 telemetry,和作者的 YouTube demo 對比下,應是在最下方顯示電壓和温度的。但其他同好的試製也沒有這行 data 的。

kk7ds_dan

 

aprs.c 內有以下一段:

dan2_aprs_help

這是轉捩點。輸入 ./aprs –help 知道完整 option 列表。

dan2_com1

 

最後決定將第一條指令更改,第二條不變:

screen -dmS aprs ./aprs -t /dev/ttyUSB0 -m -c /home/pi/dantracker/aprs.ini
screen -dmS ui xinit /home/pi/dantracker/ui

第一條的指示是:

明示 tncport 位。
明示 config file 的位置。
使用公制單位。

成功了!留意程式初始時間為約 5 sec,需等一下才能接收aprs packet。  

 

gps_wrong

 

室內環境也能收到我的 ftm-350 aprs 資訊。然而也發現 ini file 內的靜態座標是沒用的。 aprs 站台距離十萬九千里遠。

擇日室外再試。

 

Round 4

八號風球多了一日額外假期,趁黃昏風勢轉弱到 cover playground 再試。

新定的兩指令 confirmwork 的。

ty8_beacon

但也發現一個新問題,gps 一欄顯示的時間亂了。原因是 Rpi 不設內置 RTC。上網時會到 NTP server 同步時間。不能上網時則會啟動 fake clock。這fake clock 是沒用的,只為應附一些需回報時間的系統免出錯而設。用 date 指令查看一下,還是幾天前的時間。

Dantracker 顯示的不是 GPSUTC 時間或系統時間,從秒數有時幾秒咁跳就知是亂數的。然而室內接了上網,但又收不到 GPS 訊號時,GPS 一欄時間仍是亂數的。解決方法不外:

  1. 室外 WiFi 接上網
  2. 加入 RTC module
  3. GPS 本身就是一個很精準的時鐘。可研究能否利用 gpsd 等將之既可對應 dantracker 之餘,又可作為 NTP

 

最後測試

Telemetry 測試

port 設為 ttyAMA0,即 Rpi serial port。嘗試據我對 source code 的理解輸入參數,希望能在最底層顯示模擬的電壓和温度。但進入 program 一會就 hang up 了,不論有否輸入參數;唯有放棄。

完整 ini

由於這個方案很缺資訊,我將我的 ini 檔完整顯示,僅供參考。

[gps]
port = /dev/ttyUSB1
rate = 4800
type = nmea

[tnc]
port = /dev/ttyUSB0
rate = 9600
type = KISS
init_kiss_cmd =,

[telemetry]
#port = /dev/ttyAMA0
rate = 9600
type = vr2xkp

[station]
mycall = VR2XKP-9
icon = /j
beacon_types = weather,phg
power = 4
height = 0
gain = 4
directivity = 0
digi_path = WIDE1-1,WIDE2-1

[beaconing]
atrest_rate = 1800
#atrest_rate = 120
min_speed = 10
min_rate = 300
max_speed = 60
max_rate = 60
course_change = 30

[comments]
enabled = 1,2,3,4
1=Using a home-built tracker
2=
http://danplanet.com
3=Software $ver$
4=Set path to TEMP1-1,WIDE2-1 to digi

[static]
lat = 22.342
lon = 114.171
alt = 0
speed = 0
course = 123

[digi]
alias=TEMP1
enabled=1
append_path=1
txdelay=500

記著換回自身的 callsign、座標。 TNC 我換回 TNC-X ,並刪掉 initial command

 

 

YouTube demo

主要示範純 RF 接收到的場境,和用上下鍵可選擇清單上的站台,顯示其資訊。

 

 

 

總結

分別透過 networkRF 介面使用 Dantracker 去顯示 aprs 站台資訊算是成功了。而在不能和 TNC 通聯時,也 plan  C direwolfmanual 由頭讀到尾兩次。稍事休息後希望將兩者整合一起。Direwolf 功能強大,之後會專題介紹。

透過 network 去接收,能顯示較多資料如機場 VHHH 天氣報告,也省回一部收發機和 TNC 。適合室內固定台。

RF 去接收,較合 mobile 使用。

利用 gpsd share gpsdata stream 在其他程式是可行的,之後也會測試。

這個 project 耗時近 2 個月,挫敗感之大前所未有。跟住篇文應講番的輕鬆既 topic

This entry was posted in APRS, AVR / ARM and tagged , , , , , . Bookmark the permalink.

11 Responses to Dantracker 下集 – 無線收發編

  1. BH7NJF says:

    xkp你好!屏保果到你係點解決?係唔係一定要用display屏,可以用spi屏嗎?

  2. VR2XKP says:

    解決不了。唯有每十鐘內按一下觸控屏。SPI 屏應也可。

  3. bh7njf says:

    我已經用3.5寸SPI屏來做顯示,不過要將一些參數改一改寸可以完全顯示出來。我唔系用你之前講果個系統,用佐raspberry最新出果個系統來做,各方面都OK。唯一就系自動運行的問題,因為系用Direwolf來做tnc,當一開機果陣時,dantracker運行佐,direwolf重未運行,導致dantracker檢測唔到有tnc,所以顯示唔正常。我依就系用手機或電腦vnc連接raspberry,睇direwolf自動運行佐,再手動運行dantracker,甘就顯示一切正常。

    • administrator says:

      3.5 吋好細,不過你ok也沒問題。要全自動係麻煩。我用screen 指令先行 direwolf,再行dantracker 是ok的。再一下篇文會分享direwolf 的不同玩法。

    • BG5FOX says:

      能分享以下3.5寸屏如何修改吗?

  4. bh7njf says:

    已經解決佐開機運行的問題咯!就系按照direwolf的開機運行做法,成功先運行direwolf,再運行dantracker。

    • administrator says:

      可考慮加入 DCD carrier detect,有訊號入就著LED,如踢著 morse beacon等增加玩味。這些都己試好了,正在作文中。

  5. bh7njf says:

    好!期待你的作文。

  6. BI7JTA says:

    两位高手都在此,持续关注。–BI7JTA
    dantracker有没有可能通过触摸屏幕来响应按需发送信标?目前只能通过物理键盘。
    或者增加一个gpio信号,通过python脚本响应发送信标,或python脚本模拟物理键盘的发送信标事件?类似于gpio按键关机。

  7. bh7njf says:

    你睇睇我個視頻https://www.youtube.com/watch?v=uPJ5xmcmFTo,已經按你個講法,將DCD信號來控制模擬鼠標按鍵,依家冇黑屏咯!

Leave a Reply

Your email address will not be published. Required fields are marked *