2015年7月13日 星期一

新手的多軸飛行小物 - X9D+語音播放數傳資料

*以下說法僅適用於OpenTX 2.0版本,近日OpenTX推出2.1版本,在數傳的資料定義上有很大改變,我未來會在說明。

上一篇提到X9D+透過433可以接收到數傳資料,這一篇我來探討如何透過X9D+播放數傳語音。
我們先來觀看效果,主要透過X9D+右上角的Switch D來啟動語音播放。因為在室內側錄,所以很多資料都是0。


首先為何要有語音,大家都知道在遙控的過程當中,我們眼睛大多是看著多軸,過去以往要看數傳資料,必須低下頭來看App畫面或者是遙控器上的面板,但是這一低頭看一眼到抬頭看多軸的時間差,就足以讓自己迷失眼睛的焦點,尤其在飛場,有時候雖然多軸定點在空中,但是天上好幾架多軸在附近飛,有時候一低頭一抬頭就忘記自己的多軸是哪一台了XD 這是我自己親身經歷。
當時就在思考如果有語音播放,這樣就可以一邊遙控一邊聽資料內容,不需要分心去觀看。後來rctw的kris000提出一套解決方法,透過OSD去播放語音,可以參考此網址:http://www.rctw.net/thread-335581-1-2.html
他大概作法是在多軸上面安裝一個語音播放模組,該模組由MinimOSD控制,我們都知道OSD會接收到飛控板的數傳資料,所以K兄作法是當OSD收到數傳資料後,判別數傳資料並發出語音指令給語音模組,並透過MinimOSD上面的麥克風輸入腳位回傳到地面圖傳接收器連接的FPV螢幕的喇叭。
K兄提出這作法後,這段時間我都沒有去實作,直到把遙控器從Devo10換成X9D+,把玩幾天發現X9D+上有語音播放,部分玩APM/Pixhawk會去設定X9D+的語音播放飛行模式切換,可以參考此影片
https://youtu.be/lOnQJkfAbvU?t=5m27s
知道X9D+的語音播放能力後,就開始思考要如何做到語音播放數傳,後來相繼看到X9D+整合數傳,就覺得這語音數傳整合是可行的。
大概想法就是多軸發射數傳—>地面中繼站—>X9D+收到數傳資料—>程式判別資料—>播放語音
重點就是後面這兩段,X9D+可以使用Lua script去控制,主要參考此份文件 http://www.open-tx.org/2014/07/19/Lua-reference-guide/
在此份文件後面有一份index記載數傳的對應代碼,透過getValue()可以得到數傳的值,透過playFile()可以播放語音檔案
playFile()是獨立一個排程在跑,例如你在一秒內同時下五個playfile()去播放五個分別都是四秒的語音,你會發現要20秒依序播放完畢而且無法中斷它播放,所以程式撰寫要考慮每一段語音播放時間,最好是上一個播放完畢後才可以播放下一段,例如播放現在高度,要等語音播放完高度後,程式才可以抓下一個要播放的資料。
PastedGraphic-2015-07-13-11-15.png
剩下的就是一些邏輯判斷,不斷地寫if else,所以Lua script算是簡單容易撰寫。

沒有留言:

張貼留言