0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ardino-firmata-pyMataを使ったI2Cセンサー接続GUIを作る

Posted at

前記載のPCのI/OとしてのArduinoから
ArduinoとFirmataを使えばPCから簡単にI/Oを操作できる事がわかりました。
そこで、pythonを使ってGUIでI2CセンサーをコントロールできるGUIサンプルを作りました。

接続図

pyMata_Connect.png

手元にあったMPU6500を使って汎用的なI2Cセンサーを接続できるような
Pythonプログラムを作ってみました。
下記にテスで使ったBMG160( TDK : IMU - 慣性測定ユニット 6-Axis MEMS MotionTracking Device)を使ったレジスタ設定テキストサンプル

# Register Configration sample
SLAVE,0x68
REG,0x00,1,0x00,R,CHIP_ID
REG,0x02,1,0x00,R,RATE_X_LSB
REG,0x03,1,0x00,R,RATE_X_MSB
REG,0x04,1,0x00,R,RATE_Y_LSB
REG,0x05,1,0x00,R,RATE_Y_MSB
REG,0x06,1,0x00,R,RATE_Z_LSB
REG,0x07,1,0x00,R,RATE_Z_MSB
REG,0x08,1,0x00,R,TEMP
REG,0x09,1,0x00,R,INT_STATUS_0
REG,0x0a,1,0x00,R,INT_STATUS_1
REG,0x0b,1,0x00,R,INT_STATUS_2
REG,0x0c,1,0x00,R,INT_STATUS_3
REG,0x0e,1,0x00,R,FIFO_STATUS
REG,0x0f,1,0x00,RW,RANGE
REG,0x10,1,0x00,RW,BW
REG,0x11,1,0x00,RW,LPM1
REG,0x12,1,0x00,RW,LPM2
REG,0x13,1,0x00,RW,RATE_HBW
REG,0x14,1,0x00,W,BGW_SOFTRESET
REG,0x15,1,0x00,RW,INT_EN_0
REG,0x16,1,0x00,RW,INT_EN_1
REG,0x17,1,0x00,RW,INT_MAP_0
REG,0x18,1,0x00,RW,INT_MAP_1
REG,0x19,1,0x00,RW,INT_MAP_2
REG,0x1a,1,0x0000,RW,Interrput Select

上記レジスタ設定を交換すれば別センサーを簡単にI2C Read / Writeできるようにしてみました。
Python(winpython)を使ってGUI化した結果下記のような実行結果を得ました。
BMG160.png

問題点として、動作が非常に重い事(通信速度9600bps固定)と、I2Cの制御が不安定な事が気になります。
I2CReadを行う場合、下記のような手続きが必要となります。

        board.i2c_read(slave_addr, addr, 1, board.I2C_READ)
        time.sleep(0.3)
        data = board.i2c_get_read_data(slave_addr)

pyMataの場合、このI2C Readタイミングをユーザ側で決めなければならないらしく非常に遅い。
300ms間隔開けても普通に失敗することもあるので、安全を見ると500msはほしいところ。
レジスタを読むだけならこれでいいのかもしれませんが、センサーをウォッチするには向いていない性能。
pyMataは既に更新止まっているので、別のpythonモジュールも探してみます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?