花了兩個(gè)半月1000大洋,終於搞定了一臺(tái)MWC飛控四軸(坑爹叻),期間很多人問MWC接GPS和聲納的方法,我這裡集中寫一下當(dāng)作筆記。希望能幫助到一些朋友,以及順便請(qǐng)教一下高手們一些小問題。
———————————————————————————————————————————————————————————————————————————————
首先,
1.MWC的代碼默認(rèn)支持TTL的GPS的,默認(rèn)指定在第二個(gè)串口。論壇裡也有人實(shí)現(xiàn)了直接安裝的IIC-GPS。
2.MWC的代碼的設(shè)置裡雖然支持安裝聲納,但是並沒有實(shí)際起作用 (/* Sonar */ // for visualization purpose currently - no control code behind)。論壇裡也有人實(shí)現(xiàn)了串口的聲納代碼。
所以,
1.2560芯片的MWC是可以直接接入串口的GPS,但是無法使用聲納。使用論壇裡高手修改的代碼是可以使用串口聲納的,具體實(shí)現(xiàn)分為用聲納頂替氣壓模塊,和類似玉兔的切換式,我沒試驗(yàn)過,應(yīng)該是有利有弊。
2.而328P的MWC雖然能接入GPS卻不實(shí)用,因?yàn)橐话銇碚f接GPS就要進(jìn)行後期的尋星定位調(diào)試(每次開機(jī)最好都查看一下尋星有沒有完成),328P被插入串口GPS就無法進(jìn)行串口調(diào)試了,更加無法使用串口超聲波。在這裡應(yīng)該也可以用IIC的GPS接入,需要使用論壇裡高手修改的代碼,但是具體代碼我也沒測(cè)試,而且也不清楚是否同時(shí)支持IIC的聲納。IIC-GPS和IIC的聲納都比普通的貴一點(diǎn)。其實(shí)常用的Ublox NEO-6M上有IIC接口的,可以自己改裝,但是聲納就沒辦法只能買貴的了。
於是,
我喜愛的解決方法是用328P安裝I2C -GPS導(dǎo)航板,這裡可以用另一塊328P來DIY I2C -GPS導(dǎo)航板,實(shí)際安裝是串口GPS和電平模式的聲納安裝到328P製作的導(dǎo)航板,導(dǎo)航板安裝至MWC飛控。
導(dǎo)航板代碼在
這樣就能實(shí)現(xiàn)GPS功能,因?yàn)閷?dǎo)航板並不單純的是信號(hào)轉(zhuǎn)接,裡面寫入了一些距離計(jì)算的方法,並且把聲納用於修正GPS模塊胡扯的高度。
結(jié)果
理論上來說最佳的方法是用2560的芯片同時(shí)安裝串口的GPS和串口的聲納,同時(shí)使用論壇裡修改的代碼。
優(yōu)點(diǎn):功耗小,接線簡單。缺點(diǎn):要會(huì)修改代碼,而且代碼後期維護(hù)或許是個(gè)問題。
328P還是不用考慮直接連接這兩個(gè)傳感器了,2560和328P的差價(jià)也夠再買一個(gè)導(dǎo)航板了。
用導(dǎo)航板的優(yōu)點(diǎn):距離計(jì)算效果好,可以無憂使用聲納。缺點(diǎn),聲納模塊無法調(diào)試和直觀的看到數(shù)據(jù),功耗大(因?yàn)樵黾恿艘粔K328P),接線需要一定考究(I2C error問題)。
———————————————————————————————————————————————————————————————————————————————
我自己使用的就是兩塊328P的方法,現(xiàn)在說一下具體的安裝方法,其實(shí)方法在上面的也有,不過是英文的,我就冒昧的簡單說明一下。
以各種基於328PMWC飛控、Arduino Pro mini、Ublox NEO-6M、普通的15元聲納為例
代碼部分:
在MWC的代碼裡,GPS部分,只要開啟//#define I2C_GPS這一行,其餘全部註釋掉
導(dǎo)航代碼把硬件連接部分解釋一下
//////////////////////////////////////////////////////////////////////////////
// i2C comm definitions
//
#define I2C_ADDRESS 0x20 //7 bit address 0x40 write, 0x41 read IIC總線的地址,默認(rèn)不需要修改,要修改請(qǐng)仔細(xì)研究IIC協(xié)議
/* GPS Lead filter - predicts gps position based on the x/y speed. helps overcome the gps lag. */ GPS預(yù)測(cè),因?yàn)間ps信號(hào)有滯後性,需要計(jì)算提前量
#define GPS_LEAD_FILTER 默認(rèn)開啟
/* Serial speed of the GPS */ gps的波特率
#define GPS_SERIAL_SPEED 115200 用UBLOX模塊,並且導(dǎo)入了u-blox-config.ublox.txt的話,就是115200,其他模塊自行對(duì)應(yīng)並修改
/* GPS protocol GPS的類型,以及用法介紹
* NMEA - Standard NMEA protocol GGA, GSA and RMC sentences are needed
* UBLOX - U-Blox binary protocol, use the ublox config file (u-blox-config.ublox.txt) from the source tree
* MTK_BINARY16 - MTK binary protocol (DIYDrones v1.6)
* MTK_BINARY19 - MTK binary protocol (DIYDrones v1.9)
* MTK_INIT - Initialize MTK GPS (if MTK_BINARY16 or 19 is not defined then it goes to NMEA, otherwise it goes for binary)
* With MTK and UBLOX you don't have to use GPS_FILTERING in multiwii code !!!
*
*/
//#define NMEA
#define UBLOX 一般都是用UBLOX模塊
//#define MTK_BINARY16
//#define MTK_BINARY19
//#define INIT_MTK_GPS
//////////////////////////////////////////////////////////////////////////////
// Sonar support. Based on code mods from Crazy Al 聲納支持,代碼基於Crazy Al
// Connect Sonar trigger to PC3 (arduino pin A3) and echo output to PC2 (arduino pin A2) 連接聲納的trigger至arduino的A3,連接聲納的echo至arduino的A2
// Supported sonars : 支持的聲納類型:
// Ping/Pong type sonar modules such as HC-SR04, SRF-04, DYP-ME007 and many others... 電平觸發(fā)式聲納,比如HC-SR04, SRF-04, DYP-ME007等等 《——就是淘寶上15元那種,把跳帽拔掉就是電平模式,不拔掉就是串口模式,具體拔不拔自己研究
// PWM output continous sonars such as the MAXBOTIX series (connect pin2(PWM out) of the sonar to PC2 PWM聲納,比如MAXBOTIX,這種聲納的PWM腳連接到arduino的P2 《——這種聲納就是汽車的倒車?yán)走_(dá)上用的,但是汽車上那個(gè)是12V的
#define SONAR // USE Sonar 開啟聲納
// Sonar type uncomment only one at a time 下面模式只能選一項(xiàng)
#define PINGPONG 電平觸發(fā)式聲納
//#define MAXBOTIX_PWM // PWM output mode sonar PWM聲納
剩下的是導(dǎo)航板的PID,就不解釋了。
硬件部分:
UBLOX的GPS模塊先用USB轉(zhuǎn)串口模塊連接PC,這裡順便提醒一下,GPS的TX接串口模塊的RX,GPS的RX接串口的TX,因?yàn)榭吹接胁簧偃丝ㄔ谶@個(gè)問題上,串口模塊也不需要買,用MWC的FTDI下載器上的串口就行了。
連接以後,下載u-center這個(gè)軟件用來調(diào)整GPS的模塊,以適應(yīng)導(dǎo)航板
打開以後把導(dǎo)航板代碼I2C_GPS_NAV_v2.2Beta1-r62裡的u-blox-config.ublox.txt,導(dǎo)入GPS 具體導(dǎo)入方法見
ublox-GPS i2c轉(zhuǎn)板二進(jìn)制碼導(dǎo)入方法.pdf
(53 KB, 下載次數(shù): 39)
2016-4-11 15:42 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
然後把GPS的TX接導(dǎo)航板(Arduino Pro mini)的RX,GPS的RX接接導(dǎo)航板(Arduino Pro mini)的TX
聲納切換為電平模式,一般來說就是那種15元的,後面跳帽拔掉,然後連接聲納的trigger至(Arduino Pro mini)的A3,連接聲納的接導(dǎo)航板(Arduino Pro mini)的A2
最後把導(dǎo)航板的IIC接口,也就是Arduino Pro mini的A4、A5,連接328P飛控的A4、A5。
——————————————————————————————————————————————————————————————————————————
順便發(fā)一下小灰機(jī)靚照
|
IMG_20130501_165251_調(diào)整大小.jpg
172608wwdu4sizcwvfwcc9.jpg (43.31 KB, 下載次數(shù): 96)
下載附件
2016-4-11 15:47 上傳
IMG_20130501_165240_調(diào)整大小.jpg
172605galnlbgwlwnbb4gu.jpg (64.74 KB, 下載次數(shù): 123)
下載附件
2016-4-11 15:47 上傳
IMG_20130501_165218_調(diào)整大小.jpg
1726038i3l7owlh8bbii7f.jpg (63.43 KB, 下載次數(shù): 119)
下載附件
2016-4-11 15:47 上傳
最後說一下我在上面安裝中出現(xiàn)的問題,方便大家debug
第一個(gè)遇到的問題是GPS導(dǎo)入文件會(huì)不成功,這是因?yàn)閷?dǎo)入其實(shí)是一條一條導(dǎo)入設(shè)置的,gps默認(rèn)波特率是9800,當(dāng)導(dǎo)入到115200的時(shí)候波特率變了,後面的就導(dǎo)入不進(jìn)去了,所以需要在第一次導(dǎo)入後,在u-center改波特率115200,然後再導(dǎo)入一次。這樣做以後並不會(huì)保存設(shè)置,還需要到messages-NMEA裡進(jìn)入U(xiǎn)BX——》CFG——》CFG點(diǎn)擊右下角的Send保存設(shè)置
第二個(gè)問題是,裝上聲納以後在MWC的GUI裡也不會(huì)顯示聲納開啟,因?yàn)镸WC本身就沒有相應(yīng)代碼,但是他確實(shí)是在工作的,簡單來說把導(dǎo)航板的聲納代碼關(guān)閉就能發(fā)現(xiàn)區(qū)別了。
然後我的問題還沒完,我在一開始使用的時(shí)候總是剛導(dǎo)入是可以定位的,一會(huì)兒gps就不工作了。研究了半天,原來是我買的便宜的Ublox NEO-6M沒有EEPROM,同時(shí)上面的記憶電池因?yàn)槌鰪S太久導(dǎo)致沒電了OTL。。。充了一晚上電以後故障消除(所以可以買帶記憶芯片的GPS,或者跟我一樣先充電。。。)
第三個(gè)問題是關(guān)於I2C error
我看了不少資料沒有我這種情況,但是作為特例還是要說一下
癥狀是安裝好以後,所有傳感器包括GPS都是工作正常的。但是I2C會(huì)有錯(cuò)誤,雖然是個(gè)位數(shù)的錯(cuò)誤,長時(shí)間運(yùn)行以後,隔十幾分鐘會(huì)增長幾位。
在更換了三次I2C的信號(hào)線以後,情況有所改善,I2C error越來越少,增長越來越慢,但是不能杜絕。經(jīng)過仔細(xì)檢查以後,發(fā)現(xiàn)是導(dǎo)航板供電不足,把其中一個(gè)電調(diào)的電源挑出,送至導(dǎo)航板以後,開機(jī)I2C error還是會(huì)有3個(gè),但是不會(huì)再增長。
第四個(gè)問題是關(guān)於調(diào)試
因?yàn)間ps需要每次在飛行前檢查定位,所以一般會(huì)挑選藍(lán)牙透串模塊。但是我一開始買的是一個(gè)只有100元的FM遙控器,在藍(lán)牙的干擾下無法控制。後來換了論壇裡高人推薦的F6TB,總算是消除了無法控制的問題。但是我在長時(shí)間老化測(cè)試中發(fā)現(xiàn)就算是控挨著接收機(jī),偶爾還是會(huì)有被干擾失控的現(xiàn)象,敬請(qǐng)大家注意。
——————————————————————————————————————————————————————————————————————————
最後請(qǐng)教一下論壇裡各位高手一些小問題
一個(gè)是關(guān)於上面的藍(lán)牙會(huì)跟2.4G遙控器干擾的問題。不知道各位有沒有遇到這種問題。
(已解決)另一個(gè)是自從我把其中一個(gè)電調(diào)電壓送到導(dǎo)航板以後,這個(gè)電調(diào)在待機(jī)的時(shí)候溫度略高(飛行之後這兩個(gè)電調(diào)溫度也會(huì)比其他的高(測(cè)量過)),而且奇怪的是,剩下的三個(gè)中有一個(gè)也會(huì)溫度上升至跟被選出的一樣高,把這個(gè)溫度高的從飛控上移除,剩下的兩個(gè)中其中一個(gè)會(huì)升溫至跟之前一樣的溫度。這種問題不知道有沒有人遇到過,如何解決。
|