M5Stack Basic | 光センサーユニットを使ってみる

スポンサーリンク

M5Stackの光センサーユニットを使ってみる

M5Stack Basicと一緒に使ってみます。

あとがきにも書きましたが

M5Stack ATOMシリーズを使えば配線がもっとスマートになりそうです

M5StackのセンサーユニットとGROVEコネクタ


M5Stackには専用のセンサーユニットがたくさんあります。
センサーがむき出しでなくパッケージがついていることと、
GROVEという4ピンのコネクタがついていることが特徴です。

もちろんM5Stack以外のマイコンでも使えるのですが、
GROVEコネクタで接続できるのでM5シリーズとの親和性が高いです。

光センサーユニット

今回使う光センサーユニットはスイッチサイエンスなどで購入できます。

M5Stackと光センサーの説明

このユニットは光を感知するセンサー部分と半固定抵抗、GROVEコネクタがついています。
出力はアナログ出力と 0 or 1 のデジタル出力があります。
M5Stack Basicの左下についている赤いGROVEコネクタはI2C用のため
アナログ出力は受け取れないので注意してください。

光センサーの出力を受け取る

光センサーとM5Stackの接続

アナログ出力(電圧値)を受け取るにはGROVEコネクタではなく
アナログ入力ができるGPIOに繋げる必要があるので
GROVEとジャンプワイヤを変換できるようなケーブルがあると便利です。
写真はメスのジャンプワイヤ変換ケーブルです。
オスのジャンプワイヤ変換ケーブルの場合はM5Stackの右側から接続してください。

M5Stackはオス/メスのジャンプワイヤどちらも挿せて便利

アナログ値は電圧レベルで出力されるのでアナログ用のGPIOに接続します。
アナログ用のGPIOだと電圧レベルを中のADCでデジタル値に変換できます。
今回はセンサーのアナログ出力を36番、デジタル出力を26番に繋ぎます。
あとはGNDと5Vを接続すればOKです。

コードはこんな感じ。

#include <M5Stack.h>

int analogRead_value = 0;
int digitalRead_value = 0;

void setup() {
  M5.begin();
  M5.Speaker.begin();
  M5.Speaker.mute();
  M5.Lcd.fillScreen(BLACK);

  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.setTextSize(2);

  pinMode(26, INPUT_PULLUP);
}

void loop() {
  analogRead_value = analogRead(36);
  digitalRead_value = digitalRead(26);
  
  M5.Lcd.setCursor(10, 10);
  M5.Lcd.printf("analog = %4d   ", analogRead_value);
  M5.Lcd.setCursor(10, 50);
  M5.Lcd.printf("digital = %d  ", digitalRead_value);
  delay(500);
}

M5.Speaker.~() はスピーカーのノイズ音を消すおまじない。
センサーの値の更新は delay(500); で500ミリ秒おき(1秒に2回)にしました。
ちなみに M5.Lcd.setTextColor(WHITE, BLACK); の2つの引数ですが、
1つ目の引数WHITEは文字の色、2つ目の引数BLACKは文字の背景の色です。
文字の背景を指定しておかないとどんどん重ね書きされて読めなくなるので注意です。
(毎回LCDの表示をクリアしても良いですがそれも面倒なので。)

コードをコンパイルして書き込むとアナログ/デジタル両方の値が表示されます。
デジタルだと明るいときに「0」、暗いときに「1となるみたいです。

センサーに手をかざしたりライトを当ててみると挙動が分かると思います。
電圧レベルは12bitで変換されているので 0から4095 の値で表示されます。
どの位のアナログ値でデジタル値の 0 or 1 が切り替わるか(閾値)は
半固定抵抗で調整できます。ドライバーで抵抗のねじを回して調整します。

M5Stack Basicにもアナログ入力できるGROVEポートほしかった

あとがき

M5Stack BasicのGROVEポートはデジタル専用ピンに繋がっているので
アナログ値を扱うセンサを使う場合は
GROVEコネクタとジャンパーピンの変換ケーブルが必要になってしまいます。

M5Stack ATOMシリーズなら
GROVEコネクタがアナログ入力可能なピンに繋がっているので
通常のGROVEケーブルで接続が可能になります。

コメント

タイトルとURLをコピーしました