Arduino 入門
Lesson 56
【MQ-3 アルコールセンサ その3】
こにんちは、管理人のomoroyaです。
センサーの使い方の基本を学習する入門編。
世の中には、まだまだ色々なセンサーがあります。
これからも、色々なセンサーで遊んでいきます。
本記事はLesson 56 【MQ-3 アルコールセンサ その3】です。
Lesson 54、でMQ-3、アルコールセンサの基本制御を理解。
Lesson 55でMQ-3とプラス電子部品で遊びました。
本Lessonでは、MQ-3センサのアナログ出力を利用して遊びたいと思います。
※前回までは、デジタル出力を利用
アルコールを検知したら電圧閾値(検出量)に応じてLEDを光らせるといった具合です。
簡易的な、アルコール検出インジケータを作るイメージ。
アナログ出力の値をアナログ入力で読み取りAD変換しスケッチにて場合分けするだけです。
Lesson 54、Lesson 55にてA0を利用してすでに値の読み取りは実施済み。
あとは、場合分けするスケッチとLEDを組み合わせるだけです。
それほど難しい内容ではありません。
- MQ-2:LPG・煙センサ
- MQ-3:アルコールセンサ ← 本Lessonで使用
- MQ-4:メタンガスセンサ
- MQ-5:LPG液化石油ガスセンサ(天然ガス、都市ガス)
- MQ-6:LPG液化石油ガスセンサ(プロパン、ブタン)
- MQ-7:一酸化炭素ガスセンサ
- MQ-8:水素ガスセンサ
- MQ-9:ガスセンサ(一酸化炭素、石炭ガス、液化天然ガス)
- MQ-135:空気質センサ(ベンゼン、アルコール、煙)
※あっていると思いますが・・・間違えていたらご了承ください。
本Lessonで使用する「MQ-3ガスセンサ」は以下が同等品となります。
※prime対応品(prime対応でなければ他にもあり)
Amazonでの単品購入は割高です。
単品購入の場合は、国内の電子部品専門店をお探しください。
ただし、送料等をかんがえると単品購入は微妙なところ。
そのためセンサーキットをおすすめ。
※センサーキット prime対応品 出荷元:Amazon
Arduino入門編の解説にて使用しているArduinoは互換品です。
互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
はじめに
本Lessonはアルコールを検知量に応じてLEDを光らせます。
使用する電子部品は、MQ-3センサとLED。
本Lesson開始前に「アナログ入力」に関して下記Lessonを読んでおくとわかりやすいです。
Lesson 56 目標
本Lessonの目標は以下です。
2.MQ-3センサを動かしLEDを光らせるスケッチを描く
3.MQ-3でアルコール量を検出してLEDの光る数を変えて遊ぶ
いつものように、遊ぶことが重要です。
MQ-3センサは、これまでのLM393を使用したセンサモジュールと考え方は同じ。
そのため、簡単な測定であればスケッチもそれほど難しくありません。
ただし、動作の詳細を理解するためには多少の電子回路の知識が必要・・・。
回路がわからなくても遊べる、使える、作れるのがArduinoの良いところ。
準備
ではLessonの準備に取り掛かりましょう。
部品は「MQ-3センサモジュール」「LED」「抵抗」を使用。
ただし、動作の見た目を分かり易くするために自作のLチカも使います。
必要なもの
- USB接続用のPC(IDE統合環境がインストールされたPC)
→管理人が勝手に比較したBTOメーカーを紹介しています。 - UNO R3(以下UNO)、おすすめUNO互換品(ELEGOO)
- PCとUNOを接続するUSBケーブル
- ブレッドボード安価(大)、ブレッドボード安価(中)
※おすすめブレッドボード(大)、おすすめブレッドボード(中) - MQ-3 アルコールエタノールガスセンサーモジュール
- 発光ダイオード 5mm LED ダイオード4本
- 抵抗 330Ω 4つ
- M-M Jumper wire(UNOと部品をつなぐための配線)
- M-F Jumper wire(UNOと部品をつなぐための配線)
※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。
発光ダイオードは、有色、無色タイプから好みで選択。
※ダイオードセット prime対応品 出荷元:Amazon
Jumper wire、抵抗は今後も頻繁に利用します。
Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。
短めが使いやすい場合も。
抵抗も単品で揃えるよりはセットをおすすめします。
抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!
という方は、「電子工作基本部品セット」が使い勝手が良い。
使用部品説明
「MQ-3センサモジュール」「LED」について説明していきます。
ここはLesson 54、Lesson 03にも記載があります。
必要ない方は飛ばしましょう!
MQ-3センサモジュール(アルコール検知) 実物写真
下の写真が「MQ-3センサモジュール」の実物写真です。
本Lessonで使用するものは、回路が基板実装されたもの。
「MQ-3センサ」「LM393」「チップ抵抗」「チップコンデンサ」「LED」で構成されています。
左側:MQ-3センサ搭載の表面
右側:「LM393」「チップ抵抗」「チップコンデンサ」「LED」実装面
MQ-3センサモジュール(アルコール検知) 回路図
MQ-3センサモジュールの回路図を示します。
MQ-3センサ、電圧コンパレータIC(LM393)が実装されたモジュールの回路図となります。
ここは、電子回路の知識が少し必要になるため興味がない場合はすっ飛ばしてください。
回路図はテスタを使って部品の接続を1つ1つ確認したのでおそらく合っているはず・・・。
- VCC Arduinoの5Vに接続
- GND ArduinoのGNDに接続
- D0 Arduinoのデジタル入力ピンへ接続(使わない場合接続不要)
- A0 Arduinoのアナログ入力ピンへ接続(使わない場合接続不要)
本LessonではD0、A0を以下の用途に使います。
- D0:Lチカ(外付けLEDの点灯)
- A0:コンパレータ入力のレベル確認
MQ-3センサモジュール(アルコール検知) 仕様
MQ-3センサのデータシートは検索すれば閲覧可能です。
■仕様抜粋
Pin No. | Pin Name | Function |
---|---|---|
1 | VCC | 5V |
2 | 検出レンジ | 25 ~ 500ppm(ものによって異なる) |
3 | 余熱 | 48時間以上(センサを使用するには48時間以上の温める必要あり) 精度をもとめなければ、そこまでしなくて多分OKです・・・ |
詳細な特性を知りたい場合はMQ-3、LM393の仕様をそれぞれ個別に確認してください。
「MQ-3」「LM393」で検索するとそれぞれ調べることができます。
本Lessonは遊び、学習を想定しています。
Arduinoの仕様範囲内で使用していれば問題になることもありません。
遊び、学習以外での使用用途をお考えの場合はデータシートを必ず確認しましょう。
センサーキットがおすすめ。
※センサーキット prime対応品 出荷元:Amazon
LED
LEDは何でもよいのですが、一般的な5mmサイズが扱いやすいと考えます。
色は好きなものをお使いください。
LEDは向きがあります。
下の図に示すように長い方が「+」、短い方が「-」となります。
向きを間違えて接続すると点灯しません。
直接電源に接続することはしないようにしましょう。
必ず、抵抗などで電流を制限して使いましょう。
手持ちがないかたはセット品がお得です。
有色、無色タイプから好みで選択。
※ダイオードセット prime対応品 出荷元:Amazon
実践 回路作成とコード作成
最初に回路図を確認してください。
次に、回路図に合わせて部品を接続します。
最後にコードを書いて、「MQ-3センサ」を動かしていきましょう。
Arduinoのピン配置を確認したい方は番外編02を参照してください。
回路図
「MQ-3」「LED」を接続していきます。
Arduinoは
デジタル入力として10、デジタル出力として2、3、4、5、13。
※13はMQ-3のデジタル出力を利用して検出の有無に使用
アナログ入力としてA0を使用。
あとは、5VとGNDのみ。
回路図がこちら。
※LEDが不要の場合は、13番ピンには何も接続する必要はありません。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
部品は「MQ-3センサモジュール」、LED、抵抗のみとなります。
※センサが実装されたモジュール
LEDの数があるので、少し面倒ですが接続は簡単です。
毎回ブレッドボードにLEDをセットするのも面倒なので「Lチカ」自作しました。
おすすめです。
使用するポートは、デジタル入力10、デジタル出力2、3、4、5、13、アナログ入力A0、5V、GND。
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
コードの書き込み
接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。
コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。
コマンド説明
本Lessonでは、特に新しいコマンドはありません。
サンプルコード
Lesson 54のスケッチに「LEDと抵抗」を追加しただけのスケッチとなります。
LEDを組み合わせるだけで、なんとなく検出量をはかれた気分になり、なおかつ作った感を味わえます。
A0の出力は1.3V~4.0V程度でした。
※検出電圧のMin、Maxを調べてスケッチの閾値は変更ください
それを5段階に分けます。
段階(閾値) | アナログ入力のAD変換後の閾値[V] | LEDの点灯数[個] |
---|---|---|
1 | 2.0 以下 | 0 |
2 | 2.0 ~2.5 | 1 |
3 | 2.5 ~ 3.0 | 2 |
4 | 3.0 ~3.5 | 3 |
5 | 3.5 以上 | 4 |
本スケッチでは、「DDRD」「PORTD」を使用して、スケッチの簡略化をしています。
//Lesson 56 MQ-3センサ(アルコール検出センサモジュール)とLEDを使ったインジケータ //アルコールなどの燃焼性ガスを検知したらインジケータのようにLEDを点灯する //https://omoroya.com/ const int AQ0 = A0; //MQ-3センサモジュールA0の出力先 const int DQ0 = 10; //MQ-3センサモジュールD0の出力先 const int led1 = 5; //インジケータLED用のPIN const int led2 = 4; //インジケータLED用のPIN const int led3 = 3; //インジケータLED用のPIN const int led4 = 2; //インジケータLED用のPIN const int led = 13; //MQ-3センサの状態をモニタするためのLED <- 面実装LEDだけでOK不要 void setup (){ pinMode (DQ0, INPUT); //10番ピンをINPUT指定 DDRD = DDRD | B00111100; //Output指定をまとめて指定(2,3,4,5番ピンをOutput指定) PORTD = B00000000; //出力状態をまとめて指定。デジタルピン0~7をLOW pinMode (led, OUTPUT); //13番ピンをOUTPUT指定<-なくてもOK Serial.begin (9600); //シリアル通信のデータ転送レートを9600bpsで指定 } void loop (){ float A0_out; int D0_out; //MQ-3センサモジュールA0の値を読み取り電圧値を計算 A0_out = (float)analogRead(AQ0) / 1024.0f * 5.0f; //MQ-3センサモジュールD0の読み取り D0_out = digitalRead(DQ0); //シリアルモニタへの表示 Serial.println (D0_out); Serial.print ("A0 voltage value:"); Serial.print (A0_out, 4); Serial.println ("V, "); if(A0_out < 2.0){ PORTD = B00000000; //デジタルピン7~1をLOW }else if(A0_out >= 2.0 && A0_out <2.5){ PORTD = B00100000; //5番ピンに"HIGH"を出力 LED ON }else if(A0_out >= 2.5 && A0_out <3.0){ PORTD = B00110000; //5,4番ピンに"HIGH"を出力 LED ON }else if(A0_out >= 3.0 && A0_out <3.5){ PORTD = B00111000; //5,4,3番ピンに"HIGH"を出力 LED ON }else if(A0_out >= 3.5){ PORTD = B00111100; //5,4,3,2番ピンに"HIGH"を出力 LED ON } }
動作確認 閾値に応じてLED点灯
では、さっそく動作を確認していきます。
布などにアルコールを湿らせてMQ-3センサに近づけてください。
- アルコール検知なし → LED OFF
- アルコール検知あり → 検出量に応じてLEDが複数個ON
■アルコール検知なし(シリアルモニタのA0出力:~2.0V)
LED:0個(すべてOFF)
■アルコール検知なし(シリアルモニタのA0出力:2.0V~2.5V以下)
LED:1個ON
■アルコール検知なし(シリアルモニタのA0出力:2.5V~3.0V以下)
LED:2個ON
■アルコール検知なし(シリアルモニタのA0出力:3.0V~3.5V以下)
LED:3個ON
■アルコール検知なし(シリアルモニタのA0の出力は3.5V~)
LED:4個ON(すべてON)
まとめ
本Lessonは、以下を目標としました。
2.MQ-3センサを動かしLEDを光らせるスケッチを描く
3.MQ-3でアルコール量を検出してLEDの光る数を変えて遊ぶ
アナログ入力とLEDを組み合わせることによって、インジケータのようにして遊ぶことが可能です。
MQ-3センサを組み合わせることで、アルコール検出インジケータの完成です。
スケッチもLesson 54にif分を追加するだけでできてしまいます。
Lesson 56 【MQ-3 アルコールセンサ その3】 はここまで。
簡易的な、アルコール検出インジケータを作ってみました。
ぜひ、遊んでみてください。
疑問点、質問などありましたら気軽にコメントください。
次回、Lesson 57は要望のあった【Membrane Switch Module】を解説します。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント