如何arduino neo 6m gpsgps定位

查看: 81|回复: 0
MWC接GPS和声纳的方法经验以及我遇到的问题
花了兩個半月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飛控。
導航板代碼在/p/i2c-gps-nav/downloads/list
這樣就能實現GPS功能,因為導航板並不單純的是信號轉接,裡面寫入了一些距離計算的方法,並且把聲納用於修正GPS模塊胡扯的高度。
理論上來說最佳的方法是用2560的芯片同時安裝串口的GPS和串口的聲納,同時使用論壇裡修改的代碼。
優點:功耗小,接線簡單。缺點:要會修改代碼,而且代碼後期維護或許是個問題。
328P還是不用考慮直接連接這兩個傳感器了,P的差價也夠再買一個導航板了。
用導航板的優點:距離計算效果好,可以無憂使用聲納。缺點,聲納模塊無法調試和直觀的看到數據,功耗大(因為增加了一塊328P),接線需要一定考究(I2C error問題)。
———————————————————————————————————————————————————————————————————————————————
我自己使用的就是兩塊328P的方法,現在說一下具體的安裝方法,其實方法在上面的/p/i2c-gps-nav/downloads/list也有,不過是英文的,我就冒昧的簡單說明一下。
以各種基於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 具體導入方法見
(53 KB, 下载次数: 0)
15:42 上传
点击文件名下载附件
下载积分: 黑币 -5
然後把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_251_调整大小.jpg
172608wwdu4sizcwvfwcc9.jpg (43.31 KB, 下载次数: 0)
15:47 上传
IMG_240_调整大小.jpg
172605galnlbgwlwnbb4gu.jpg (64.74 KB, 下载次数: 0)
15:47 上传
IMG_218_调整大小.jpg
l7owlh8bbii7f.jpg (63.43 KB, 下载次数: 0)
15:47 上传
最後說一下我在上面安裝中出現的問題,方便大家debug
第一個遇到的問題是GPS導入文件會不成功,這是因為導入其實是一條一條導入設置的,gps默認波特率是9800,當導入到115200的時候波特率變了,後面的就導入不進去了,所以需要在第一次導入後,在u-center改波特率115200,然後再導入一次。這樣做以後並不會保存設置,還需要到messages-NMEA裡進入UBX——》CFG——》CFG點擊右下角的Send保存設置
第二個問題是,裝上聲納以後在MWC的GUI裡也不會顯示聲納開啟,因為MWC本身就沒有相應代碼,但是他確實是在工作的,簡單來說把導航板的聲納代碼關閉就能發現區別了。
然後我的問題還沒完,我在一開始使用的時候總是剛導入是可以定位的,一會兒gps就不工作了。研究了半天,原來是我買的便宜的Ublox NEO-6M沒有EEPROM,同時上面的記憶電池因為出廠太久導致沒電了OTL。。。充了一晚上電以後故障消除(所以可以買帶記憶芯片的GPS,或者跟我一樣先充電。。。)
第三個問題是關於I2C error
我看了不少資料沒有我這種情況,但是作為特例還是要說一下
症狀是安裝好以後,所有傳感器包括GPS都是工作正常的。但是I2C會有錯誤,雖然是個位數的錯誤,長時間運行以後,隔十幾分鐘會增長幾位。
在更換了三次I2C的信號線以後,情況有所改善,I2C error越來越少,增長越來越慢,但是不能杜絕。經過仔細檢查以後,發現是導航板供電不足,把其中一個電調的電源挑出,送至導航板以後,開機I2C error還是會有3個,但是不會再增長。
第四個問題是關於調試
因為gps需要每次在飛行前檢查定位,所以一般會挑選藍牙透串模塊。但是我一開始買的是一個只有100元的FM遙控器,在藍牙的干擾下無法控制。後來換了論壇裡高人推薦的F6TB,總算是消除了無法控制的問題。但是我在長時間老化測試中發現就算是控挨著接收機,偶爾還是會有被干擾失控的現象,敬請大家注意。
——————————————————————————————————————————————————————————————————————————
最後請教一下論壇裡各位高手一些小問題
一個是關於上面的藍牙會跟2.4G遙控器干擾的問題。不知道各位有沒有遇到這種問題。
(已解決)另一個是自從我把其中一個電調電壓送到導航板以後,這個電調在待機的時候溫度略高(飛行之後這兩個電調溫度也會比其他的高(測量過)),而且奇怪的是,剩下的三個中有一個也會溫度上升至跟被選出的一樣高,把這個溫度高的從飛控上移除,剩下的兩個中其中一個會升溫至跟之前一樣的溫度。這種問題不知道有沒有人遇到過,如何解決。
Powered by 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
此次开发,硬件采用arduino接口的GPS模块,主控板采用
下载积分:1200
内容提示:此次开发,硬件采用arduino接口的GPS模块,主控板采用,开发,硬件,采用,GPS,主控板采用,Arduino,主控板,板的硬件,GPS 模块,开发板,arduino,接口模块
文档格式:DOC|
浏览次数:85|
上传日期: 09:40:42|
文档星级:
该用户还上传了这些文档
此次开发,硬件采用arduino接口的GPS模块,主控板采用
官方公共微信方向(定位)
本文所属图书&>&
《Arduino机器人权威指南》可以教会你如何用Arduino来控制各式各样的机器人,同时提供了每一步的详细指导。你不仅可以学会Arduino的基本使用方法,还可以了解各种电机的特性。同样,你会掌握其控制和排除故障的方&&
有几种不同的传感器,可以确定机器人的一个或多个位置和方向。GPS传感器可以使用经纬度坐标告诉你传感器在地图上的哪个位置,而加速度传感器和陀螺仪传感器可以告诉你角的位置(倾斜)或者机器人的旋转角度。使用这些传感器,可以为赛格威(Segway)型机器人创建一个自动平衡的平台,或者向机器人上传一组GPS坐标来导航。
1.加速度传感器
加速度传感器用来测量重力或者加速度。通过一个沿其测量轴倾斜的加速度传感器,可以读取相对于倾斜量的重力。加速度传感器有多达三个感知轴,可以使用模拟输出信号直接连接到Arduino。目前,很多设备将加速度传感器用作输入控制、震动检测、稳定平台和自动平衡或倾斜接口&&可以在这些产品中找到这些设备,例如数码相机、手机、笔记本电脑以及任天堂的Wii控制器等。
如今,大多数可用的加速度传感器都是小型表面贴装元件,但是也有一些,焊接了传感器及所需的全部滤波元件(电阻和电容)的不同分线板,这样你就可以很轻松地将它们连接到Arduino上。上有大量可供选择的不同配置的&Arduino配备&传感器电路板,价格范围从20~50美元不等。
能够被加速度传感器测量的有三个轴,被标记为X轴、Y轴和Z轴,分别对应于倾斜、俯仰角和偏航(如图2-25所示)。单轴加速度传感器测量X轴或者Y轴,双轴加速度传感器同时测量X轴和Y轴,三轴加速度传感器测量所有三个轴。每个测量轴表示传感器上一个独立的自由度(DOF)&&因此,三轴加速度传感器也可被标记为3DOF。
图2-25& 该图展示了三个转动轴:倾斜、俯仰角和偏航,以及对应的加速度传感器符号X、Y和Z
加速度传感器用于测量重力的改变,但是它们也会对震动和突然移动或者冲击非常敏感,从而导致输出信号失真。如果加速度传感器用于测量角度近似值,则拥有另一台能够纠正震动造成短期错误的设备会是很有帮助的。&陀螺仪&传感器能够测量角度变化,但由于使用了不同的方法,对于突然的重力改变敏感度较低。
2.陀螺仪传感器
陀螺仪是一种传感器,用于检测沿其测量轴的旋转速度变化。这些设备常常应用在自动平衡项目中,与加速度传感器协同使用来产生机器人稳定的角度近似。就像加速度传感器一样,陀螺仪传感器也通过所测轴来标记:X轴、Y轴或Z轴。
陀螺仪传感器可以在短时间内获得良好的测量结果,但是由于具有长时间被称为&漂移&的机械错误,从而导致即使没有移动也会偏离起始点。为了纠正此漂移,我们需要使用一个长时间稳定角度读数的加速度传感器来作为陀螺仪传感器的参考点。
3.惯性测量装置(IMU)
为了解决单独购买加速度传感器和陀螺仪传感器的麻烦,制造商将多个加速度传感器和陀螺仪传感器综合在同一个电路板上,以节省空间和成本。由多个相互之间密切合作的传感器组成的电路板被称为惯性测量装置(或者IMU)。如图2-26所示的IMU拥有两个陀螺仪传感器和一个加速度传感器来测量总共六个轴的数据。通过结合来自加速度传感器X轴和陀螺仪传感器X轴的读数,可以为本书第11章中的单轴自动平衡平台创建一种滤波角的测量方法。
图2-26& 这是本书第11章中用到的Sparkfun Razor 6DOF惯性测量装置(零件号SEN-10010)。IMU包含两个陀螺仪传感器和一个加速度传感器,总共提供六个IMU方向的独立测量相位
为加速度传感器、陀螺仪传感器和IMU提供很好的教程和购买指南,说明它们的特性和功能。如果你有兴趣了解更多关于这类传感器的信息,绝对值得读下列的书。
IMU教程:/tutorials/167
4.全球定位卫星(GPS)
全球定位卫星(GPS)是一种传感器,使用来自太空中多个追踪卫星的信号来计算自身的位置,然后输出一组特定的经纬度坐标。虽然传感器同一时刻连接的卫星最多可达20个以获得最佳信号,但是要确定其自身位置必须能够至少获得三个GPS卫星的信号。该传感器可以以50~150美元的价格买到,提供位置、时间和速度的测量。大多数装置只需要一个电源和接地信号来开始输出串行数据流,它可以被Arduino读取到。
EM406 GPS传感器(如图2-27所示)输出的信号是一个NMEA标准的字符串,必须通过解码来获得有效信息,例如经度、纬度、速度和方向。该信号使用标准串行连接发送至Arduino,可与其他传感器结合用于使机器人从一个点自主导航到另一点。尽管GPS能提供关于机器人速度和方向的信息,但是它必须通过移动来计算这些值。借助于简单获得的两个位置读数之间的差异,可以确定机器人的行驶方向,并且相应地调整其功率,将其引导至正确的结束坐标处。
图2-27& 从购买的EM406 GPS传感器(零件号GPS-00465)可以直接连接到Arduino,用来制作自主导航车辆(例如本书第9章的机器船)
GPS比较独特,几乎可以在世界上的任何位置访问卫星,但是由于它所连接的卫星在太空中(距离确实很远!),故地平面精度有所不同,从10英尺到30英尺不等。这意味着,每次只使用标准GPS导航,你不能指望机器人会在同一个点停止。机器人最终可能与你预想的目标点相距10英尺,并且路径可能与你期望的有几英尺的差异。GPS也无法检测到其路径上移动的物体和树木,因此如果机器人在地面上行驶,安装其他目标检测传感器来协助GPS导航会是个好主意(例如超声波探测仪或者碰撞传感器)。
5.实时活动(RTK)GPS
为了消除标准GPS的精度误差,有一种系统被称为实时活动(RTK)GPS,它使用已知位置的单独&基站&来计算GPS接收到1厘米的确切位置!运行此种GPS通常需要更多设置,至于如何设置的问题已超出了本书介绍范围。但如果你需要1厘米精度的GPS单元,这也不是没有可能做到的。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。}

我要回帖

更多关于 arduino gps 小车 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信