専用の IC を利用すると、簡単に温度や気圧を測定できます。インターネットに接続してグラフ化したりボットを作ったりと応用先は様々ですが、ここでは LCD に結果を表示する測定基板を作成します。
必要なパーツ
以下のパーツが必要になります。画像ではコンデンサを直列に接続したり抵抗を並列に接続したりしていますが、これは手元に適切な値のパーツがなかったためです。
- 高精度 IC 温度センサ LM61CIZ x1
- 気圧センサモジュール MPL115A2 x1
- 液晶ディスプレイ SD1602H x1
- 抵抗 100Ω x1 (SD1602H に付属)
- 抵抗 4.7kΩ x2
- 可変抵抗 10kΩ x1
- コンデンサ 1.0μF x1
- Arduino UNO R3 x1
- ブレッドボード x1
- ジャンプワイヤ (適量)
- 短めのジャンプワイヤ (適量)
回路図
温度センサー
LM61CIZ は周辺回路が不要な温度センサーです。Arduino UNO の A0 ピンで電圧値を A/D 変換して利用します。後述の通り MPL115A2 でも温度を測定できますが、MPL115A2 の入手性がよくないため LM61CIZ を利用する例を記載しています。
気圧センサー
MPL115A2 は I2C ポートから気圧と温度をデジタルデータで出力する IC です。Arduino UNO の SDA および SCL ピンに接続して利用します。Arduino UNO の SDA/SCL ピンは A4/A5 ピンと電気的に接続されているため、A4/A5 ピンはアナログ入力として利用できないことに注意します。Adafruit の商品ページに記載されているライブラリを利用すれば Arduino で簡単に利用できます。
液晶ディスプレイ (LCD)
Arduino 公式ページに記載のある LiquidCrystal Library を利用することで、日立製作所の HD44780 またはその互換 LCD を比較的容易に制御できます。SD1602H は HD44780 互換 LCD です。特殊なピン配置となっており、15,16 ピンが 1-14 ピンと連番でなかったり 1-14 ピンの順番が通常の IC と逆であったりしますが、コンパクトな LCD のため回路全体が小さく収まります。4-bit モードで利用することで、Arduino のデジタルピン 4 本だけで制御できます。可変抵抗はコントラストの調整用です。100Ω 抵抗はバックライトの明るさを変更したい場合は適宜別の値のものに取り替えてください。
制御プログラム
#include <LiquidCrystal.h>
#include <Adafruit_MPL115A2.h>
// LCD のオブジェクトを生成します。使用するピン番号を設定します。
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// MPL115A2 のオブジェクトを生成します。
Adafruit_MPL115A2 mpl115a2;
void setup() {
// LCD で表示できる文字数を設定します。16x2 文字表示できます。
lcd.begin(16, 2);
// MPL115A2 の初期化を行います。
mpl115a2.begin();
}
void loop() {
// 温度 ////////////////////
// LM61CIZ の出力電圧を A/D 変換します。
int lm61ciz_ad = analogRead(A0);
// Arduino の A/D 変換の分解能は 10 bit です。電圧値 [mV] で表現した場合の値を計算します。
// https://www.arduino.cc/en/Reference/Map
int lm61ciz_v = map(lm61ciz_ad, 0, 1023, 0, 5000);
// LM61CIZ のデータシートによると -30 度 から +100 度の範囲が線形に
// +300mV から +1600mV の電圧として出力されることが分かります。
// 温度は以下の計算で得られます。
int lm61ciz_t = map(lm61ciz_v, 300, 1600, -30, 100);
// 温度を表示します。
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(lm61ciz_t);
lcd.print(" *C");
// 気圧 ////////////////////
double pressureKPA = mpl115a2.getPressure();
double temperatureC = mpl115a2.getTemperature(); // 今回は使用しません。
// 気圧を表示します。
lcd.setCursor(0, 1);
lcd.print("Pres: ");
lcd.print(pressureKPA);
lcd.print(" kPA");
delay(1000);
}
記事内で用いられたハードウェア
関連記事
- 内蔵LEDを点灯させるまで (Arduino)Arduinoとは Arduino は初心者でも入門しやすいマイコンボードです。アルデュイーノと読みます。マイコンとは家電などに内蔵されている小さなコンピュータで、マイコンが必要とする周辺機器一式と一緒に一つのボードにまとめたものがマイコンボードです。数あるマイコンの中で特にArduinoにはAVRマイコンが使用されています。2005年にイタリアで開始されたオープンソースハードウェアのプロジェクト...
- 虚仮威しの防犯装置 (Arduino)人が接近すると防犯用の音を鳴らします。インターネットに接続してメール送信機能を追加すれば、虚仮威しどころか立派な防犯装置になります。センサの性能は視野角が約 120 度と広範囲で、距離もおおよそ 2m まで検知可能です。赤外線を発する人体や動物などが動くと反応します。自動ドアや照明の自動点灯にも応用されています。
- 電力の無駄遣い (定電圧電源)マイコンを含む様々な IC を動作させるためには定電圧電源が必要です。USB ケーブルなどで供給する場合を除き、定電圧を出力するための回路が必要になります。ここでは、乾電池 9V 形から得られる電圧を 5V に変換し、更に 3.3V に変換し、最後に 5V に昇圧するという電力の無駄遣いともとれる基板を作ります。動作させるものはマイコンではなく燦然と輝く LED です。汎用基板として様々な場面で利...
- Arduino で作る 7 セグメント LED タイマーArduino の入門として、4 桁の 7 セグメント LED でカウントアップタイマーを作ってみます。PIN の電流制限を考慮してトランジスタを使用する必要があったり、桁数が多いためダイナミック点灯制御を用いなければならなかったりと、単なる LED 点灯制御と比較して考えなければならない事項は多めです。
- 電子工作でインターネットに無線接続して通信を行う (Arduino)四つの選択肢 WiFi シールド Arduino に接続することで WiFi の機能を拡張できるボードです。公式ページは以下のとおりです。 Arduino WiFi Shield (旧シールド) [Arduino WiFi Shield 101](ht