【IoTchallenge】アルコールセンサ&Lチカ電子工作編 #100

【IoTchallenge】アルコールセンサ&Lチカ電子工作編 #100

【IoTchallenge】アルコールセンサ&Lチカ電子工作編 #100
Pocket

ウェアラブルデバイスを一人メーカーで作ってみよう!

#IoT #電子工作 #Wearabledevice #アルコールセンサ #LED #Arduino #seeedstudio

ついにIoT関連投稿100回目になった妄想ダイスキOKstyleです。

以前、アルコールセンサーでの検知まではやりました。パソコンで数値を見ながらでは不便なので、今回はパソコンがなくても、数値によって5段階でLEDを光らせるようにしました。

①ミニブレッドボードとLED、抵抗などなどセッティング


ミニブレッドボードを使いながら、LEDと抵抗を刺していって、こんな感じで組み立てはハンダ付けもないので、あっさりとできました!

試作①上から外観

試作①上から外観

試作①横から外観

試作①横から外観

 

②Arduino IDEでスケッチを作成


組み立てまでは順調にいって、1時間弱でできました。

しかし、そこからが意外と大変でした。

まずは、他の方のスケッチを参考に「これならいける!」と思ったもので書き込むものの、数値が上がってもLEDが光らない!

なぜだー!?となりながら、原因がわからず、実はその日は諦めてしまいました。

別の日に優秀なエンジニアの方に助けてもらいながらやってみました。

そしたら、原因がわかりました!アルコールセンサーの値が1023からセンサーにかかる抵抗の分を引いているので、0から数字があがっていくわけではなく、1023からカウントダウンしていっていました。

ということで、スケッチに

「 level = 1023 – sensorValue; 」の一文を追加して、0からカウントしていくようにしました。

Arduino IDE上で、検証・コンパイルして、Arduinoに書き込みました!

<Arduino IDE スケッチ>

 

/* アルコールチェッカ Arduino UNO 版 */
//Alcohol Sensor DAT Pin is connected to Analog Input Pin 0 (A0)
#define analogInDatPin 0

int sensorValue = 0;
int level=0;

void setup()
{
   // LEDの色はお好みで!
  pinMode(13, OUTPUT); // D13ピン・ミント色
  pinMode(12, OUTPUT); // D12ピン・レモン色
  pinMode(11, OUTPUT); // D11ピン・ピーチ色
  pinMode(10, OUTPUT); // D10ピン・ピーチ色
  pinMode(9, OUTPUT); // D9ピン・トマト色  
  // はじめはぜんぶ消灯
  digitalWrite(13, 0);
  digitalWrite(12, 0);
  digitalWrite(11, 0);
  digitalWrite(10, 0);
  digitalWrite(9, 0);
  
    Serial.begin( 9600 );                 // open the serial port at 9600 bps
    Serial.println( "setup done.\n" );
}

void loop()
{
  // 0~20 : 全LED消灯
  if (level < 400) {
    digitalWrite(13, 0);
    digitalWrite(12, 0);
    digitalWrite(11, 0);
    digitalWrite(10, 0);
    digitalWrite(9, 0);
  }
   // 20~50 : ミント色点灯
  if (level >= 400 and level < 500) {
    digitalWrite(13, 1);
    digitalWrite(12, 0);
    digitalWrite(11, 0);
    digitalWrite(10, 0);
    digitalWrite(9, 0);
  }
  // 50~70 : レモン色点灯
  if (level >= 500 and level < 600) {
    digitalWrite(13, 0);
    digitalWrite(12, 1);
    digitalWrite(11, 0);
    digitalWrite(10, 0);
    digitalWrite(9, 0);
  }
  // 70~85 : ピーチ色点灯(1つ)
  if (level >= 600 and level < 700) {
    digitalWrite(13, 0);
    digitalWrite(12, 0);
    digitalWrite(11, 1);
    digitalWrite(10, 0);
    digitalWrite(9, 0);
  }
  // 85~100 : ピーチ色点灯(2つ)
  if (level >= 700 and level < 800) {
    digitalWrite(13, 0);
    digitalWrite(12, 0);
    digitalWrite(11, 1);
    digitalWrite(10, 1);
    digitalWrite(9, 0);
  }
  // 100~1023 : トマト色点灯…泥酔?
  if (level >= 800) {
    digitalWrite(13, 0);
    digitalWrite(12, 0);
    digitalWrite(11, 0);
    digitalWrite(10, 0);
    digitalWrite(9, 1);
  }

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

③動作確認してみた!


もちろん三ツ星片手に高々と〜!オリンオンビールです!

オリオンビール

オリオンビール

試作①テスト

試作①テスト

オリオンビールの缶の口にアルコールセンサーをセットして、しばらく数分待つと、、、LEDが緑色に点灯!お〜、ちゃんとセンサーの値に対して光りました!

試作①オリオンビールでLEDが緑色に点灯

試作①オリオンビールでLEDが緑色に点灯

パソコンにつないで、値も確認しました!Arduino IDE モニター数値はだんだんあがっていきます!ちなみに電池を電源にできるようにしたので、モバイル持ち歩いて動作させることもできます(^^)

Arduino IDE モニター数値①

Arduino IDE モニター数値①

Arduino IDE モニター数値②

Arduino IDE モニター数値②

ちゃんと試作①が動作してほっとしました!!次はデータ蓄積などなどステップしてきます。

今日も最後まで読んでいただき、ありがとうございましたm(_ _)m

コメントを残す

%d人のブロガーが「いいね」をつけました。