1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プレゼンでデモするにあたり光ったり鳴ったりするとウケが良いだろうということで、3つほどデバイスを使ったのでご紹介します。使ったのは照度センサ、ブザー、マトリックスLEDで、今回は照度センサの話です。
ちなみにプレゼンしたのは Code BEAM Lite Vancouver というカンファレンスで Migrating live processes with Zenoh in widely distributed network というタイトルで発表しました。光ったり鳴ったりするデバイスがあると大ウケで、これまで発表したカンファレンスで発表後にもっとも多く声をかけられました。

ハードウェア

Nervesをいごかすスモールボードコンピュータは BeagleBone シリーズをよく使ってます。ハードウェアがオープンソースなのでラズパイより重宝してます。特に BeagleBone Green は I/O として Grove システム のコネクタがついてるのでデバイスの配線が楽で良いです。今回はこれを使います。開発元の Seeed Studio でも売ってますが国内ならスイッチサイエンス秋月電子でも手に入ります。大きさは86 x 54 x 15 mmです。

image.png

センサモジュール

BeagleBone Green の Grove コネクタは2つあり、一つがUARTでもうひとつはI2Cです。なのでいろんなボードはUARTかI2Cだと楽ちんです。今回はスイッチサイエンスで売ってるBH1745NUC搭載デジタルカラーセンサモジュールというのを用いました。これはGroveの他にQwiic/STEMMA QTコネクタにも対応してます。大きさは 26.67 x 22.86mm です。

image.png

このモジュールに搭載されてるセンサはROHMのBH1745NUCです。R/G/B と Clear(照度相当)の4chを同時に計測できるカラーセンサです。データシートは Rohm のアカウントを取らないとダウンロードできないかもです。スイッチサイエンスではこちらのBH1745NUCのデータシートをモジュールのページに掲載していました。

Groveケーブル

細かい話になりますが、IoTやってるとケーブルだらけになるので、短いケーブルを重宝します。Groveのケーブルだと5cmというのが売ってます。

image.png

ソフトウェア

今回このモジュール用にとにかく値を取れるだけのライブラリを作って公開しましたので、これを使います。

Nerves で実装

いつものお作法に従って作ります。以下、ターミナルへの入力のみ書いてますが、毎度どっさりお返事が来ます。

% mix nerves.new bh1745test
% cd bh1745test
% vi mix.exs # deps に {:bh1745luminance, "~> 0.1.0"} を追加する
% mix deps.get
% export MIX_TARGET=bbb
% mix firmware
% mix burn # SDカードに焼く

焼いたSDを BeagleBone Green に挿してブートしてください。その際に、SDからブートさせるために user ボタンを押しながら電源を入れることをお忘れなく。これでライブラリの入ったファームウェアが立ち上がります。

テスト

試してみます。値は16bitで、4つの値が取れます。順に、赤・緑・青とあとクリアと呼ばれる照度が取れます。

iex(1)> {:ok, ref} = BH1745Luminance.open()
{:ok,
 %Circuits.I2C.I2CDev{
   ref: #Reference<0.2173033012.764280844.186945>,
   retries: 0,
   flags: []
 }}
iex(2)> BH1745Luminance.read_rgbw(ref) # 机の手元ライトを high にした
{1238, 2011, 950, 217}
iex(3)> BH1745Luminance.read_rgbw(ref) # 机の手元ライトを mid にした
{690, 1070, 485, 119}
iex(4)> BH1745Luminance.read_rgbw(ref) # 机の手元ライトを low にした
{376, 529, 221, 62}
iex(5)> BH1745Luminance.read_rgbw(ref) # 机の手元ライトを消灯した(環境光のみ)
{171, 176, 49, 25}
iex(6)> BH1745Luminance.close(ref)

まとめ

ダッシュで作ったプログラムで照度センサの値が取れるようになりました。

このライブラリではデフォルトのままセンサのパラメータを変えてないです。計測時間が160msでゲインが1xという最も鈍い側になってるので、センサの精度を活かしたい場合はパラメータを変えられるようにプログラムを改変する必要があります。そのうち時間が出来たらそのような拡張もやりたいですね。

参考文献

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?