9600 baud Kiss mode TNC 試製

 

9600_cover

 

本文的先導文章 “保持冷靜,提升速度。from-aprs-1200-to-9600 ” 是數年前的,請先參考閱讀,這裡不重覆。

 

前言

Blogaprs 為切入點介紹業餘無線電,雖 aprs 往往就是1200 baud 了。但也不斷尋找機會講高速 9600 baud (下文全稱 96)。

個人情感上,96 TNC 是本 Blogaprs 仍缺的一塊 puzzle,極希望補上一可行,價格合理,同好可仿造的方案。齋講 1200網上資料多的是,無需睇我。

這個 project 由年頭搞到年尾,除私務繁忙外,缺乏一個 96 on air 的平台也是一個難處。

為此我的最終方案是:

DirewolfSDR 手指,作為一 9600 Rx-only i-Gate 和作兼容性測試。

FTM-350 設為 96,作為驗証,對 talk 機。
TH-F7 設為 96,配 aprsis-32 ,接本文介紹的 96 TNC

最後以 96 速率,作簡單的短訊,email 通訊測試。

 

先講 96 tnc

首先,緊記兩件事:

Teensy 剛推出了 4.0 型號。我們用不著,選回 ver 3.6ok 了。至於原作提到也可用 ver 3.2 (size 較細和便宜),本文提到的 PCB 是支援的。

但由於大部份參考文章,圖片也是用 ver 3.6,也無謂為省一點錢也購入最終不合用的東西,所以購入的是 3.6

Arduino studio 最新版 1.8.10 暫不兼容 Teensyplugin (裝不到),所以用回 1.8.9ok 了。

 

Pi-Teensy / TNC-Pi9k6

硬件原是一開源方案,是 G8BPQ 設計,並開發出一種用在 HFprotocol,名為 ARDOP

網上也有 PCB gerber 檔供下載。無需自行花時用萬用板接駁,成功率高。本文也已此為基礎。

Link: (內附線路圖)

https://www.seeedstudio.com/Teensy-TNC-for-Raspberry-Pi-V4T-g-1097792

W2FS 據此硬件為藍本,軟件修改以支援 1200bps / 9600bps kiss mode。是一商品化 open source 套件。名為 TNC-Pi9K6

這應是暫時唯一網上找到可供自製的 9600 速率 tnc 方案。

所以兩者線路基本上是一樣的,但 PCB,我們就是用 G8BPQ 設計的原裝貨。

原裝貨的是好處是,接到 RpiRx/Tx pin 是用 jumper 分開的。我們只需將 Teensy 那邊接到一 TTL to USB  module,就可連到電腦了。

9600tnc

 

另也設一 jumper for 電源 5VGND。接到 TTL to USBmodule 就可 USB 取電。

 

 

線路對比

 

96_org_tnc

Pi Teensy TNC

 

96-tnc

TNC-Pi9k6

 

原線路 cap c7,c6TNC-Pi9k6 砍掉了。不關鍵照跟即可。

c5 如用在已內置 DC blocking cap 的收發機接口上,無需接上電容,短路之即可。

 

 

組裝

開始前詳閱 TNC-Pi9k6 的說明書。
link:
http://www.tnc-x.com/TNCPi9K6.pdf

理論解說:
https://www.tapr.org/pdf/DCC2017-TNC-Pi9k-KD0QYN.pdf

零件很少,沒難度可言。唯一留意的是 PCB 電阻用了 1/8w size 的。一般 1/4w 電阻放不下,需斜傾。1/8w 電阻在麥氏有售。

留意五枚 LED 極性方向不一,右邊一枚是反向的。

LED 功能表示由右起分別是 PTT,Rx,IRS,ISS 和 最後的不知名。用得著的只是 PTTRX。其他當 reboot 時的走馬燈吧。

Rpi 連接的 40pin header,其實需用到的是 Rx Tx Gnd 5V GPIO18 幾針而已。最終不是用在 Rpi 的用飛線接 Rpi 即可。

Teensy 和二款 IC Digikey 購入。

留意電子 Volume IC MCP4261是有分不同內阻值的。我們用的是 50K ohm,即 part no. MCP4261-503E/P

接對講機的有三接頭可選,minidin,db9,pin header

Mini din 無可否認較美觀,但之後如要拆開超麻煩。

Pin header 簡單但易損壞,所以還是用 DB9

 

96tnc_complete

 

惱人的 hex file

TNC-Pi9k6 下載完整的 zip file

http://www.tnc-x.com/TeensyProjects.zip

爆開後,在folder  “TeensyProjects\SM_Teensy” 內有一個 hex file  “SM_Teensy.ino.TEENSY36.hex” ,心諗今次發達,做少好多。在 Teensy PJRC 網站下載其編程軟件,將 Teensymicro USB 接到電腦的 USB port,按序將 Hex file 下載到 Teensy 內。

Boot 機係無問題,LED 如走馬燈閃一遍。但就是不能和 Rpi 設定程式溝通。由於疑點是在 Rpi 那邊,所以浪費了相當長時間 trouble shoot

最後,還是自行 compile 的才 work。方法簡介如下:

首先確認 Arduino studiover 1.8.9 或以下。然後到 Teensy PJC 下載 plugin 並安裝之。

將上述 zip file 爆開後的 TeensyProjects ,抄到 arduinodefault location

留意內附的兩檔案,boards.txtplatform.txt 需抄到的地方與說明所述有異,跟內附的 readme 做。

打開 ino 檔, boardTeensy 3.6sketch Verify/Compile 並上載到 Teensy 內。

怕麻煩的,我將我的 hex file 上載到

完成後,將 Teensy 插到 pcb 上備用。

 

Rpi準備

Rpi 只是用來 config TNC 的設定,我最終的用途不是在 Rpi 上,所以簡單為主。

update 也不做了。在 X windows 環境下,作基本設置將 serial  打開,就下載設置 zip file

rpi_serial

解壓後,如放在 tmp folder,有可能 reboot 後不見了,所以抄回 download folder,按 open current folder in terminal

rpi_terminal

 

由於是 Linux 環境,我們需先設置兩檔案的權限。俾盡佢 777

rpi_777

查看是否可和 tnc 通聯,並讀入預設值

sudo ./pitnc_getparams /dev/serial0 0

 

rpi_config

 

一切順利應見到這個畫面。否則你將陷入苦戰,留意 Rpi 3Bserial port 給了 BT 使用,需轉回給系統使用。

四個 parameter 需更改。

on air speed 轉為 9600

sudo ./pitnc_setparams /dev/serial0 0 8 96

Tx delay 改為 100

sudo ./pitnc_setparams /dev/serial0 0 1 100

Tx 電平設為 96,即約 1V

sudo ./pitnc_setparams /dev/serial0 0 10 96

Rx 電平設為 0,即自動調較

sudo ./pitnc_setparams /dev/serial0 0 9 0

 

之後以 command reboot 一下,再讀入 parameter 確認讀數 ok

sudo ./pitnc_setparams /dev/serial0 0 15 2

無問題可 shutdown Rpi

拔掉兩接到 Rpi Rx Txjumper,接上一 TTL to USB modulemodule 需是可從 USB port 取電(5V) 供下位機那種。

一個 96 TNC 就完成了。

tnc usb

 

9600 iGate 的設立

承舊文,以 Direwolf + SDR 設立一個程序是相若的。

只是舊文是 ver1.3,現在的是 1.5

首先跟 Raspberry Pi APRS 文件內容安裝。

然後需按 Raspberry Pi SDR iGate 安裝 rtl-sdr library 。如不安裝,下文提到的調校會出現 error 訊息。

調校

9600 要求較高,不調校的情況,盡管是用高精度的 SDR 手指,效果是相當不濟的。

調校需一個準確的訊號源,一般網上是介紹接收到電話基站的 GSM 訊號。

但以 SDR 手指自身震盪頻率去得出誤差值 ppm,這避免了接收和干擾問題。

留意所謂高精度手指,其誤差值 0.5ppm 是指線路使用基本頻率震盪器的誤差值。

乘大左後,誤差值也隨之增加。

以這個 command,每1分鐘取樣 ppm 值,等 10 鐘後再取平均值。

rtl_test -p60

以我的 SDR 手指為例,取 7ppm

igate_ppm

 

再輸入以下 command 踢著 9600 Rx iGate

rtl_fm -p 7 -f 144.64M -o 4 -s 48000 | direwolf -c sdr.conf -r 48000 -B 9600 –

 

igate96

有了這個 ppm 補償值後,短期測試接收成功率是 100%

 

實戰

首先將 96 tnc 接到 TH-F7。留意收發機必需支援 9600 baud 才可用在 9600 baud 方案上。

TH-F7 設為 9600 bps,連接方式設為 TNCTNC 模式支援 squelch,但這個 TNCsquelch 輸入。雖用回普通的 MIC/SP  也可,但就受機上的 volume 影響輸出值。用回 TNC 較易成事。

TNC 接到電腦一 USB Port,成功連接後到裝置管理員查看 com port 編號。

aprsis32 (vr2xkp-8) ,設一新 port。選該 com port 號,參數 19200,8n1

用已設好 9600FTM-350 (vr2xkp-6) 發射一個 beacon (dummy location)iGateaprsis32 均可解碼。

96_aprsis_rx

 

aprsis32 發射給 FTM-350SMS 訊息,也可成功解碼。

350_96_decode

 

 

aprsis-32 發出中文 SMS 訊息到 Android phone (VR2XKP-3),訊息支援中文

aprs_sms_ch

 

aprs_sms2

 

 

 
APRS to Email,sure no problem

Ham 友想為在地設立一 radio email system,作為 disaster 備用方案。這就是 Pi Gate 方案的目的。

到其官網,下載 Rpiimage,跟著 user guide 就可設立一個 gateway client 了。

Pi Gate 方案的好處是可於 email 內嵌入圖片。

覺得複雜限制多 (不是人人都喜用 Rpi )。其實唔介意純文字 email 的,更簡單用 aprsis32  也可。

aprsis-32email,就可發出簡單的純文字電郵訊息了。

 

aprs_email

 

aprs_email_ch

 

aprs_email_ch2

 

aprsis-32 發出電郵,約有幾分鐘時滯才收到。

最後提醒一下,不論任何形式的 on air to email /sms,總有一個接上 InternetGateway 去處理。可以是 aprs.finetwork,也可以是自行設立的 Pi gate 等方案。

 

總結

網上甚少介紹支援 9600 速率的 TNC,希望這文能帶給大家一些新點子。

這個開源的方案伸延性高:例

原方案是在 HF 下運作的 300 baud 系統,有設立 HF 電台的同好一試無妨。

Rx Tx 接到一 BT moduleHC-05 等,設定好速率是 19200Teensy 溝通即成為一個支援 9600 on airBluetoothTNC 了。

這是一美國同好的設計,起用在地的 Teensy 模塊,是有點貴之餘,也用不盡其功能。將其開源程式移植到其他 arduino 平台如上一文的 STM32L432 上,既省錢又較易入手。

Teensy 本就內置 micro USB port 了,但就需另置 TTL-to RS232 模塊去和電腦 talk,是有點無奈的。更改程式將之用回 usb 也是一個好課題。

參數設定兩程序是在 RPi 運作的,唔用 Rpi 方案就會覺得搵搞。而這些 arduino 模塊剩餘的 GPIO 眾多,將之用來設定一些參數(如1200/9600) 也是可行的

線路上的電子 volume icMCP4261 是難尋的。但想通了也不外是兩個 vr 而已。 用兩個 50k VR 取代並以人手調校也是一個降低成本的辦法

open source 方案就是留有空間給想像。

 

 

剩餘物資免費贈有緣人

 

9600_pcb

pcb 做了十塊回來,用唔哂也不值錢。本地同好想進入 9600 的世界裡,可 FB 私訊或電郵給我,先到先得,郵寄送遞,送完即止。

沒有條件,但為免浪費,來函的同好需証明你已有關鍵的兩零件,即 Teensy 3.6 和電子 volume ic  MCP4261-50k

証明可以是照片,或網上商店的訂單。總之証明到就 ok 了。所有通訊資料寄出後銷毀不留檔。

This entry was posted in APRS, Research and tagged , , , , . Bookmark the permalink.

One Response to 9600 baud Kiss mode TNC 試製

Leave a Reply

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