7
6

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 5 years have passed since last update.

ArduinoでGroveアルコールセンサSEN21723Pを試す

Last updated at Posted at 2015-03-01

Precondition

簡単に動作するハズだった…

Groveシステムを使えば、簡単に試せるハズだったのです…。
しかし、私の環境では、上手く動作せず、いろいろ試したことをまとめておきます。

まず、動作しなかった手順は以下です。

  1. センサをGroveベースシールドの A0 端子に接続する
  2. Grove - Alcohol Sensorからコードをコピペする
  3. Arduino IDE にてコンパイル&書き込み
  4. Arduino IDE のシリアルモニタにてログを確認する

ここで、

  • シリアルモニタに何も表示されない
  • Arduino の電源を切り入り
  • PC に接続したところでシリアル (COM5) が認識しない
  • PC 再起動で何とか認識し、原因究明を始める
  • Arduino本体, Groveベースシールド, ケーブルに問題はなさそう
  • センサ自体が壊れている可能性もあるが、そうそうハズレに当たるとは思えない (思いたくない)
  • そもそもセンサの仕様を分かっていなかったため、仕様を調査する
  • 手元の品とネット上での品が若干違う…バージョンが違うのか…?

Intel Edisonでアルコールセンサーを使ってみた』から以下だと思った。

  • SEN21723P
  • 内蔵ヒーターを熱する必要があり、電源投入後 5 分~ 10 分は正確に測定できない
  • Grove ベースシールドの A0 端子に接続した場合、下表の様なピンアサインになる
    • A0 ピンがアナログ入力のセンサ部
    • A1 ピンがデジタル出力のヒータースイッチ部
      • HIGH (1) : OFF
      • LOW (0) : ON
  • 表示する値は 1023 からセンサの値を引く
    • 空気中にあるアルコールによりセンサの抵抗値が下がる仕組み
Arduino Sensor Color
A0 DAT Yellow
A1 SCL White
5V VCC Red
GND GND Black

VCC と GND は怪しくない。DAT もセンサ部でアナログ入力なので A0 ピンで良さそう。SCL の A1 ピンから漂ってくる怪しさ…。

そこで、仕様から SCL は内蔵ヒーターで、使用する際に ON になれば良さそうなので、 LOW となるよう GND ピンに直結して、起動と同時に内蔵ヒーター ON でどうだろう、と。

Grove ベースシールドを使用せず Arduino に直結する

次の写真のように直結してみた。

002-01-light.jpg

ピンアサインは、以下です。

Arduino Sensor Color
A0 DAT Yellow
GND SCL White
5V VCC Red
GND GND Black

SCL ピンに関係するコード部分 (例えば、内蔵ヒーターを OFF, ON するなど) を除去して簡単化しました。

AlcoholSen.ino
//Alcohol Sensor DAT Pin is connected to Analog Input Pin 0 (A0)
#define analogInDatPin 0

int sensorValue = 0;

void setup()
{
    Serial.begin( 9600 );                 // open the serial port at 9600 bps
    Serial.println( "setup done.\n" );
}

void loop()
{
    sensorValue = analogRead( analogInDatPin );    // read the analog value
    Serial.print( "sensor test value = " );     // Disply the results in serial monitor.
    Serial.println( 1023-sensorValue );         // sensorValue goes down when alcohol is detected.
    delay(1000);
}

動作を確認する

  1. Arduino IDE にてコンパイル&書き込み
  2. シリアルモニタを起動し、ログを確認する
    [ツール] → [シリアルモニタ]
    002-02.png

途中、314 → 343 → 581 → 874 → 914 と急激に上昇している部分があります。
このタイミングで、日本酒を入れたお椀の直上にセンサを持ってきました。とても分かりやすいです。

感想

  • すぐに試してみるって目的のために Grobe システムを導入したのですが、上手くいかない事もあると体感しました
  • センサの仕様を理解しておく事の重要性も再認識です
  • アルコールセンサを使った面白いネタは、思い付かなかった
7
6
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
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?