Raspberry Pi B+ 連接 MPU-6050 加速度計與陀螺儀六軸感測器

這裡介紹如何在 Raspberry Pi 上面安裝 MPU-6050 加速度計與陀螺儀六軸感測器,並且透過 I2C 讀取 sensor 上的資料。

MPU-6050 是一個六軸感測器,包含三軸加速度計與三軸陀螺儀,其價格便宜(上拍賣網站買,80 元就有了),用途也很廣泛,一般的手機、平板電腦幾乎都會有這個感測器。

它的加速度計與陀螺儀可以藉由程式動態控制測量數值的範圍,加速度計的範圍有 ±2g、±4g、±8g 與 ±16g 可以選擇,而陀螺儀的測量範圍有 ±250 度/秒、±500 度/秒、±1000 度/秒與 ±2000 度/秒。


以下是 MPU-6050 在 Raspberry Pi B+ 上的使用教學。

Step 1
首先準備好 MPU-6050 感測器與相關必要的零件,如果不講究的話,只要有杜邦線可以接得起來就行了,麵包板有沒有其實無所謂,不過有麵包板接起來比較方便就是了。

x-default

這裡當然也要記得準備好自己的 Raspberry Pi,如果光只有 MPU-6050 是不能用的。

Step 2
把 MPU-6050 感測器按照下面的接法接上 Raspberry Pi B+:

raspberry-pi-mpu6050-six-axis-gyro-accelerometer-7

對照實際的照片會像這樣。

raspberry-pi-mpu6050-six-axis-gyro-accelerometer-5

如果您買的 MPU-6050 感測器是沒有焊接好排針的,可能會不太好接,因為排針插上去如果沒有焊起來通常容易接觸不良,建議還是直接把排針焊上去,否則很容易出問題。

正常來說,MPU-6050 接上去之後,有個紅燈會亮,如果燈沒亮大概就是有問題。

x-default

這是 Raspberry Pi B+ 上插上杜邦線的情況。

x-default

Step 3
編輯 /etc/modules,在這個檔案的最後加上兩行:

i2c-bcm2708
i2c-dev

Step 4
編輯 /etc/modprobe.d/raspi-blacklist.conf,把 spi-bcm2708i2c-bcm2708 兩個模組註解起來:

#blacklist spi-bcm2708
#blacklist i2c-bcm2708

設定完之後,重新啟動:

sudo reboot

Step 5
安裝 i2c-tools 套件:

sudo apt-get install i2c-tools

然後使用 i2cdetect 偵測一下是否有抓到 I2C 的設備:

sudo i2cdetect -y 1

輸出為
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

這裏可以看出來在 0x68 的位置有偵測到一個設備,這個就是我們的 MPU-6050 感測器。

i2cdetect -y 1 指令的最後一個參數 1 是指定要掃描的 I2C 匯流排名稱,如果是用舊的 Raspberry Pi Rev. 1 就要指定為 0。不確定自己的板子該用哪一個的話,可以使用這個指令查詢:

sudo i2cdetect -l

輸出會像這樣:
i2c-1 i2c       bcm2708_i2c.1                   I2C adapter
Step 6
使用 i2cget 指令嘗試讀取 0x68 這個 I2C 設備的 register 0x75 的值:

sudo i2cget -y 0 0x68 0x75

正常來說,MPU-6050 的 register 0x75 的值會是 0x68,輸出應該會像這樣:
0x68
如果看到這樣的值,就代表 MPU-6050 已經可以把資料傳回 Raspberry Pi 了,接下來您可以使用 C++ 來讀取 MPU-6050 的感測資料

如果您對於樹莓派的應用有興趣,建議您可以繼續閱讀物聯網的相關文章。

樹莓派, 物聯網

6 留言

  1. 請問大大有試過嗎?
    目前個人照著你的步驟
    成功讀的到陀螺儀讀數
    網路上有很多運用陀螺儀使機器人的文章
    但大部分都只有成果沒有詳細步驟

    • G. T. Wang

      其實我有實作用 C 語言將 MPU6050 的感測值讀出來,只是因為之前一直很忙,沒有把後續的過程寫出來,最近剛好要來寫,應該過幾天就可以寫出來了(希望啦)。:)

      至於機器人我就沒有玩過了,可能等到以後有機會拿到硬體再說囉。

  2. Roger Miao

    您好,
    請問您,我在輸入STEP 5之下列命令
    sudo i2cdetect -y 1
    的時候 會出現
    Error: Could not open file ‘/dev/i2c-1’ or ‘/dev/i2c/1’: No such file or directory

    請問這會是哪個環節發生錯誤了呢?
    謝謝!

    • G. T. Wang

      sudo i2cdetect -l 的輸出是?

      • Roger Miao

        sudo i2cdetect -l
        沒有任何的輸出耶,
        但echo $?的輸出值為0

Comments are Closed