找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12496|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

PC搖桿飛玩具小四軸—用Arduino & NRF24L01+模塊實(shí)現(xiàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-3-4 17:44 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
       冬天溫度太低不適合室外飛四軸,就想買個小四軸室內(nèi)飛,Crazyflie買不起,連國內(nèi)復(fù)刻的Crazepony都還是太貴。最后趕在年前買了個Devo 7e控和JJRC(以前從來沒聽說過的公司)出的JJ1000小四軸在室內(nèi)飛,改完控發(fā)現(xiàn)這個玩具小四軸真心很好飛。
        而且個人覺得這個飛機(jī)外形還比較順眼,簡潔低調(diào),不浮夸不幼稚:
        
        Devo 7e就不過多介紹了,太出名的一個小手控,改控就是焊高頻頭電阻、加高頻頭、加三段開關(guān)、加旋鈕,這里嚴(yán)重參考了Galee大的教程(也是因?yàn)镚alee我才在ednchina開硬件博客)。不過我最后用的是Devation的Nightly Build固件,因?yàn)镚alee固件沒有NRF24高頻頭的支持,可惜了,我很喜歡Galee的UI設(shè)計(jì)。
        改控的時候發(fā)現(xiàn)這個小四軸其實(shí)用nrf24l01+高頻頭就可以通信,協(xié)議用偉力V202。所以用arduino也可以控制NRF24,然后PC通過串口控制Arduino,玩起來就可以很靈活,配合PC端軟件還可以用上飛行搖桿和Xbox One Controller。Arduino手上倒是很多,想到N年前買的NRF24L01+模塊,一直壓箱底沒有玩過,這次正好派上用場。

        所以總的來說,控制流程就是:
        飛行搖桿/游戲手柄 ---USB--->
        PC端Node.js采集程序 ---USB轉(zhuǎn)串口--->
        Arduino ---SPI--->
        NRF24 ---2.4G V202協(xié)議--->
        JJ1000

        各個部分硬件的連接,只有Arduino和NRF24模塊有點(diǎn)難度,要點(diǎn):
        首先,這個模塊是SPI的;
        其次,模塊的電源要接3V3,但I(xiàn)O口可以兼容5V TTL;
        最后就是要把模塊的CE腳接到Arduino的9腳上(實(shí)際空的IO口都可以,但是需要改Arduino程序)
        所以8個腳的模塊,只有IRQ可以留空不接。
        我的模塊沒有帶PA和外置天線?碈razepony的說法是這種模塊只能控10來米,當(dāng)然在室內(nèi)玩是綽綽有余的。等調(diào)試好了再去買帶PA和天線的模塊不遲(改控用那種就行):
        
        整個控制流程看起來復(fù)雜,實(shí)際上只需要開發(fā)兩個部分的軟件,PC上的Node.js搖桿采集程序和Arduino控制程序。

        首先說說Arduino端的控制程序,V202的協(xié)議Deveation論壇上有個victzh大神發(fā)了**討論貼,并且給出了基于Python和Arduino的代碼。
        我對victzh的代碼做了點(diǎn)修改,把控制信號從ADC引腳讀取,改成從串口命令解析。命令的格式很簡單:
        cmd:[thr],[yaw],[rol],[pit]
        比如:cmd:100,127,127,200
        目前還沒有考慮開關(guān)燈之類的設(shè)置,當(dāng)然這個協(xié)議要擴(kuò)展也是很簡單的。
        我的Arduino V202控制器代碼放在了Github上:

        https://github.com/xiedidan/v202-arduino-mod

        接下來就是PC端的采集程序了,最近工作一直用Node.js很順手,而且Node可以實(shí)現(xiàn)各個平臺的移植,NPM上的庫也是非常豐富的,所以就用Node了。
        采集程序思路也是很簡單,用cylon-joysitck庫就可以采集搖桿動作,從-1.0到1.0,換算一下變成0-255,拼好命令再用serialport發(fā)送出去就是了。cylon-joystick目前只能在Node 0.12.x版本下用,4以上的版本是用不了的,另外在Windows下需要編譯器支持,我裝了個VS Community 2015。
        采集程序同樣放在Github上了:

        https://github.com/xiedidan/v202-commander

        目前支持ThurstMaster T.16000M搖桿(這桿子精度不錯,回彈力度偏輕,但油門行程太短),默認(rèn)使用找到的第一個串口。git clone回來之后npm install,注意npm編譯有可能需要Python 2.X的支持(3以上不能用),裝好之后執(zhí)行node v202-commander.js即可。

        其實(shí)到這里就可以飛起來了,但是真正飛起來之后我發(fā)現(xiàn)超級難飛,因?yàn)橛烷T和搖桿都沒有曲線和比例控制。
        于是我又給油門加了曲線控制(一共有三種曲線:平方根、直線、平方),按T16000M右手邊最左的兩個鍵可以切換。個人覺得飛四軸平方根油門曲線最好用,油門中間偏大的部分比較精細(xì)(我的飛機(jī)負(fù)載普遍偏大……),起飛降落都比較干脆,避免地效。
        還有搖桿的比例控制,從12.5%到100%五檔,按T16000M上右手邊最右的兩個鍵就可以切換。目前覺得12.5%-25%比較好用,更大的比例最好配合曲線使用。
        右手中間兩個鍵留給搖桿曲線,目前還還沒想好用什么曲線,暫時沒有實(shí)現(xiàn)。
        因?yàn)槲沂亲笫治諚U,所有按鍵都在右邊,右手握桿可以改成左手按鍵。
        到現(xiàn)在飛機(jī)就比較好飛了,懸?刂瓶梢暂p易達(dá)到Devo 7e的效果,14位霍爾搖桿,比一般12位電位器好多了。

        對于其他不是NRF24的玩具飛機(jī)來說,道理都是一樣的,使用對應(yīng)的高頻頭(一般就A7105和CC2500,盡量買帶PA和外置天線的模塊)和協(xié)議就可以了,**協(xié)議可以多搜索一下Devation論壇,國外大神都很有共享精神。
        如果把Node采集程序放到樹莓派上去,再寫個程序用樹莓派SPI控制NRF24,就完全脫離電腦的牽絆了。
        再想遠(yuǎn)一點(diǎn),樹莓派甚至可以用來合成PPM信號,用遙控器發(fā)射出去控制真正的航模,完全可以外場使用。
        PC飛行搖桿可以比遙控器精度手感好得多。另外基于Node程序的混控、曲線之類可以做得很靈活,不用再被遙控器限制了,工程師之友,呵呵。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:208070 發(fā)表于 2017-6-5 16:10 | 只看該作者
這樣操控比起遙控器不會有延遲感嗎?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表