2014/08/27

親手打造自己四軸飛行器六- GPS設定


登場主角介紹 (廣告時間)

CRIUS I2C-GPS NAV導航板
可讓任何基於328P MCU的MWC飛控實現定點飛行和自動返航功能。
但是所搭配使用的328P的MWC飛控必須具有電子羅盤,否則無法實現自動返航,最好還要有氣壓計,例如CRIUS SE v2.5飛控。

I2C-GPS導航板建議與CRIUS NEO-6 GPS模組搭配使用,可使用附帶的連接線直接連接,無需修改連接線。同時也可以搭配任何其他品牌的ublox或者MTK3329/3339的GPS來使用。

I2C-GPS導航板雖有預刷韌體,但在使用前請根據自己的實際需要,改動韌體參數後再刷一次,這時就會需要用到FTDI工具,搭配包裝中的6P排針,可不用焊接排針輕鬆刷固件。

連接其他品牌的MWC飛控時,請注意電源電壓,CRIUS I2C-GPS導航板使用5V電源

紅色LED狀態指示:
1.通電初始化:每秒快閃1次,持續約6次;
2.等待GPS定位:每秒閃燈1次,每次恆亮2秒鐘;
3.GPS定位完成:每秒快閃3次,此時飛控可開始使用GPS相關功能,在GUI中可以看到座標及鎖定衛星數量等參數。

NEO-6M GPS模組

瑞士u-blox是全球公認的民用最佳GPS模組廠家。NEO-6M模組的定位效果非常讓人滿意,許多的高品質GPS產品也廣泛採用此系列模組。不過因為產品定位的關係,有些功能被削弱,例如無法保存配置參數和無Flash晶片(無法升級固件),但定位精度與更高等級的LEA-6X系列保持一致。

NEO-6M GPS模組帶有標準的UART(TTL)序列介面,可通用於所有飛控或其他設備。ublox官方預設9600串列傳輸速率/更新率1hz,如需修改參數,可使用FTDI或者其他USB-TTL工具,接上電腦後使用官方設定工具u-center進行。

基於328P的MWC(如CRIUS SE)通過導航板使用GPS時,串列傳輸速率需設成115200/更新率5hz;要實現定點和動返航功能需搭配I2C-GPS導航板來使用。
MEGA平台飛控(如CRIUS AIOP)用MPNG(海盜)韌體時可在原始程式碼中指定u-blox協議,韌體會自動識別GPS並設置串列傳輸速率為38400。
用於APM飛控時,串列傳輸速率設置成38400/更新率5hz即可。
建議把輸出語句設置成UBX協議

NEO-6 GPS v3.1主要特點:
1 進口品牌太盟25×25mm大尺寸陶瓷天線,搭配低噪音放大器與篩檢程式組合成ublox官方推薦的最佳性能組合方案,還有更大的信號反射面積,讓信號靈敏度比之前的版本更好;
2 板載參數保存用的EEPROM,斷電後可永久保存配置參數;
3 進口molex 1.25mm-4pin插座,並採用ublox官方推薦的EMI方案,輸入輸出均通過磁珠且輸入埠增加電阻,完美相容5V電壓輸入(6M模組本身是3.3V電壓)。
4 可保護長時間的電源反接,防止意外燒毀穩壓器;
5 帶有定位指示燈(綠色)與電源指示燈(藍色),鎖定≥3顆星後定位指示燈開始閃爍,預設頻率1Hz。

規格
1.尺寸(mm):40(寬)×40(長)×8.5(高);
2.重量(g):14(不含線)/16g(含附帶連接線);
3.固定孔孔徑(mm):Φ3.1×4, 邊緣孔距35mm;
4.GPS模組:u-blox NEO-6M;
5.EEPROM容量:32Kbit;
6.板載介面:molex 1.25mm-4Pin;
7.後備電容:SII XH414;

================= 介紹完畢 ==============================

前置工作
1.請先來 i2c-gps-nav 下載韌體程式 I2C_GPS_NAV_v2.2Beta1-r62.rar
2.再到 u-box 下載應用程式 u-centersetup_v8.11.zip

以上連結若失效,請至我們的 雲端硬碟 下載

下載後分別解壓縮擺好...並且先執行壓縮檔內的 u-center_v8.11.exe 把 u-center 安裝好
安裝程式沒甚麼特別...就省略了

=========== 開始工作 ==================
其實韌體也可以不用重刷啦,不過出廠時速率是內定9600bps
重刷可以自己訂傳輸速度也可以刷最新版(雖然已經很久沒更新了)

首先,進入把 I2C_GPS_NAV_v2.2Beta1-r62.rar 解壓縮後的資料夾

在 I2C_GPS_NAV_2_2.ino 點兩下 (或是開啟 打開I2C_GPS_NAV_2_2.ino)

找到 config.h 

修改底下這兩行
#define GPS_SERIAL_SPEED 115200
#define UBLOX

再來把這兩位請出來合體

FTDI

I2C GPS導航模組

利用綠色排針把它們組合起來
記得腳位要正確(圖中紅圈圈起來的地方)
綠色排針有長針和短針,長針插FDTI 短針插 I2C GPS導航板
USB要插上電腦

合體,圖片導航板兩端的線可以不用接..照相時忘了拆

怕接觸不良,用手固定一下

剛合體通電時,紅燈會先閃6下(啟動中..),然後每持續亮2秒閃1下(定位中..)
此時就按 Arduino 的 UPLOAD (應該沒忘是誰吧? 前面那張圖最後指的那個 向右的箭頭)
進行寫入動作,這麼辛苦就是為了這一刻,千萬不要忘了做!!

也不要太猴急,燈還沒閃完就給它按下去....會失敗喔

一定要看到狀態欄出現 Done Uploading. 才算成功喔


接下來要做一件小手術,和GPS一起的那條線(排線順序是黑綠黃紅,別找錯),線的順序要大搬風一下

先把線找出來

白頭插在GPS上,另一端的都拆出來

白色是GPS的腳位名稱,紅色是FTDI腳位名稱


把線拆掉後照著上圖的順序插,請注意不要讓它們玩親親碰在一起(像綠色和紅色那兩條走太近了,危險!!) 過程中請讓它們保持距離,建議中間插個紙片隔起來

FDTI<->GPS
-----------------
RX<->TXD
TX<->RXD
VCC<->+5V
GND<->GND

然後把FTDI接上USB

==========================================================
您若不敢動手術,或覺得太麻煩,現在也有現成做好的線可以購買


合體圖

這樣就方便多了,只要找到黑線(GND)的位置,對準插好就好啦
============================================================

執行 u-center

選擇 com port

選擇 速率 115200

若成功連線底下連線符號會變成亮綠色一直在閃動,不成功就是紅色斷線符號
若不成功可以試試 9600 或其他的速度...一定要試到連線為止
都試過了還是不行,請檢查一下COM PORT 或是線路 是否正確

假如呈現暗綠色但並沒有閃動,代表有連線但沒資料傳進來
此時請照常按照底下程序跑一遍後,再回頭把程式關掉、USB拔掉再重新做一遍

******************** 不成功再看裡面的內容 ,沒問題的請跳過  ****************

速率選9600 -> 綠燈


調整設定到 115200 -> 會變紅燈

速率改成115200 -> 綠色或灰色
這時候再繼續做 上傳設定檔的步驟,它就會正常連線了


到一開始我們解壓縮 I2C_GPS_NAV_v2.2Beta1-r62.rar 的資料夾

若都出現 Successfully completed 就表示成功了

*************************************


連線後以下請看圖說故事



請一定要按 Send,多按幾下

通常,若一開始連線是9600 這裡設定完按完Send後 就會發生無法連線(連線符號呈現紅色 或灰色)
這時候再把速率調成 115200重新連線 ,連線符號會變成 灰色或暗綠色
就重頭開始一路做到上傳GNSS configuration為止,若有成功 再度連線時就會是蹦蹦跳的綠色

記得按 Send,多按幾下

選擇GPS種類

存檔
存檔
存檔
這很重要

在進行下個動作前,建議把USB線斷電、程式關閉後重新連線
檢查一下剛剛的數據是否正常寫入



到一開始我們解壓縮 I2C_GPS_NAV_v2.2Beta1-r62.rar 的資料夾

若都出現 Successfully completed 就表示成功了

不論有沒有成功,這個視窗跑完就會自動關閉,所以不要看到室窗不見了就以為成功
請注意看整個過程(速度很快..) 沒有看到紅字出現,才算成功喔


若要確認是否成功,可以把程式關掉、USB拔掉再重新裝上連線檢查一下剛剛的數據是否還在...基本上重新來過後能順利連線,看到亮綠色的連線符號再閃閃閃就離成功不遠了..

若檢查過沒問題,線可以通通拔起來了,但事情還沒完

這個和 親手打造自己四軸飛行器二-MutiWii MWC 飛控軟體設定-編寫設定及上傳... 有關

這次又要和飛控板連線了,忘記的請去上面的連結複習一下

打開 MultiWii.ino 一樣編輯 config.h,假如你之前的檔案不在了或是當初沒存檔,那你要全部設定重做喔,不可以只改GPS的部分喔



請確認以下的設定
#define GPS_BAUD   115200
#define UBLOX
#define I2C_GPS
#define MAG_DECLINATION  -4.05f 

最後這個磁偏角每個地方都有些微差距,請到  http://magnetic-declination.com/ 計算自己所在地的值,不要照著抄喔,不然你的機子會飛到我家喔~~~ 沒啦,是誤差會很大...

這些改好後存檔上傳即可


包裝中有很多線,請注意黑線和紅線與插座的對應是不是
黑線--GND
紅線-- +5V 

完成圖

要測試時記得要到室外空曠處室內是收不到GPS訊號的喔
當GPS定位完成時,GPS導航板的紅燈會每秒快閃3次

還有,第一次開機定位時會花比較久的時間,您會先看到GPS閃綠燈,過幾分鐘GPS導航板才會快閃紅燈,但整個過程應該在10分鐘內結束,除非當天雲層太厚收訊不好

========= 同場加映 磁偏角 計算方法 ===========

假設我住 林口 (要先知道英文,不知道也沒關係 地圖上慢慢找就是了 )




假如不知地名的英文,沒關係 隨便找一個地方 然後再地圖上慢慢找就行了

算出來的 磁偏角 -4度3分
公式 磁偏角= 度 +(分/60)
磁偏角= 4+(3/60) = 4.05 因為是負的所以就是 -4.05f
磁偏角每年都會些微改變

http://www.twwiki.com/wiki/%E7%A3%81%E5%81%8F%E8%A7%92
 什麼是磁偏角?
1、地球的磁北方向與真正的地理北方向是有所不同的。
2、磁感應羅盤指向的是地磁北方。而地圖所指示的北方是地理北方。
3 、地磁的北方與地圖所指示的地理北方產生的夾角叫做磁偏角。磁偏角的度數和方向取決於你在世界的哪個地方。
4 、對於各種各樣的羅盤使用者,想要完成精確導航,羅盤必須要調整磁偏角。

根據規定,磁針指北極N向東偏則磁偏角為正,向西偏則磁偏角為負。
=========================================

19 則留言:

  1. Arduino:1.6.3 (Windows 8), 板子:"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

    I2C_GPS_NAV_v2_2.ino:1240:4: error: 'prog_char' does not name a type

    I2C_GPS_NAV_v2_2.ino: In function 'void GPS_SerialInit()':

    I2C_GPS_NAV_v2_2.ino:1281:33: error: 'UBLOX_INIT' was not declared in this scope

    編譯時發生錯誤

    這份報告的詳情將會在
    "編譯時顯示詳細輸出資訊"
    在檔案 > 偏好設定



    請教~我在i2c_gps_nav去改config.h下的
    //#define NMEA
    #define UBLOX
    //#define MTK_BINARY16
    //#define MTK_BINARY19
    //#define INIT_MTK_GPS

    就編譯不過去了~"~

    回覆刪除
    回覆
    1. 重新把檔案解壓縮再試試,還有,您的訊息怎麼是中文的?

      刪除
    2. 原因:Arduino:1.6.X 版編譯會出錯(可能是甚麼地方需要再設定)
      解決方式:換回舊版就好了

      刪除
    3. arduino1.6.X編譯出錯修正方法
      I2C_GPS_NAV_v2_2的 prog_char UBLOX_INIT[]改成 const uint8_t UBLOX_INIT[]

      刪除
  2. 在EZ-GUI上的follow me功能上標示無法使用12c-gps ,請問是否有解決方法?

    回覆刪除
  3. 請敎一下 mwc 二軸模式 是不是不支援自穩

    回覆刪除
  4. 師兄你好,我照做完gps程式再三檢查都沒有出錯,通電後gps板只有藍燈長着,綠燈慢閃, 導航板紅燈慢閃,這是我出了什麼問題,飛了多舊電玩了半天都是閃法一樣。?

    回覆刪除
    回覆
    1. 1.要在空曠看的到天空的地方才有衛星信號喔
      2.程式沒處理好

      刪除
    2. 哦~我試試再重新入一次程式,謝謝

      刪除
  5. I2C ERROR =3 是怎回事我爬文說是線出問題對嗎.

    回覆刪除
  6. 請問,我模組 NEO-6M
    一直連線不上 ,右下角一直都是灰色符號,
    有什麼方法可以檢測,是模組好壞嗎?

    回覆刪除
  7. 請問一下伊定要用I2c 導航板嗎
    不能直接接道飛控上面

    回覆刪除
    回覆
    1. GPS天線就只是天線而已...除非你自己能處理訊號

      刪除