【Arduino】1602A LCDとMQ-135のテスト
1602A LCDを接続する
通常パソコンでプログラムを組んだ場合、結果やデバッグ情報などは画面に表示させて確認します。しかし一般的なマイコンには標準出力がないため、例えばArduinoではパソコンとUSBケーブルで接続している際はシリアルモニタという機能で確認します。
でもパソコンと接続していない場合でも、何らかの情報を表示したいと思うことがありますよね。
そんなちょっとした情報を表示させたい場合に、簡単かつ安価で表示させる手段としてキャラクタLCDが良く用いられます。
これらの大半は日立が80年代に作成したコントローラーIC(HD44780)の互換品を使用しているようで、メーカーは違っても同じように使用することができます。
参考
SC1602 LCDモジュール (HD44780コンパチブル) の使い方JM1GAD’s Home Page
参考
キャラクタLCDモジュールの使いかたElectronic Lives Mfg.
今回使用したものは1602Aと呼ばれるもので、16列*2行の文字を表示させることができます(画像などは表示できません)。
4年程前になりますが、Raspberry Piを購入した際に初心者向け工作セットのようなパーツセットを購入したことがあり、その中に1602Aも入っていました。
また最近、5個セットでAmazonからお安く購入したものも手元にあります。
写真を撮ってみましたが、違いはほとんどないように見えました。
検索してArduino UNOと1602Aを接続されているサイトを参考に、さくっと接続してみます。
例えばこちら。
参考
Arduino を用いて LCD に文字を表示基礎からのIoT入門
ArduinoからはLiquidCrystalライブラリを使用するだけで簡単に利用することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <LiquidCrystal.h> LiquidCrystal lcd( 4, 6, 10, 11, 12, 13 ); void setup() { lcd.begin( 16, 2 ); lcd.clear(); lcd.setCursor(0, 0); lcd.print("dende256!"); } void loop() { } |
表示できました!
MQ-135を試してみる
1602Aを使用する用途として考えていたのは、連射装置やコマンドコントローラーに関する情報(プログラムのVersionや簡単な入力情報など)の表示ですが、まずは他用途で使ってみます。
自分は自動車を運転することが多いのですが、ずっと運転しているとどうしようもないくらいの眠気に襲われることが稀にあります。
前日に十分な睡眠をとっていても、気分転換をしてみても、渋滞もなく快適に走れていても、眠くなることはあるのです。
何故だろうと不思議に思っていたのですが、こういった運転中の眠気の原因の一つとして車内の酸素濃度低下があるという情報を何かで目にしました。
また、室内で集中力に欠けたり肩こりや頭痛を感じたときも同様に、酸素濃度が低下している可能性があるようです。
じゃあ試しに測定してみよう、と思ったのですが、意外とお高くて気軽には手を出せませんでした。
例)
もっと手頃なのはないかと調べていきMQ-135というガスセンサーを見つけました。
CO2も検出できますし、しかも非常に安価です(Amazonでも300円しません(送料無料))。
このようなものです。
参考
MQ-135 空気汚染センサーモジュールイーストラクト
参考
MQ-135 Sensor Air Quality Sensor Hazardous Gas Detection LM393 MQ135 gas sensor氾濫原
ひとまずダメもとでこれをArduino UNOから使用してみることにします。
測定値をもとに何かの研究をするわけでもないですし、運転始めとの差異(部屋の場合であれば換気直後との差異)がわかればよいので気楽にいきます。
元々測定器具は定期的に校正しないと正確な値を計れないものですし、この価格のものに精度を要求しても酷ですよね。
MQ-135に端子は4本あり、電源(+5V/GND)とデータの出力(デジタル/アナログ)です。
デジタル出力は汚染なし:0(0V)/汚染あり:1(+5V)のいずれかの結果が返るようですが、今回の用途には合わないため使用せず。
一方、アナログ出力は0v~+5Vの範囲で結果を出力してくれるようです。
これはArduino UNOにとってとても都合がよく、ArduinoにはA/Dコンバーターもついていますので、GPIOのアナログピンに接続してanalogRead()するだけで0~+5Vの入力電圧を0から1023の数値として使用することができます。
参考
ESP-WROOM-02とMQ-135でCO2濃度を測定するQiita @erukitiさん
参考
Arduino And MQ 135 Gas Sensor With Arduino CodeArduino PROJECT HUB
接続も簡単ですのでさくっとつけてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <LiquidCrystal.h> LiquidCrystal lcd( 4, 6, 10, 11, 12, 13 ); void setup() { lcd.begin( 16, 2 ); lcd.clear(); lcd.setCursor(0, 0); lcd.print("MQ-135 Test"); } void loop() { int input_value = analogRead(0); lcd.setCursor(0, 1); lcd.print(input_value); lcd.setCursor(5, 1); lcd.print("(0 - 1023)"); delay(100); } |
通常時
フラックスを塗った後の綿棒を近づけた時
しばらく綿棒を近づけていると値が振り切れてしまいました。
(写真は値が下がっている最中で890くらい)
まとめ
久しぶりの工作となりましたが、さくっと1602Aの接続とMQ-135での計測ができました。
MQ-135はしばらく様子を見て、安定動作しているようであれば、車内に持ち込んで値の変化を見てみようと思います。
現在の構成では電池で運用するには消費電力が大きすぎるため、シガーソケット等から電源をとる必要があることや、仮配線のためかさばることもあって、本格的に運用するには課題となりそうです。