花了兩個半月1000大洋,終於搞定了一台MWC飛控四軸(坑爹叻),期間很多人問MWC接GPS和聲納的方法,我這裡集中寫一下當作筆記。希望能幫助到一些朋友,以及順便請教一下高手們一些小問題。 ——————————————————————————————————————————————————————————————————————————————— 首先, 1.MWC的代碼默認支持TTL的GPS的,默認指定在第二個串口。論壇裡也有人實現了直接安裝的IIC-GPS。 2.MWC的代碼的設置裡雖然支持安裝聲納,但是並沒有實際起作用 (/* Sonar */ // for visualization purpose currently - no control code behind)。論壇裡也有人實現了串口的聲納代碼。 所以, 1.2560芯片的MWC是可以直接接入串口的GPS,但是無法使用聲納。使用論壇裡高手修改的代碼是可以使用串口聲納的,具體實現分為用聲納頂替氣壓模塊,和類似玉兔的切換式,我沒試驗過,應該是有利有弊。 2.而328P的MWC雖然能接入GPS卻不實用,因為一般來說接GPS就要進行後期的尋星定位調試(每次開機最好都查看一下尋星有沒有完成),328P被插入串口GPS就無法進行串口調試了,更加無法使用串口超聲波。在這裡應該也可以用IIC的GPS接入,需要使用論壇裡高手修改的代碼,但是具體代碼我也沒測試,而且也不清楚是否同時支持IIC的聲納。IIC-GPS和IIC的聲納都比普通的貴一點。其實常用的Ublox NEO-6M上有IIC接口的,可以自己改裝,但是聲納就沒辦法只能買貴的了。 於是, 我喜愛的解決方法是用328P安裝I2C -GPS導航板,這裡可以用另一塊328P來DIY I2C -GPS導航板,實際安裝是串口GPS和電平模式的聲納安裝到328P製作的導航板,導航板安裝至MWC飛控。 導航板代碼在 這樣就能實現GPS功能,因為導航板並不單純的是信號轉接,裡面寫入了一些距離計算的方法,並且把聲納用於修正GPS模塊胡扯的高度。 結果 理論上來說最佳的方法是用2560的芯片同時安裝串口的GPS和串口的聲納,同時使用論壇裡修改的代碼。 優點:功耗小,接線簡單。缺點:要會修改代碼,而且代碼後期維護或許是個問題。 328P還是不用考慮直接連接這兩個傳感器了,2560和328P的差價也夠再買一個導航板了。 用導航板的優點:距離計算效果好,可以無憂使用聲納。缺點,聲納模塊無法調試和直觀的看到數據,功耗大(因為增加了一塊328P),接線需要一定考究(I2C error問題)。 ——————————————————————————————————————————————————————————————————————————————— 我自己使用的就是兩塊328P的方法,現在說一下具體的安裝方法,其實方法在上面的也有,不過是英文的,我就冒昧的簡單說明一下。 以各種基於328PMWC飛控、Arduino Pro mini、Ublox NEO-6M、普通的15元聲納為例 代碼部分: 在MWC的代碼裡,GPS部分,只要開啟//#define I2C_GPS這一行,其餘全部註釋掉 導航代碼把硬件連接部分解釋一下 ////////////////////////////////////////////////////////////////////////////// // i2C comm definitions // #define I2C_ADDRESS 0x20 //7 bit address 0x40 write, 0x41 read IIC總線的地址,默認不需要修改,要修改請仔細研究IIC協議 /* GPS Lead filter - predicts gps position based on the x/y speed. helps overcome the gps lag. */ GPS預測,因為gps信號有滯後性,需要計算提前量 #define GPS_LEAD_FILTER 默認開啟 /* Serial speed of the GPS */ gps的波特率 #define GPS_SERIAL_SPEED 115200 用UBLOX模塊,並且導入了u-blox-config.ublox.txt的話,就是115200,其他模塊自行對應並修改 /* 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... 电平触发式聲納,比如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 《——這種聲納就是汽車的倒車雷達上用的,但是汽車上那個是12V的 #define SONAR // USE Sonar 開啟聲納 // Sonar type uncomment only one at a time 下面模式只能選一項 #define PINGPONG 电平触发式聲納 //#define MAXBOTIX_PWM // PWM output mode sonar PWM聲納 剩下的是導航板的PID,就不解釋了。 硬件部分: UBLOX的GPS模塊先用USB轉串口模塊連接PC,這裡順便提醒一下,GPS的TX接串口模塊的RX,GPS的RX接串口的TX,因為看到有不少人卡在這個問題上,串口模塊也不需要買,用MWC的FTDI下載器上的串口就行了。 連接以後,下載u-center這個軟件用來調整GPS的模塊,以適應導航板 打開以後把導航板代碼I2C_GPS_NAV_v2.2Beta1-r62裡的u-blox-config.ublox.txt,導入GPS 具體導入方法見 ![]() 然後把GPS的TX接導航板(Arduino Pro mini)的RX,GPS的RX接接導航板(Arduino Pro mini)的TX 聲納切換為電平模式,一般來說就是那種15元的,後面跳帽拔掉,然後連接聲納的trigger至(Arduino Pro mini)的A3,連接聲納的接導航板(Arduino Pro mini)的A2 最後把導航板的IIC接口,也就是Arduino Pro mini的A4、A5,連接328P飛控的A4、A5。 —————————————————————————————————————————————————————————————————————————— 順便發一下小灰機靚照 |
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |