PIC16F88 TNC 試製

main

 

前言

跟著應是一系列的 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 月, 2005An Inexpensive Terminal Node Controller for Packet Radio” 一文。原作者為 Bob Ball WB8WGA

意大利的同好 IZ8EWD 跟據其開源程式碼,多年來不斷改進。最近釋出的是 ver 2.31 版。

 

硬件說明

本文主要依據 IZ8EWD 的網頁資料編寫。其他版本,circuit一樣,只是 firmware 各施各法。不續一評頭品足。

PIC16F88 TNC 原作者開放了其 source code,好處是愆生了不同的版本。壞處則是資訊不夠集中,又英文,又德文;baud rate更各式其色。 IZ8EWD 的網頁更以意大利文編寫,一般搜尋不會排在首選位置。我也是搜尋其他東西時無意中發現。

clip_image002

Firmware 歷次更新表,open source 附予了這個 project 生命。(Countesy of PianetRadio.it)

線路方面,只一枚 MCU PIC16F88RS232 電平轉換如用Transistor 線路,更可省回一枚 Maxim 232 IC。請留意,官網的線路圖有 LM386 作為輸入前置放大部份。個人經驗如用手機是不需的。

clip_image004

Countesy of PianetRadio.it

感溫 IC 18B20 是在 data line 取電。所以 VCC 是落地的。另留意,18B20 價格較貴,降低成本唔用也沒影響。

rear

我一向認為,on broad temp sensor 作用不大。這個 sensor 放到後方,作為日後電池的 temp sensor

 

16F88 編程

沒有編程器,可用最簡單的 JDM 方法,請參考:

JDM programming for PIC

 

Why IZ8EWD ‘s version

他的版本提供四種模式:

  1. Standalone TNC mode
  2. Tracker mode
  3. aprs tnc mode
  4. 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

 

裝嵌與調試

線路是簡潔的。留意 J4tracker 模式下,接駁了 GPS 才需短路落地的。

為求效果良好,R1-R41% 電阻。

R9Yaesu 手機發射所需,Kenwood 制式則無需接上。

如上文述,LM386 一組連 R17 也省回。

一切順利的話,將已編程的 16F88 裝上就 ok 了。

今電腦沒有 com port了,需配備 USB to RS232 port cable

DSCN0725

 

circuit 接上電腦和發射機,還預備另一台接收機監聽。

Windows 7Terminal 程式可用 RealTerm。速率設為 48008N1

ReaTM

 

輸入指令 CAL,線路會發射 1200Hz2200Hz 交替的音頻訊號。在接收機監聽到後,調一下 R12,使訊號電平致合適水平。

 

指令和設定

輸入 help,可看到簡單說明

輸入 disp,可看到各現行設定

輸入 perm,儲存各現行設定

輸入 restartreboot 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 設定

clip_image006

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

trackermode

 

KISS mode

我的 config: (僅供參考)

KISS ON

之後用perm save 設定

restart

 

KISS MODE 需上位機及其所用軟件支援方可。簡單來說,上位機砌好所需格式的 STRING,發向 KISS mode TNCTNCSTRING 加上 crc 後即發出,不會做任何轉譯。

進入 KISS mode 後,儲存後必需 RESTART 才會正式進入 KISS 模式。如需退出模式,則請輸入 C0 FF C0,自會再進入 cmd 模式,然後輸入以下指令關掉。

KISS OFF

PERM

RESTART

實驗發現,RPi DIXPRSKISS mode 不兼容 (儘管接收 LED 會著),但不會將收到的 Tracker 訊號轉到 aprs.fiRPiaprs4R OK。初步估計和上下位機的 KISS mode 指令不完全兼容有關。

 

APRS TNC

輸入指令 CONV 後 ,他只會處理 packet 中的 UI frame。官網上將之配上 UI View 上使用。並附上 UI view 用的指令檔。由於我早已放棄了 UI view。所以暫不理這個 mode了。

日後在系統整合時看可否用得上。

在各模式下,BTEXT 的温度參數也不能用” \t ” (\前有space )顯示出來。由於我只有一枚18B20,而且還是從舊機拆下,所以暫當是硬件問題。

 

總結

PIC16F88 TNC 雖功能比不上一些商品級的 TNC,但勝在模式多。而這也是一個簡單,彷製容易的方案。初學者如未有 TNC,可考慮一試。

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

6 Responses to PIC16F88 TNC 試製

  1. Ken says:

    vr2xkp 師兄你的教學真的好好. 可以令好多新手學到更多的軟硬體知識.
    在香港玩 ham radio 真是痛苦萬分, 好多設備,都要自己DIY, 俾錢都未必有.
    有得賣, 又天價, TNC 設備 都是很難攪的的東西. 無玩辣雞基礎都是有些困難.
    俾錢去買又好以唔多值. 在這裡好多謝你的分享.
    vr2uju 73

  2. sun says:

    您好!本人閒時也學習製作aprs 的機器初學者,只懂得用arduino 作mcu, 為了省去佔用的程式碼,想借助mx614 加密或解密,
    想問問解密出來的碼是普通的ascii 碼,還是其它看不明的碼??

    • administrator says:

      Hi
      All are plain text, no encyption for Amateur radio communication.

      • sun says:

        明白. 但我的mx614 直接從 pin 13 RXD 解密出來的訊號, 不是普通文字, 是一些特定和有規律的 數字, 但在ASCII table 內找不到有意思的文字‧ 在您經驗, 程序上我那裏弄錯或遺漏? 誠望賜教!

        • administrator says:

          能否告之本人 閣下的電台呼號,沒有的也有個名吧。是本地人還是其他地方的人。我不慣長文回覆空氣。

          如你用 MX 614 收ARPS Rxd pin 出 hex code,正常不過。

          MX614 是aFSK1200 編解碼器。aFSK1200 的1和0 分別以1200/2200Hz代表。

          APRS 訊息以 aFSK1200 制式發出,但也有其規格,你有沒詳閱spec。

          AX.25 ,KISS mode TNC 是什麼,你鑽研咗未。

          你多次說解密(decryption),但APRS 訊息頂多說是 decode (解碼) 。兩者是有分別的。

          以上幾點你搞不清,甚至以為MX614輸出就是aprs 訊息了。

          你只說出你遇到的問題,線路,程式,以至你想做什麼我也不知,我怎會知問題所在。

          如你是一個業餘電台操作人員,你上網應找一大堆APRS solution,由MCU,Arduino,Linux, SDR 等等。

          不論這些東西是成品,或 open source,基本上已很成熟,沒理由再花時間做己有的東西。

          如你是一名工科學生做project,更不要用古懂IC浪費生命。TI,SiliconLab 等有不少ISM頻的通訊IC,簡單易用,無需外接收發機。

          在淘寶,RScomponent 訂套kit回來不過幾百元。學用這些IC,更接近實戰。MX614 的剩餘價值僅在低速 Amateur Radio。

          我十多年前也不花時間自己寫,你十多年後更沒理由花掉青春在這些舊東西上。

Leave a Reply

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