先來個著作聲明:
WhereAVR 為 N4TXI 所設計的開源免費 Tracker
AVR tracker 為 DH3WR 以WhereAVR為藍本,改良後發佈的開源免費 Tracker
下一版本,由你接力…
前言
就這個blog的編輯方向,免費 Tracker 還是要弄一個出來。
igate 可以用二,三百蚊買件硬件回來,電腦所需的software,是freeware。但如tracker要用起碼$3100 (Yaesu VX-8GR)先可購到, 咁就真係死得。至於買kit,反正都係要焊接,調試;咁點解唔先試一下free既solution。而所費的銀兩,隨時平過買kit的運費。
再者,掌握了這個solution,要用既時就砌個出來,不假外求。更甚者,改code加上合用的功能,適隨尊便。
當然,唔駛錢就需附出汗水,時間。
本篇也不是Atmel AVR 系列MCU 的tutorial,有關這方面的資料,可參考 eXtreme網站。
有關 C 程式用於MCU的教程,可到公共圖書館借到,或google一下 embedded C。
所有有關連結,皆在右欄可找到。
AVR Tracker 本尊 – WhereAVR
WhereAVR 在本 Blog 開檔的article也介紹過,現簡述之。作者將之用於外國流行的高空Balloon活動。也由於這點,WhereAVR內附有用IO Port 控制servo的編碼。
我和AVR Tracker的緣份始於APRS4r 的advance設定鑽研,由於APRS4r是德國人設計的,搜尋相關資料無可避免forward 到一些德文ham網站,亂打亂撞發現這個solution。作者附上詳細資料,但全是德文,這也是這個project最困難之處。
AVR Tracker用的MCU為表面銲接32 腳的,WhereAVR用的是DIP一般28腳IC封裝。需留意兩封裝的腳位編號不一樣,應以腳位訊號名為準。
和阿媽WhereAVR 相比,阿仔AVR Tracker 加入以下元素:
- GPS訊號有效LED(PD2腳)。當收到有效的GPS訊就著LED
- 啟動了ADC,用來檢測電源輸入電壓(ADC1腳)
- 啟動了i2c,用來接到i2c 的溫度sensor,TMP275
- 加入了一個4位DIP switch,增加了多樣軟件設定
電路簡述和接駁需知
由於我們是用AVR Tracker,所有零件數值跟AVR Tracker。自行焊接當然用DIP28腳封裝;所以MCU腳位編號跟WhereAVR,或自行參考data sheet。
整個線路以Atmel ATMega8A 為核心,關鍵部份為接到ss,mosi,miso,sck 四腳電阻所組成 R-2R DA converter。以4 bit R-2R DA converter 輸出APRS 所需的音頻訊號packet, 我在約10年前的日本CQ magazine 見過,今終可會一會佢。
維基圖片
R11,R13,C10 組成為APRS訊號輸入,WhereAVR 用於處理地面站發出的指令。對我們來說,這部分是備用的。簡單來說,它是利用輸入訊號對MCU產生的中斷的周期,去估出其頻率而再化成有效 AX.25 / APRS訊息。
i2c 的溫度sensor,TMP275 在最後更新的線路已被移除。
就我的prototype,以下零件需注意:
- 線路圖左下角R18,R21,Q3不需要
- GPS RS232 – TTL部份的R12不需要
- R7 2k2 為 Yaesu系專用,Kenwood系不需要
- 以上提到的R-2R電阻 ladder;R1,R2,R3,R4,R5用1%
- NPN 用一般的黑豆仔就可以,我用CS9018
- GPS訊息LED用黃色
- PTT LED 用紅色
- 接收 LED用綠色
個線路簡潔,兩三晚功夫應可完成。
程式下載,工具
下載software為 eXtreme Burner 免費軟件。
工具為淘寶網有售,只值十多元人仔的USBASP。請參考本blog"基本器材篇"一文
將現成已編譯好的 hex code 下載至MCU,共有二個hex file需下載。還需設定MCU 的fuse setting。
hex file請從DH3WR網頁下載zip file。
二個hex file 為:
主程式: APRS_AVR_Tracker.hex ,下載至MCU即成,無需修改。
eeprom設定檔: APRS_AVR_Tracker_EEPROM_DH3WR.hex,這個需按個人callsign,喜好修改有關項目,另存檔名備用。
這個設定檔,和相關設定程式太重要。也是我取AVR Tracker,捨 WhereAVR 的原因。Tracker 所需設定,皆放在 MCU 的 eeprom 中。但 WhereAVR 沒有附帶設定程式。如我用WhereAVR 為藍本,然後叫人自行將callsign,等英文字譯做hex碼,再填到相對的eeprom 地址上。我諗無人會跟住做。唔係唔想,而係太煩。
設定程式由DL1NOS編寫,解決了這個問題,而所謂的設定程式,是一個圖象化 ascii to hex碼的反譯器。將設定檔template的數值更改就是了。
介面是德文,不過時間關係,google translate己幫你譯做中文。雖然部份中文譯完都唔多明佢意思。設定程式(AVR_Tracker_CFG_V1.0b)無雖安裝,將file解壓在同一folder即可。
AVRTracker 可設定項目
- Callsign
- Path(s)
- 靜態文字
可因應移動速度改變以下項目(DIP SW1-2)
- SSID
- ICON
- ICON 表
四款預設 APRS Message,由DIP SW3-4 選擇
六種option
測量電壓補嘗值,預設為50,經實驗証明,無需更改
用設定程式打開作者的範本檔,更改各資料,如callsign,SSID等,然後save as到另一檔案名。以備日後使用。
下載步驟:
eXtreme載入主程式(Open Flash),先下載到MCU (Write => Flash)。
然後載入已設定好的設定檔 (Open EEPROM File),下載到MCU (Write => EEPROM)。那六種option,建議先跟預設的設定。熟能生巧後才嘗試其他組合。
Fuse Bits setting
正確value為: Lo:9f Hi:c9 。由於Fuse Bits 的設定錯誤會導致MCU不能工作,所以寫入時,必需將Low,High fuse剔write,再按write。
測試過程秘辛
以上過程好似 easy job,順風順水。但其實折騰了差不多兩個月。主因為兩個:Fuse Bits setting 數值錯誤,沒有 Tx delay 設定。
不要盲目跟隨screen dump
Fuse setting 數值
Atmel MCU Fuse Bits setting數值 主要用作設定震盪元件種類,高低頻等自選設定組合。原作者的PDF文件內的一個screen dump顯示為 D9, FF。我沒意識到需 countercheck 這個value。照搬如儀。個tracker無反應還好,知有唔妥。最慘係個GPS訊息LED會1秒間隔閃下閃下,好似好正常咁。搞到我以為係work。
花完一大輪功夫後,百思不得其解;用DSO量度一下crystal,點解震到好似未食飯咁。再檢查一下D9, FF這個value,才發現這個value不應用在這個project上。
用回自己對 mega8的認識,設為 ff,c9。反應正常好多。最後,參考完DL2USR有關AVR Tracker的PDF文件(德文)同網站資料;決定為 Lo:9f Hi:c9
實戰測試
當GPS輸出有效訊息到tracker後,tracker GPS訊息LED會長著,我的設定是每30秒間隔就發射。
問題來了,發射後,igate接收LED不著;即收回的packet解不到碼。packet的組成,由R-2R負責。數值會影響準繩度,將之換為1%。再試,結果一樣。那唯有以大量 packet 收發測試。結果發現成功率少於10%。唯一較安心是packet的的波型應屬穩定無問題。那剩下兩問題,packet的波幅,和Tx delay。
packet的波幅,我跟據發射機的說明書用DSO調好R7即成。
Tx delay,要測試是否這個問題,先將發射機人手按ptt,等tracker發射時,如igate百收百中,即是這個問題。最後亦証實是這個問題。
Tx delay在一般商品化的tracker是有得設定的。 AVR Tracker則沒有。但又想一下,我遇到的問題,其他ham也會遇到。但點解google一下,外國ham 測試AVR Tracker 沒有遇到同樣問題?
於是想起友台ZAC起igate時,提到開CTCSS會導致Tx/RX Delay,外國的aprs一般情況下係無用tone的。既然個tracker都試到最後一步,不是改code加進Tx delay部份,就是關掉tone試一下。我當然係prefer 後者。果然,即刻掂哂。成功率不少於八成。我亦順應潮流,之後關掉igate 的CTCSS了。
需注意,在收到有效GPS訊息後自動啟動PTT,就算之後收不到GPS訊號,發射部份仍會繼續按時發射最後收到的GPS位置。
設定,調較
如你沒有儀器觀察波形,可參考我的數值。VR R7 對地那邊的電阻值是約3-4k。
DIP switch指撥開關的設定
sw1 =兩組SSID,icon設定選擇
- on set2 (Secondary)
- off set1 (Primary)
sw2
- on =速度小於每小時5公里的情況下視為準靜止狀態,PTT間隔增至7min。反之為機動狀態,PTT間隔降回30秒。
- off = PTT間隔一律為30 秒
sw3-4
- 4 組預設的APRS訊息
新加設了 YouTube VR2XKP 頻道,今後會按需要加入多媒體資訊,去片:
What's Next-功能尚未用盡,同志仍雖努力
以WhereAVR 為藍本,並以AVR Tracker為參考,更改程式,加進更多的功能,例:
- 如ADC的temp sensor,LM35
- Tx delay
- 甚至enable 接收指令功能
現行hex code size不大,佔用IO pin又不多,加進更多功能應是可應附。
總結
美國人發明APRS用在 Amateur Radio上。
日本人將之商品化,將tracker 內置於各車,手機中。大大提升APRS活動的普及性。
德國人開源程式風氣之普及,做就了本人使用Igate的APRS4r,AVR Tracker兩個方案,好使好用之餘,且少了一點銅臭味。德國在 Amateur Radio 上的貢獻實也令人敬佩。
後記 – 一個階段之終結
行文至此,涉足APRS的三寶:Igate,TNC,Tracker;本blog皆已詳細介紹過。且著眼於以低廉價格成事。不論你是跟著本blog的文章去做;或以錢去解決眼前的問題,即買一些成品回來架設,也應有一點成績了。我經常強調:百論不如一試,就是如此。
我將本文定為APRS入門與初階之完結篇。今後有關APRS的課題,將向中階或以上進發,挑戰更大,失敗率更高。不論成事與否;均盡可能編撰成文,分享過中的苦與樂。
有幸 AVR tracker 小組成員 DL1NOS 到訪本blog,交流後再測試eeprom 數值修改程式,証實於 windows 7 64 bit 執行是ok。上文內容已和英文版一併修正。