前言
跟著應是一系列的 hardware 文章,要渣棘雞喇。
Ham 欲進入數碼年代,一部 TNC 少不免。
PIC16F88 TNC 是網上最普及的 TNC 方案。當初放棄這個方案而用 TNC-X,主要是我有 MX-614 IC,並信硬解比軟解好;但對其他跟著做的有困難。
再者, 網上講到爛哂既野,我個 blog 就盡量少講,自己上網睇就 ok 啦,無需我獻醜翻譯。
但最近發現原來一位意大利的同好 IZ8EWD 長期默默為這個方案改進 firmware。他最近在九月釋出的 firmware ver 2.31 ,應是這個方案最 latest 的版本。
既然有人咁有心,咁就應幫佢煲一煲。
以下是版權聲明:
PIC16F88 TNC 原刋於 QEX 3/4 月, 2005 “An Inexpensive Terminal Node Controller for Packet Radio” 一文。原作者為 Bob Ball WB8WGA。
意大利的同好 IZ8EWD 跟據其開源程式碼,多年來不斷改進。最近釋出的是 ver 2.31 版。
硬件說明
本文主要依據 IZ8EWD 的網頁資料編寫。其他版本,circuit一樣,只是 firmware 各施各法。不續一評頭品足。
PIC16F88 TNC 原作者開放了其 source code,好處是愆生了不同的版本。壞處則是資訊不夠集中,又英文,又德文;baud rate更各式其色。 IZ8EWD 的網頁更以意大利文編寫,一般搜尋不會排在首選位置。我也是搜尋其他東西時無意中發現。
Firmware 歷次更新表,open source 附予了這個 project 生命。(Countesy of PianetRadio.it)
線路方面,只一枚 MCU PIC16F88,RS232 電平轉換如用Transistor 線路,更可省回一枚 Maxim 232 IC。請留意,官網的線路圖有 LM386 作為輸入前置放大部份。個人經驗如用手機是不需的。
Countesy of PianetRadio.it
感溫 IC 18B20 是在 data line 取電。所以 VCC 是落地的。另留意,18B20 價格較貴,降低成本唔用也沒影響。
我一向認為,on broad temp sensor 作用不大。這個 sensor 放到後方,作為日後電池的 temp sensor。
16F88 編程
沒有編程器,可用最簡單的 JDM 方法,請參考:
Why IZ8EWD ‘s version
他的版本提供四種模式:
- Standalone TNC mode
- Tracker mode
- aprs tnc mode
- KISS mode
各版本的 baud rate 統一為 4800bps
Google Translate 開的玩笑
話說原文是意大利文,唯有靠 Google Translate 翻譯成英文。Google Translate 一向也是這個網誌的伙伴,我有很多外文資料也是靠她幫忙翻譯,一直相安無事。直至在這個PROJECT 上就出事了。她將一些 CONFIG 指令搞亂了。
在 KISS mode 下,退出指令應為 0xc0 0xff 0xc0,他卻錯誤轉為 0xff Oxc0 0xc0
在 Tracker 模式下,UNPROTO GPSC 的指令錯誤譯成 UNPROTO JPIC
裝嵌與調試
線路是簡潔的。留意 J4 是 tracker 模式下,接駁了 GPS 才需短路落地的。
為求效果良好,R1-R4 用 1% 電阻。
R9 是 Yaesu 手機發射所需,Kenwood 制式則無需接上。
如上文述,LM386 一組連 R17 也省回。
一切順利的話,將已編程的 16F88 裝上就 ok 了。
今電腦沒有 com port了,需配備 USB to RS232 port cable。
將 circuit 接上電腦和發射機,還預備另一台接收機監聽。
Windows 7 下 Terminal 程式可用 RealTerm。速率設為 4800,8N1。
輸入指令 CAL,線路會發射 1200Hz 與 2200Hz 交替的音頻訊號。在接收機監聽到後,調一下 R12,使訊號電平致合適水平。
指令和設定
輸入 help,可看到簡單說明
輸入 disp,可看到各現行設定
輸入 perm,儲存各現行設定
輸入 restart,reboot TNC,更改設定後建議 restart 一次
各模式試用
注意,各模式的 config 不同,沒有萬能 config 的。而留意一點,部份模式的 config 會在轉 mode 自動更改原有的設定。所以請先抄下 config 供日後參考。
預設參數:
ECHO ON
TEMPerature C
TXDELAY 100
GPS $GPRMC
MONitor ALL
MYCALL VR2XKP-14 <==請用回你的 callsign
之後用perm save 設定
Standalone TNC mode
這個模式是一個獨立運作,無需上位機 (e.g.:電腦,RPi等) 指示 TNC;並可致能成為一台 digi-peater。
我的config: (僅供參考)
UNPROTO ARPS v WIDE3-3
BTEXT !2229.90N/11421.5EzNewTNC Temp- \t
BEACON EVERY 1
MYALIAS WIDIE 1-1
DIGI ON
之後用perm save 設定
iGate 收到其 packet 後,顯示於 aprs.fi 上
Tracker mode
我的 config: (僅供參考)
UNPROTO GPSC03 v WIDE1-1,WIDE2-2 <== 初步實驗應只支援 Primary table
BTEXT > New TNC Temp- \t
之後用perm save 設定
連接 JP4,並接上 GPS。
待 GPS 定位後,tracker 會發出 aprs 制式的訊息,iGate 會將之轉發到 aprs.fi。唯發射周期需先設好,沒有手動 PTT 。
KISS mode
我的 config: (僅供參考)
KISS ON
之後用perm save 設定
restart
KISS MODE 需上位機及其所用軟件支援方可。簡單來說,上位機砌好所需格式的 STRING,發向 KISS mode TNC,TNC 將 STRING 加上 crc 後即發出,不會做任何轉譯。
進入 KISS mode 後,儲存後必需 RESTART 才會正式進入 KISS 模式。如需退出模式,則請輸入 C0 FF C0,自會再進入 cmd 模式,然後輸入以下指令關掉。
KISS OFF
PERM
RESTART
實驗發現,RPi 配 DIXPRS 和 KISS mode 不兼容 (儘管接收 LED 會著),但不會將收到的 Tracker 訊號轉到 aprs.fi 。 RPi 配 aprs4R 則 OK。初步估計和上下位機的 KISS mode 指令不完全兼容有關。
APRS TNC
輸入指令 CONV 後 ,他只會處理 packet 中的 UI frame。官網上將之配上 UI View 上使用。並附上 UI view 用的指令檔。由於我早已放棄了 UI view。所以暫不理這個 mode了。
日後在系統整合時看可否用得上。
在各模式下,BTEXT 的温度參數也不能用” \t ” (\前有space )顯示出來。由於我只有一枚18B20,而且還是從舊機拆下,所以暫當是硬件問題。
總結
PIC16F88 TNC 雖功能比不上一些商品級的 TNC,但勝在模式多。而這也是一個簡單,彷製容易的方案。初學者如未有 TNC,可考慮一試。