2014年4月13日 星期日

新手的Multiwii 四軸飛行器 VIII GPS設定

玩四軸到後面就會想挑戰GPS跟空拍,GPS的航道飛行/自動返航機制聽起來就很讚! 這一篇教大家如何把GPS掛上MWC。
你必須具備三樣東西
  1. I2C轉板(下圖左下)
  2. GPS本體(下圖右邊),本文使用u-blox的neo-6m 3.0版本,有另一個neo-6h版本,精度較高,但如果在空曠地區飛行,6m跟6h的使用上感覺差異不大。
  3. FTDI(下圖左上)
2014-04-1317.32.23-2014-04-13-18-03.jpg

MWC的GPS走的訊號是I2C,但我的GPS NEO-6m接口是標準UART TX/RX,所以目前市面上有所謂I2C轉板,也就是把I2C跟UART互轉,而有趣的是這塊板子也是一塊小Arduino,基本上買來裡面韌體應該是都有一份了,但我還是習慣手動在做一次。
首先到i2c-gps-nav 下載最新版本,我下載的版本是v2.2Beta1-r62的版本,解開後一樣用Arduino IDE去打開ino檔,打開config.h,修改#define GPS_SERIAL_SPEED 115200,修改完畢後,用FTDI接到下方淺綠接頭的FTDI接口,上傳韌體,這樣就完成I2C轉板的韌體。
接下來到u-blox下載GPS neo-6m用的設定軟體u-center並安裝。用FTDI的接頭跟neo-6m GPS連接,FTDI的TX接到GPS RX,FTDI的RX接到GPS TX,GND跟GND對接,5V接到VCC,通常GPS買回來店家可能已經幫你設定好baudrate為115200,但我還是習慣自己在設定一次確保無誤。
打開u-center,左上角選擇COM port,選擇Baudrate,在這邊Baudrate各種可能都有,你可以每一項都嚐試連接看看。
u-center8-2014-04-13-18-03.png u-center7-2014-04-13-18-03.png

要如何知道有連接成功,可以去功能選單中的View—Statistic View,打開畫面應該可以看到一堆數字在跑,如果都沒有數字,請換一個Baudrate試試看,如果都不行,那就要檢查FTDI的線路有無問題。
u-center3-2014-04-13-18-03.png
連接成功後,就到View的Configuration view中的PRT,把Baudrate設定為115200,到RATE中設定Measurement period為100ms,設定完畢請記得按左下角”Send”並到選單中Receiver Save config儲存設定。
儲存完畢後,把u-center關閉,把GPS斷電,重新上電打開u-center,同樣連接步驟連接上GPS,確認使用115200 Baudrate可以連接到GPS並有資料進來。
u-center6-2014-04-13-18-03.png
u-center5-2014-04-13-18-03.png
設定好Baudrate後,接下來要把i2c-gps-nav提供的GPS configuration上傳到GPS,同樣到u-center中的Tool/GNSS Configuration,選擇u-blox-config.ublox.txt,點選File> GNSS上傳Configuration

u-center1-2014-04-13-18-03.pngu-center2-2014-04-13-18-03.png
上傳成功可以看到畫面中每一行都要出現successfully....上傳成功後,GPS到此步驟就設定完畢。
u-center4-2014-04-13-18-03.png
打開MWC的config.h,打開以下設定並上傳到MWC飛控板
#define GPS_BAUD 115200
#define UBLOX
#define I2C_GPS
#define MAG_DECLINATION -3.96f
磁偏角計算請參考這網站計算
軟體部分設定完畢後,把i2c轉板一端接到MWC I2C接腳,另外一端接到GPS,透過Android的EZMultiwii可以觀察GPS訊號是否正常,出現如下圖綠色區塊即代表GPS跟MWC連接完成。
在每次飛行時,上電完畢後,請在原地確認GPS已經定位完成,因為MWC認定第一次連接上GPS的經緯度點就是HOME點,所以上電後需等待GPS抓到訊號後才可起飛。

2014-04-1309.23.33-2014-04-13-18-03.png

GPS設定完畢之後,可以玩GPS地點跟航線,這部份會需要調整PID,目前我也還沒時間去摸索,未來有做出來會在寫成文章分享給大家。

大家在更改程式過程中應該會發現有支援超音波,I2C轉板上面也有保留超音波接腳,我之前有接上去過,但一直都沒用到,這期間兩次戶外飛航出現無法控制傾斜倒機,目前原因不知道,只能一一排除,所以我先把超音波移除,因此這篇文章我也都沒提到超音波,再此補充說明一下。

35 則留言:

  1. 1.SEND只有設定,並未儲存。
    2.不是所有的GPS Module都可以儲存設定。所以有的是每次都要在MCU上將設定值載入。

    回覆刪除
  2. 感謝補充,我忘記多寫一段,要到選單save config。文中專指neo-6m做設定,我會修改一下,感謝

    回覆刪除
  3. 想請問下大哥
    如果GPS沒抓到衛星,在EZMultiwii還會顯示正常連接嗎?
    我的neo-6m除了冷啟動外,都抓不到衛星信號

    回覆刪除
  4. 如果沒抓到衛星,當然不會顯示正常。

    回覆刪除
    回覆
    1. 謝謝,我可能要找個訊號好的地方測

      刪除
  5. 作者已經移除這則留言。

    回覆刪除
  6. 請問下:
    目前設置好了對應的參數並燒錄,連線之後在GUI裏面可以看到GPS_fix顯示為綠色,但所有值都是-1,這個應該怎麼調整?
    I2C上面指示燈連線之後保持每秒3下的頻閃,GPS模組的綠色指示燈也正常閃亮。

    回覆刪除
    回覆
    1. 根據你的描述,感覺都很正常,GPS上面會有兩顆燈,有抓到GPS訊號會兩顆都亮。
      你可以試試看用u-center把GPS重新冷啟動試試看。

      刪除
    2. 嗯,已經試過好幾次冷啟和重新連接線路了,都是一樣的結果。
      有說這種情況是GPS跟導航模組的通訊正常,但導航模組和主控之間通訊有問題,但我檢查了代碼,好像跟你貼文裏面都差不多,頭大了……

      刪除
  7. 磁偏角算法不太明白...
    照注解是 degree+minutes*(1/60)
    Budapest Hungary. 匈牙利布達佩斯 的磁偏角是 4° 14' POSITIVE
    (參考自 http://magnetic-declination.com/Hungary/Budapest/1036000.html )
    算法應該是 4+14*(1/60) = 4.23f 吧? 但 config.h 是 3.96f

    如果上面我算錯的話... 下面的都全錯了...
    你們台北的話是 -4° 3' NEGATIVE (參考自 http://magnetic-declination.com/Taiwan/Taipei/2654816.html)
    應該是 -4-3*(1/60) = -4.05f ??

    我在香港應該是 -2+36*(1/60) = -1.4f ???

    又... 如果這個數值有影響... 去旅遊不是要重新上載 firmware ????

    回覆刪除
    回覆
    1. 首先,磁偏角會一直變,所以隨時間會不同,隨地點也會不同。你的算法有一個地方要修正,度跟分都要帶負數,也就是-2+(-36)*(1/60)=-2+(-0.6)=-2.6f
      另外當你換一個地方,你可以透過app去設定這個值,我印象中MWC的app裡面會自動抓取你現在位置的磁偏角。

      刪除
    2. 剛去查一下wiki ,磁偏角變化大約每3年改變1度

      那是說除非我要玩航線 (有看過能在平板的 app 上有個地圖設定幾個點讓飛機自然飛行)

      否則平常玩, 例如要回 HOME 點, 因為開啟飛機時就已經定點了, 磁偏角多少都不影響吧?

      刪除
  8. 根據MWC的wiki,GPS return to HOME是有用到Compass (mag),所以保守起見,我會認為磁偏角在回HOME是有用到的。

    回覆刪除
    回覆
    1. 說得也對,反正有藍芽要修改也簡單,
      還是安全點好

      刪除
    2. 睇了大哥的教程真的受益良多.
      請問如GPS 收不到訊號.
      是否就沒有View—Statistic View訊號
      而且不能上傳GPS configuration

      刪除
    3. Statistic View主要是拿來確認有GPS訊號進來。
      不能上傳GPS configuration通常是baudrate設定錯誤。

      刪除
  9. 您好
    我照您的教學確定連接成功後,將Baudrate設定為115200,到RATE中設定Measurement period為100ms,也有按左下角”Send”並到選單中Receiver Save config儲存設定。
    儲存完畢後,也有將u-center關閉,把GPS斷電,重新上電打開u-center,同樣連接步驟連接上GPS,但是我出現的還是9600。
    請問這是為什麼

    回覆刪除
  10. 你好
    請問你用的GPS適不適用於MULTI WII2.1板

    回覆刪除
    回覆
    1. 我沒使用過2.1版。
      如果設定檔裡面有描述GPS並定義支援型號,我想應該就是支援GPS。

      刪除
    2. 嗯 了解
      謝謝你撥空回答!!

      刪除
  11. 最近剛好想學 GPS9MV2 有問題就可以問大大了@@

    回覆刪除
  12. ARDUINO 2560 這塊 可以連通嗎?

    回覆刪除
  13. 請問 在 file >GNSS
    出現這 訊息
    Sending: CFG-DAT - B5 62 06 06 02 00 00 00 0E 4A ...
    ... message rejected!
    Removing this message now, because GPS receiver did not accept it.
    是什麼狀況呢?
    目前卡在這裡 ,不知道該怎麼下一步
    在麻煩你,謝謝

    回覆刪除
  14. 請問在執行file>GNSS時偶而會出現timeout,但執行完畢沒有出現紅字算成功嗎?

    回覆刪除
    回覆
    1. 要出現"successfully"才是成功。

      刪除
    2. 結束前是出現"successfully",哪算有成功嗎?

      刪除
    3. 文章有寫..."每一行" 都要出現successfully

      刪除
  15. 試了N次結果都一樣,爾且結束前還會出現U-CENTER無回應關閉,苦惱!不知哪裡出錯?
    我是參照這篇http://rcinn.blogspot.tw/2014/08/gps.html設定的,與你的有些地方不同,不知可否為我解惑。感恩!

    回覆刪除
    回覆
    1. 程式關閉無回應那可能換台電腦試試看。步驟都一樣,其實load GNSS就是寫configuration,如果你可以手動寫configuration,那load GNSS應該要沒問題,前提是你先確定GPS真的有連上U-CENTER

      刪除
    2. 感謝回應!我換過電腦情形是一樣的,我也試過安裝版與免安裝版也都一樣,同時確定有連上U-CENTER,畫面也有跑"successfully",只是偶而會出現time-out,在最後結束的一行是"successfully",然後就出現U-CENTER無回應關閉。

      刪除
  16. 請問你的軟體也是EZ-GUI Ground Station 嗎?
    我想問怎麼弄成中文的?還是要購買解鎖版本?

    回覆刪除
    回覆
    1. 我裝好就有中文...。我的確有購買解鎖版本,但我不知道這有無影響中文顯示。

      刪除
  17. 請問你的版本是多少,我的也是英文

    回覆刪除
    回覆
    1. 我已經沒有安裝此軟體了,我已經沒在玩MWC,所以目前版本狀況我不了解,謝謝。

      刪除
  18. 有辦法找出藍芽的RX跟TX是哪個Port嘛

    回覆刪除