|
冬天溫度太低不適合室外飛四軸,就想買個小四軸室內飛,Crazyflie買不起,連國內復刻的Crazepony都還是太貴。最后趕在年前買了個Devo 7e控和JJRC(以前從來沒聽說過的公司)出的JJ1000小四軸在室內飛,改完控發現這個玩具小四軸真心很好飛。
而且個人覺得這個飛機外形還比較順眼,簡潔低調,不浮夸不幼稚:
Devo 7e就不過多介紹了,太出名的一個小手控,改控就是焊高頻頭電阻、加高頻頭、加三段開關、加旋鈕,這里嚴重參考了Galee大的教程(也是因為Galee我才在ednchina開硬件博客)。不過我最后用的是Devation的Nightly Build固件,因為Galee固件沒有NRF24高頻頭的支持,可惜了,我很喜歡Galee的UI設計。
改控的時候發現這個小四軸其實用nrf24l01+高頻頭就可以通信,協議用偉力V202。所以用arduino也可以控制NRF24,然后PC通過串口控制Arduino,玩起來就可以很靈活,配合PC端軟件還可以用上飛行搖桿和Xbox One Controller。Arduino手上倒是很多,想到N年前買的NRF24L01+模塊,一直壓箱底沒有玩過,這次正好派上用場。
所以總的來說,控制流程就是:
飛行搖桿/游戲手柄 ---USB--->
PC端Node.js采集程序 ---USB轉串口--->
Arduino ---SPI--->
NRF24 ---2.4G V202協議--->
JJ1000
各個部分硬件的連接,只有Arduino和NRF24模塊有點難度,要點:
首先,這個模塊是SPI的;
其次,模塊的電源要接3V3,但IO口可以兼容5V TTL;
最后就是要把模塊的CE腳接到Arduino的9腳上(實際空的IO口都可以,但是需要改Arduino程序)
所以8個腳的模塊,只有IRQ可以留空不接。
我的模塊沒有帶PA和外置天線。看Crazepony的說法是這種模塊只能控10來米,當然在室內玩是綽綽有余的。等調試好了再去買帶PA和天線的模塊不遲(改控用那種就行):

整個控制流程看起來復雜,實際上只需要開發兩個部分的軟件,PC上的Node.js搖桿采集程序和Arduino控制程序。
首先說說Arduino端的控制程序,V202的協議Deveation論壇上有個victzh大神發了**討論貼,并且給出了基于Python和Arduino的代碼。
我對victzh的代碼做了點修改,把控制信號從ADC引腳讀取,改成從串口命令解析。命令的格式很簡單:
cmd:[thr],[yaw],[rol],[pit]
比如:cmd:100,127,127,200
目前還沒有考慮開關燈之類的設置,當然這個協議要擴展也是很簡單的。
我的Arduino V202控制器代碼放在了Github上:
https://github.com/xiedidan/v202-arduino-mod
接下來就是PC端的采集程序了,最近工作一直用Node.js很順手,而且Node可以實現各個平臺的移植,NPM上的庫也是非常豐富的,所以就用Node了。
采集程序思路也是很簡單,用cylon-joysitck庫就可以采集搖桿動作,從-1.0到1.0,換算一下變成0-255,拼好命令再用serialport發送出去就是了。cylon-joystick目前只能在Node 0.12.x版本下用,4以上的版本是用不了的,另外在Windows下需要編譯器支持,我裝了個VS Community 2015。
采集程序同樣放在Github上了:
https://github.com/xiedidan/v202-commander
目前支持ThurstMaster T.16000M搖桿(這桿子精度不錯,回彈力度偏輕,但油門行程太短),默認使用找到的第一個串口。git clone回來之后npm install,注意npm編譯有可能需要Python 2.X的支持(3以上不能用),裝好之后執行node v202-commander.js即可。
其實到這里就可以飛起來了,但是真正飛起來之后我發現超級難飛,因為油門和搖桿都沒有曲線和比例控制。
于是我又給油門加了曲線控制(一共有三種曲線:平方根、直線、平方),按T16000M右手邊最左的兩個鍵可以切換。個人覺得飛四軸平方根油門曲線最好用,油門中間偏大的部分比較精細(我的飛機負載普遍偏大……),起飛降落都比較干脆,避免地效。
還有搖桿的比例控制,從12.5%到100%五檔,按T16000M上右手邊最右的兩個鍵就可以切換。目前覺得12.5%-25%比較好用,更大的比例最好配合曲線使用。
右手中間兩個鍵留給搖桿曲線,目前還還沒想好用什么曲線,暫時沒有實現。
因為我是左手握桿,所有按鍵都在右邊,右手握桿可以改成左手按鍵。
到現在飛機就比較好飛了,懸停控制可以輕易達到Devo 7e的效果,14位霍爾搖桿,比一般12位電位器好多了。
對于其他不是NRF24的玩具飛機來說,道理都是一樣的,使用對應的高頻頭(一般就A7105和CC2500,盡量買帶PA和外置天線的模塊)和協議就可以了,**協議可以多搜索一下Devation論壇,國外大神都很有共享精神。
如果把Node采集程序放到樹莓派上去,再寫個程序用樹莓派SPI控制NRF24,就完全脫離電腦的牽絆了。
再想遠一點,樹莓派甚至可以用來合成PPM信號,用遙控器發射出去控制真正的航模,完全可以外場使用。
PC飛行搖桿可以比遙控器精度手感好得多。另外基于Node程序的混控、曲線之類可以做得很靈活,不用再被遙控器限制了,工程師之友,呵呵。
|
|