论坛风格切换切换到宽版
  • 15881阅读
  • 59回复

性价比新选择?FX602 APRS解码初步实验 [复制链接]

上一主题 下一主题
离线bg9iu
发帖
12
只看该作者 20楼 发表于: 2010-12-24
贡献了,fx602我从我家的来电显示电话里找一找。
离线BG6JJI
发帖
4942
只看该作者 21楼 发表于: 2010-12-25
'
贡献了,fx602我从我家的来电显示电话里找一找。
'
估计现在便宜电话上的ic都是胶滴
离线wirelessfans
发帖
150
只看该作者 22楼 发表于: 2010-12-27
'
估计现在便宜电话上的ic都是胶滴
'
对,肯定是胶底 。。。

顺带贴个0x7e的前导码:
离线BD6CR
发帖
5950
只看该作者 23楼 发表于: 2010-12-27
有示波器真直观
离线bg9iu
发帖
12
只看该作者 24楼 发表于: 2010-12-27
我做了一个whereavr。
离线bg9iu
发帖
12
只看该作者 25楼 发表于: 2010-12-28
发两张图片
离线bg9iu
发帖
12
只看该作者 26楼 发表于: 2010-12-28
这两张测出了发送的频率
离线wirelessfans
发帖
150
只看该作者 27楼 发表于: 2010-12-29
'
这两张测出了发送的频率
'
哈哈哈,相当不错。发送的波形很完美啊。

不知你注意到没有,你的发送波形图,我感觉应该是hdlc的标志字段0x7e,但为什么你的波形和我的波形在频率上是反的?

另外我看了whereavr的源码,发现程序里面的sinewave生成电路的电阻网络引脚定义和电路图上的顺序正好是反的,你检查下。

里面还有段servo的程序,可以删掉,好像是用pd2来操作舵机的。这一点也没有在电路图上体现。
离线wirelessfans
发帖
150
只看该作者 28楼 发表于: 2010-12-29
一下引用bv2ac的一个回帖,该回帖相当有技术价值,供各位参考,原帖地址:
http://www.hellocq.net/forum/showthread.php?t=96543&page=2&pp=30


aprs, tnc, modem chip(7910,3105,mx614), nmea, mic-e, ax.25, ui格式, ccitt-16, 逢五1插0, nrzi, bell202, 7e同步碼, hdlc.

對業餘無線電同好來說, 無線電 link 傳送數據才是手段, 所以針對無線電轉換在此作一說明 :

aprs 分成 "发送" "接收" 两个工作, "发送站"即汽车, 连 tnc, modem chip 都不需要,
通常用一个单晶片, 先拦截 gps 的 nmea 字串中的 $gprmc 或 $gpgga 字串, 这两种字串含有经纬度, 高度, 时日, 速度方向资料, 他是 4800,n,8,1 异步串列传送, 所以单晶片要有 uart 阜的比较好写, 另外可以考量读取气象感应器的adc, 或是雨量计数, 一并转为 mic-e 格式文字. 这部份 tapr 组织发布的 aprs 规格书有详细的转换说明.
mic-e 把目的站名栏位改成为经度值, 因为 aprs 是广播用, 不需要指定目的站, 所以正好利用 ax.25 的 ui 型字串, 节省了目的站 7 字元, 改成为经度值 (数据组a)

接下来等一段时间, 监测频道空挡后, 要开启 ax.25 转换, 一般 aprs 无线网络, 通常指定二层数据中继, 名字是 relay, wide. (建议任何固定地面站台指定自己的 tnc 中转代名为 relay, 下 mya relay 指令即可, 高山站台为 mya wide)

ax25 字串里有一种 ui 型字串 (就是 数据组a=目的站名, 始发站名, 中转站名relay, 中转站名 wide 后, 跟着是 "03f0" , 再跟着数据组b, ccitt 查核码) 数据组b 为任意长度
, 含有纬度, 速度方向, 高度, 移动代码, 工作代码, 气象资料, 招呼语....

ui 字串的 每个站名栏位为7个字其中6个是呼号, 后一个很有意思, 又表示分支, 又表示站名结尾, 在中转站又表示 "以中转, 未中转"旗标, 站名栏位每个字必须左移一位元, 所以, 许多用来看串列传送的软件看不懂ax25 字串就是这原因.

编定ax25 字串后, 单晶片必徐调度二个个脚位, 一个开动无线电ptt发射, 一个做 nrzi 输出, 连到modem chip的调制入端, 以 1200 bps 速度同步(没有起始结束码) 送高低信号, (modem chip 自然会转成高=1200hz, 低=2200hz 这叫 bell202調制協定),

最开始的高低信号内容是 7e7e7e7e.... 大約發送 40个, 这就是同步码, 也用来清频道, 唤醒频道上所有 tnc, 数转 站台, 7e = 01111110, 含有6个连续1, 这就是为何同步传送的数据必须逢五个1插入一个0的道理--- 避免被认为是同步而清除. 每输出一个位元必须做 ccitt-16 计算, 但是插入的0不用算(台湾的番薯号为了算不算此位元白白拖了几天时间 ), 等说有数据传完, 再传送ccitt, 这些ccitt 位元也别算入ccitt 裡 最后再送几个 7e7e7e... 表示封包结束.

以上的 7e开始,data,逢五1加0,ccitt计算,7e结束 过程称为 hdlc 同步流程.

上述提到的是单晶片做 nrzi 输出, nrzi 是: data1= 不换向, data0= 换向.
所以如果传送 7e = 01111110, 在 nrzi 端子上看到的是 : 反不不不不不不反 的波形变化.... 以前是用 8530 hdlc 处理ic做, 或是动用shift register ic做, 现在用单晶片就可以了.

上述又提到是把1200/2200 交给 modem ic 处理, 在 tt. mim 中是让pic 代行 modem 任务, 把 high-->1200hz, low-->2200hz 也让软件执行adc 波形转换,....

现在高手太多, 只要搞清楚这些关键, 很容易就作出便宜的aprs发送器. 不需 tnc, modem chip.


最后是 "接收端", 从无线电喇叭收信需经过解调制, 这时必须用 modem chip + 單晶片, 或是 有声卡的电脑(执行 uiview) , 无论单晶片或电脑, 只要针对空中的 ui 格式字串处理就行, (所以才叫 ui-view), 下一步就是把字串转为 mic-e 字串, 所有aprs 软件都能把 mic-e 化回 经纬资料, 并叫出地图标上记号....

如果不透过无线电网路, 那就可直接在互联网上交换 mic-e 或 nmea 字串. 也行...
这样, 以上的东东不了解也能玩 aprs...
离线BD4OS
发帖
6198
只看该作者 29楼 发表于: 2010-12-29
nrzi方式采用的是解调后数据的上升沿和下降沿作为"0",其它为"1",所以单从波形看两位都没有错(没有附带时钟参考不好判断时序)。

基于上面的原因解调的数据用于译码可能还需要在程序上进行变换,两位也可以参考开源的程序看看是不是跟我说的一样。
离线wirelessfans
发帖
150
只看该作者 30楼 发表于: 2010-12-29
'
nrzi方式采用的是解调后数据的上升沿和下降沿作为"0",其它为"1",所以单从波形看两位都没有错(没有附带时钟参考不好判断时序)。
基于上面的原因解调的数据用于译码可能还需要在程序上进行变换,两位也可以参考开源的程序看看是不是跟我说的一样。
'
谢谢。正在做nrzi解码,在看相关的资料。

您说到“没有附带时钟参考不好判断时序”,但我看到的关于nrzi的资料,nrzi的一个最大的特点就是不需要时钟。nrzi本身是自校正时序的,还需要时钟判断吗?

在一个ax25 ui帧中,hdlc 前导0x7e,结尾0x7e,中间nrzi编码且逢5个1插0。在编码为fsk发射的时候,唯一不同的应该是起始电平是高还是低,这应该是导致了2200/1200在波形上差别的唯一原因?附图解释了我的这种说法。黑色是我画上去的。

我的前导是高低低低低低低高,楼上朋友的是低高高高高高高低,从nrzi编码角度---跳0不跳1来看确实是对的。另外,whereavr的源码和电路图在sinewave输出引脚上是反的,请楼上检查一下是否如此,然后再做下测试。

正在看相关源码,以上有思考不周的地方还请多多指教。
离线wirelessfans
发帖
150
只看该作者 31楼 发表于: 2010-12-29
编码部分我还没有做,这部分应该是最简单的。下午做个线路板验证下不同的起始电平解码后的波形。解码部分做好后,一切都不是问题了。这段时间看了很多aprs的资料,学了很多以前不知道的东西,感觉收获很大。从ax25,hdlc,fsk mod/demod,nrzi,收获颇丰。对无线通信有了全新的认识。爽。
离线bg9iu
发帖
12
只看该作者 32楼 发表于: 2010-12-29
servo的程序我看到了,因为不影响使用没有删除。他在放飞的气球上用舵机干什么。
我用pd2插入到解调中看解调的状况。“发现程序里面的sinewave生成电路的电阻网络引脚定义和电路图上的顺序正好是反的”这个我到没发现,不过我注意到我们的前导波形是反的。但是我用电脑上的agwp能够成功解调。
测出的波形是通过对讲机接收到的波形(高频已被滤除),在发射端测波形很不好。
离线bg9iu
发帖
12
只看该作者 33楼 发表于: 2010-12-29
我原来也对波形反相感到疑惑。看到wirelessfans对nrzi的解释现在也理解了。波形的相位相反,但是只要遵循0跳1不跳,连续5个1也要跳(为了同步时钟)的规则就行了。
离线bg9iu
发帖
12
只看该作者 34楼 发表于: 2010-12-29
看了代码,发现作者在声明变量 txtone 时并未初始化变量,如果初始化成mark(1200 hz.)。在发送

0x7e时,先发低位0(变)音调改变为space(2200 hz.)接着后面的1都不变。波形就应该和wirelessfans

的相同了。
离线BD4OS
发帖
6198
只看该作者 35楼 发表于: 2010-12-29
'
谢谢。正在做nrzi解码,在看相关的资料。
您说到“没有附带时钟参考不好判断时序”,但我看到的关于nrzi的资料,nrzi的一个最大的特点就是不需要时钟。nrzi本身是自校正时序的,还需要时钟判断吗?
在一个ax25 ui帧中,hdlc 前导0x7e,结尾0x7e,中间nrzi编码且逢5个1插0。在编码为fsk发射的时候,唯一不同的应该是起始电平是高还是低,这应该是导致了2200/1200在波形上差别的唯一原因?附图解释了我的这种说法。黑色是我画上去的。
我的前导是高低低低低低低高,楼上朋友的是低高高高高高高低,从nrzi编码角度---跳0不跳1来看确实是对的。另外,whereavr的源码和电路图在sinewave输出引脚上是反的,请楼上检查一下是否如此,然后再做下测试。
正在看相关源码,以上有思考不周的地方还请多多指教。 [表情]
'

不需要时钟是指不需要发送时钟,接收端必定要有时钟并通过发送端fcs校准,我上面的意思是没有对应的时钟参考不好判断波形里的具体数据,也就是说我不容易通过波形译出你说的01111110。

在fsk输出中起始电平的高低完全取决于数据,这不是导致上面波形差异的原因,上面9iu已经说了这应该取决于到底用space还是用mark初始化。
离线BG6JJI
发帖
4942
只看该作者 36楼 发表于: 2010-12-29
都是高手,我喜欢......看~~~
离线BD4OS
发帖
6198
只看该作者 37楼 发表于: 2010-12-30
'
都是高手,我喜欢......看~~~
'

左边游泳的小家伙是我儿子叫"高足",我是他爹有人也叫我"高手"

呵呵,要过年了开个玩笑活跃一下气氛! 也祝愿上面两位实验成功!
离线BG6JJI
发帖
4942
只看该作者 38楼 发表于: 2010-12-30
'
左边游泳的小家伙是我儿子叫"高足",我是他爹有人也叫我"高手" [表情]
呵呵,要过年了开个玩笑活跃一下气氛! 也祝愿上面两位实验成功!
'
厉害!我还只会蛙泳,一次只能游来回一趟半,就是三个游泳池长
离线wirelessfans
发帖
150
只看该作者 39楼 发表于: 2010-12-31
'
左边游泳的小家伙是我儿子叫"高足",我是他爹有人也叫我"高手" [表情]
呵呵,要过年了开个玩笑活跃一下气氛! 也祝愿上面两位实验成功!
'
谢谢呀bd4os

刚看了一个英文的解码算法文档,对细节说的很详细,受益匪浅哦,看了一会儿,就来看帖子啦,一会儿整个儿的看完了,希望有灵感写出点什么来哈。

顺祝新年快乐呀