LoginSignup
6
7

More than 5 years have passed since last update.

S11059-02DT モジュールをラズベリーパイで使用する

Last updated at Posted at 2016-06-10

S11059-02DT モジュールをラズベリーパイで使用する

I2C対応デジタルカラーセンサモジュール S11059-02DT
をラズベリーパイで使用することになり、使用方法を調べて python パッケージ を作成してみました.

S11059-02DT について、以下を参考にさせていただきました.

以下の Arduino で使用された例を参考にさせていただきました.

I2C の有効化と smbus のインストール

ラズパイのコンフィグから I2C を有効にして、
ターミナルから以下のコマンドで、smbus パッケージを導入しました。

sudo apt-get install python-smbus

配線とチェック

以下のようにモジュールとラズベリーパイの配線を行いました.

  • モジュール +V -- ラズパイ 1番ピン(+3.3V)
  • モジュール SDA -- ラズパイ 3番ピン(I2C SDA)
  • モジュール SCL -- ラズパイ 5番ピン(I2C SCL)
  • モジュール GND -- ラズパイ 9番ピン(GND)

i2cdetect -y 1 とターミナルで入力すると以下が表示されるかチェックしました.

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

センサーについて

S11059-02DT では、赤、青、緑、赤外の 4つの色の強さをそれぞれ測定できるようでした.

センサーには、2つのモードがあることがわかりました.

  • 固定時間モード
  • マニュアル設定モード

固定時間モード

固定時間モードでは、一色あたり、以下の 4つの積分時間を選択でき、
積分時間を長くするほど、感度が上昇することがわかりました.

0: 0.0875 ms
1: 1.4 ms
2: 22.4 ms
3: 179.2 ms

マニュアル設定モード

マニュアル設定モードでは、一度測定すると自動的に待機状態になりますが、
固定時間モードよりも積分時間を長くすることができ、
より高い感度で測定を行うことができるメリットがあるようでした.

積分時間は、一色あたり、以下の 4つの積分時間が選択できるようでした.

0: 0.175 ms
1: 2.8 ms
2: 44.8 ms
3: 358.4 ms

マニュアルモードでは、更にこれらを何倍するかを選択できるようでした.

min: 0
max: 65535

その他

Gain を選択することができ、Low gain と High gain の受光面積比は、
1:10 となっていることがわかりました.

python パッケージ

これらの設定ができるように python パッケージを作成しました.

インストール

PyPI に登録をして、pip でインストールできるようにしました.

pip install CsCntlr

使用方法

データシート 4ページ目のプログラム例は、以下のように実行します.
Low gain で、一色あたりの積分時間は、546 ms (全色で、2184 ms)に設定されるはずです.

from CsCntlr import *
cs = CsCntlr()
cs.useManualSettingMode()
cs.cntlr.auto(gain='low', man_tint=3120, tint=0)

データシート 5ページ目のプログラム例は、以下のように実行します.
High gain で、一色あたりの積分時間は、1.4 ms (全色で、5.6 ms)に設定されるはずです.

from CsCntlr import *
cs = CsCntlr()
cs.useFixedPeriodMode()
cs.cntlr.auto(gain='high', tint=1)

センサーをコントロールするプログラムを書くのは初めてのことだったので、
何かしらプログラムにバグがありそうな気がしますが、
ビット演算の方法などを色々と調べて作成したので、公開してみました.

6
7
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
6
7