BLOGTIMES
2018/05/12

MMA8452Q を Raspberry Pi から使う

  raspberrypi  python  i2c 
このエントリーをはてなブックマークに追加

ちょっと加速度センサーが必要になったので、秋月のMMA8452Q使用3軸加速度センサーモジュールキットを入手して Raspberry Pi から使ってみました。

準備

MMA8452Q は I2C 接続なので、Raspberry Pi と SDA, SCL, +3.3V, GND の4線を接続しておきます。
Python から接続するために smbus-cffi をインストールしておきます。

sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev sudo pip install cffi smbus-cffi

サンプルプログラム

加速度をリアルタイムに取得する簡単なアプリを書いてみました。

sample_accl.py

# Based on https://github.com/ControlEverythingCommunity/MMA8452Q/blob/master/Python/MMA8452Q.py import smbus import time I2C_ADDR=0x1D # Get I2C bus bus = smbus.SMBus(1) # Select Control register, 0x2A(42) # 0x00(00) StandBy mode bus.write_byte_data(I2C_ADDR, 0x2A, 0x00) # Select Control register, 0x2A(42) # 0x01(01) Active mode bus.write_byte_data(I2C_ADDR, 0x2A, 0x01) # Select Configuration register, 0x0E(14) # 0x00(00) Set range to +/- 2g bus.write_byte_data(I2C_ADDR, 0x0E, 0x00) time.sleep(0.5) while True: data = bus.read_i2c_block_data(I2C_ADDR, 0x00, 7) xAccl = (data[1] * 256 + data[2]) / 16 if xAccl > 2047 : xAccl -= 4096 yAccl = (data[3] * 256 + data[4]) / 16 if yAccl > 2047 : yAccl -= 4096 zAccl = (data[5] * 256 + data[6]) / 16 if zAccl > 2047 : zAccl -= 4096 print "X,Y,Z-Axis : (%5d, %5d, %5d)" % (xAccl, yAccl, zAccl ) time.sleep(1)

実行すると以下のような感じで、重力の方向がリアルタイムに表示されるようになっています。

$ python sample_accl.py X,Y,Z-Axis : ( 80, 177, 1007) X,Y,Z-Axis : ( 79, 179, 1005) X,Y,Z-Axis : ( 81, 175, 1008) X,Y,Z-Axis : ( 81, 177, 1006) X,Y,Z-Axis : ( 81, 176, 1004) X,Y,Z-Axis : ( 82, 179, 1002) X,Y,Z-Axis : ( 83, 177, 1003) X,Y,Z-Axis : ( 77, 180, 1005) X,Y,Z-Axis : ( 80, 178, 1001)

さらに高度なことがやりたい場合

MMA8452Q の詳細な仕様については「MMA8452Q, 3-axis, 12-bit/8-bit digital accelerometer」に記載されています。
細かいことがやりたい場合にはこちらを参照する必要があります。

また、ポーリングではなく、状態が変わったときの割り込みを利用したい場合には以下のコードが役に立ちそうです。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/10165
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン