5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 23808|回复: 69
打印 上一主题 下一主题

MWC接GPS和声纳的方法经验以及我遇到的问题。

  [复制链接]
跳转到指定楼层
楼主
发表于 2013-5-1 17:26 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 foundout 于 2013-5-8 16:11 编辑

花了兩個半月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飛控。
導航板代碼在code.google.com/p/i2c-gps-nav/downloads/list

這樣就能實現GPS功能,因為導航板並不單純的是信號轉接,裡面寫入了一些距離計算的方法,並且把聲納用於修正GPS模塊胡扯的高度。


結果

理論上來說最佳的方法是用2560的芯片同時安裝串口的GPS和串口的聲納,同時使用論壇裡修改的代碼。
優點:功耗小,接線簡單。缺點:要會修改代碼,而且代碼後期維護或許是個問題。

328P還是不用考慮直接連接這兩個傳感器了,2560和328P的差價也夠再買一個導航板了。
用導航板的優點:距離計算效果好,可以無憂使用聲納。缺點,聲納模塊無法調試和直觀的看到數據,功耗大(因為增加了一塊328P),接線需要一定考究(I2C error問題)。

———————————————————————————————————————————————————————————————————————————————

我自己使用的就是兩塊328P的方法,現在說一下具體的安裝方法,其實方法在上面的code.google.com/p/i2c-gps-nav/downloads/list也有,不過是英文的,我就冒昧的簡單說明一下。


以各種基於328PMWC飛控、Arduino Pro miniUblox 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這個軟件http://www.u-blox.com/en/evaluation-tools-a-software/u-center/u-center.html用來調整GPS的模塊,以適應導航板

打開以後把導航板代碼I2C_GPS_NAV_v2.2Beta1-r62裡的u-blox-config.ublox.txt,導入GPS 具體導入方法見 ublox-GPS i2c轉板二進制碼導入方法.pdf (53 KB, 下载次数: 1602)

然後把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。
——————————————————————————————————————————————————————————————————————————


順便發一下小灰機靚照









IMG_20130501_165218_调整大小.jpg (63.43 KB, 下载次数: 346)

IMG_20130501_165218_调整大小.jpg

IMG_20130501_165240_调整大小.jpg (64.74 KB, 下载次数: 363)

IMG_20130501_165240_调整大小.jpg

IMG_20130501_165251_调整大小.jpg (43.31 KB, 下载次数: 363)

IMG_20130501_165251_调整大小.jpg

欢迎继续阅读楼主其他信息

70
发表于 2016-8-26 21:23 | 只看该作者
可以可以
69
发表于 2015-12-9 16:36 | 只看该作者
好贴留名

68
发表于 2015-12-9 15:36 | 只看该作者
本帖最后由 nefusmzj 于 2015-12-9 15:48 编辑

感谢楼主分享的内容,非常受用!我在使用328飞控+导航版+NEO-M8N的时候,发现使用MWC上位机观察GPS数据时,卫星数量总是在0和实际卫星数量上跳,然手速度也在20左右的范围跳(飞机尚未起飞)。请问楼主遇到同样的问题了吗?(PS:使用U-center监测卫星数量一直8以上,不会跳到0)



67
发表于 2015-11-28 15:04 | 只看该作者
我也搞过mwc飞控328P安裝I2C -GPS導航板,现在玩apm飞控,觉得apm飞控还是稳定些卫星定位速度也快些,
66
发表于 2015-11-15 13:13 | 只看该作者
Raymondx 发表于 2015-8-31 18:39
LZ我想我问下,我和你是一样的设备,我在给导航板上传2.2固件的时候显示编译错误,但是2.1的固件却可以正常 ...

这个原因是ArduinoIDE 版本太高了我用1.6.5就不行
用1.0.6就好了

65
发表于 2015-10-16 23:19 | 只看该作者
你好,请问能否发一份I2C GPS板的固件给我。谷歌的代码库封存了这份固件,无法下载。近期在搞MWC,但GPS一直无法搞定。
jackyhoy@21cn.com谢谢
64
发表于 2015-10-1 12:28 | 只看该作者
好好学习
63
发表于 2015-10-1 11:39 | 只看该作者
Raymondx 发表于 2015-8-31 18:39
LZ我想我问下,我和你是一样的设备,我在给导航板上传2.2固件的时候显示编译错误,但是2.1的固件却可以正常 ...

请问你这个问题解决了吗?我也遇到这个问题了

62
发表于 2015-8-31 18:39 | 只看该作者
LZ我想我问下,我和你是一样的设备,我在给导航板上传2.2固件的时候显示编译错误,但是2.1的固件却可以正常烧录,不知道为什么。

#if defined(UBLOX)
   prog_char UBLOX_INIT[] PROGMEM = {                          // PROGMEM array must be outside any function !!!
     0xB5,0x62,0x06,0x01,0x03,0x00,0xF0,0x05,0x00,0xFF,0x19,                            //disable all default NMEA messages
     0xB5,0x62,0x06,0x01,0x03,0x00,0xF0,0x03,0x00,0xFD,0x15,
     0xB5,0x62,0x06,0x01,0x03,0x00,0xF0,0x01,0x00,0xFB,0x11,
     0xB5,0x62,0x06,0x01,0x03,0x00,0xF0,0x00,0x00,0xFA,0x0F,
     0xB5,0x62,0x06,0x01,0x03,0x00,0xF0,0x02,0x00,0xFC,0x13,
     0xB5,0x62,0x06,0x01,0x03,0x00,0xF0,0x04,0x00,0xFE,0x17,
     0xB5,0x62,0x06,0x01,0x03,0x00,0x01,0x02,0x01,0x0E,0x47,                            //set POSLLH MSG rate
     0xB5,0x62,0x06,0x01,0x03,0x00,0x01,0x03,0x01,0x0F,0x49,                            //set STATUS MSG rate
     0xB5,0x62,0x06,0x01,0x03,0x00,0x01,0x06,0x01,0x12,0x4F,                            //set SOL MSG rate
     0xB5,0x62,0x06,0x01,0x03,0x00,0x01,0x12,0x01,0x1E,0x67,                            //set VELNED MSG rate
     0xB5,0x62,0x06,0x16,0x08,0x00,0x03,0x07,0x03,0x00,0x51,0x08,0x00,0x00,0x8A,0x41,   //set WAAS to EGNOS
     0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0xC8, 0x00, 0x01, 0x00, 0x01, 0x00, 0xDE, 0x6A //set rate to 5Hz
   };
#endif

提示error:
I2C_GPS_NAV_v2_2:1240: error: 'prog_char' does not name a type
I2C_GPS_NAV_v2_2.ino: In function 'void GPS_SerialInit()':
I2C_GPS_NAV_v2_2:1281: error: 'UBLOX_INIT' was not declared in this scope
'prog_char' does not name a type
61
发表于 2015-8-5 22:04 | 只看该作者
在吗?请问一下两个Nano板子之间如果是通过A3A4 来连接,那么那个GY-86连哪里?
60
发表于 2015-6-16 17:20 | 只看该作者
foundout 发表于 2013-5-1 17:27
最後說一下我在上面安裝中出現的問題,方便大家debug

你好我被mwc接gps的问题困扰很久了,想请教您当我把那个txt文件传进去之后我的gps的波特率就变成115200了,这之后需要怎么做呢?(如果不改其他的我连上mwc后在gui里i2c error在不停的变化)

59
发表于 2015-1-28 19:07 | 只看该作者
归海云峰 发表于 2015-1-6 10:38
想问大神一个问题,我的导航版刷程序时会遇到这种问题
avrdude: stk500_getsync(): not in sync: resp=0x0 ...

看看是不是板子没选对。。

58
发表于 2015-1-6 10:38 | 只看该作者
想问大神一个问题,我的导航版刷程序时会遇到这种问题
avrdude: stk500_getsync(): not in sync: resp=0x00
57
发表于 2014-11-9 16:48 | 只看该作者
雪花 发表于 2014-7-22 23:11
2560能接声呐不?能不能给点指导

同问,2560的板子可以接声呐吗

56
发表于 2014-9-27 20:51 | 只看该作者
我是連gps home 都沒顯示出來?
55
发表于 2014-9-19 19:08 | 只看该作者
太棒了~看了幾次也是迷糊
54
发表于 2014-9-6 03:31 | 只看该作者
回楼上,共用~
53
发表于 2014-9-4 21:51 | 只看该作者
StarFlying 发表于 2014-8-6 11:21
请问楼主,声纳和gps是不是要用两个导航版?还是可以共用一个

同问啊

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表