2016年10月2日 星期日

新手的多軸 - 433背蓋模組+數傳

在很久以前我介紹433的中繼站加上數傳功能 http://oaione.blogspot.tw/2015/07/x9d433.html
但使用一陣子後我發現有一個小小問題,有時候出去飛只是短暫測試,多軸就在視線範圍內根本不需要中繼站,甚至可以說不需要433,但是總不可能在掛一顆X8R在多軸上吧。
所以我後來都在X9D+後面背蓋塞一個433發射模組,這樣就可以直接控制,也不需要老是拎一個大大中繼站出去。



輕便之後就帶來了不方便,這方法雖然讓我可以拎著X9D+就直接出門遙控,但是功能上半殘了,無法顯示數傳在LCD上,讓我之前惡搞的語音播放數傳也無法作用 http://oaione.blogspot.tw/2015/07/x9d.html ,我之前沒有去認真思考這問題是否有沒有解法,所以也就一直放著不管。

直到最近看到有人在網路上討論這問題,有人也放出程式 https://github.com/MikeBland/APM_Mavlink_to_FrSky ,我就無聊嘗試看看,但怎試都不成功。
但頭都洗一半了,事情做一半不成功讓我很煩躁,所以我就認真研究一下他這原理。
X9D+後面這個外掛無線模組腳位大致上如下圖,平常我們控制都是使用PPM/BAT/GND這三個腳位,PPM主要拿來傳輸訊號使用。



其中最關鍵一個腳位是SPORT,這在接收器X8R上面也有,主要是拿來接收一些感應器資料使用。但這腳位在X9D+上,主要是拿來幹嘛呢?我看了一下opentx的說明
這腳位主要是數傳輸出,輸出....!?輸出!?…好像哪裡怪怪的,我是要接收數傳ㄟ...
英文說明就是沒耐心看,仔細在看一下這網頁上面說明,原來這個port透過設定,可以改成接收數傳,太棒了! 這就是我們要的,透過這個Port接收數傳資料就可以顯示在X9D+ 面板上面了,但是數傳資料哪來呢?

原來433模組的傳輸訊號方法如下:(懶得畫圖,就讓我用文字畫:D)

 [多軸+433 TX]<——>433訊號(控制訊號+數傳資料)<——>[433接收] <——>PPM腳位<——>X9D+

從過去經驗我們可以知道,433訊號已經整合數傳資料雙向傳輸,但是在433接收端透過PPM跟X9D+溝通遙控資料而已,數傳資料回到433接收端一直沒有被使用。
在過去中繼站作法就是放一個Teensy去轉換,把433接收端的數傳資料送給Teensy去轉換,把Mavlink轉換成Frsky的S.Port格式,所以這解法就出現了,新的路線如下

[多軸+433 TX]<——>433訊號(控制訊號+數傳資料)<——>[433接收] <—數傳資料—>Teensy轉換—>S.Port—>X9D+ 

簡單說就是跟中繼站一樣,在433接收端塞一個Teensy去轉換,我就努力塞進去如下圖....心想這個簡單當初怎沒想到阿!!!!




一上電,沒資料~~~沒資料~~~沒資料~~~ 果然不簡單!!! 在冷靜思考一下,看一下網路他們討論,發現一個最關鍵的地方,S.Port的資料必須是透過主動輪詢拿到的,這在接收器上面是沒問題的,但是在X9D+上的S.Port卻不是這麼一回事。幸好新版的Frsky S.Port telemetry library在某一個版本新增這個功能,當Teensy收到數傳資料並轉換成Frsky格式後,可以主動塞給S.Port,這樣就達到我們數傳顯示功能。

Update:原本433整合數傳的程式已經整合polling功能,只需要開啟即可 https://github.com/Clooney82/MavLink_FrSkySPort
Frsky S.Port telemetry library討論區 http://www.rcgroups.com/forums/showthread.php?t=2245978

結合以上作法,終於達到我的要求,433背蓋接收模組也可以正常顯示數傳了!





沒有留言:

張貼留言