06 – BME280とLCDを組み合わせて温度計をつくる
05で行ったLCDとBME280センサーを組み合わせて、温度と湿度をディスプレイ表示するシステムを作成します。
準備物
- LCD
- ポテンショメータ
- ジャンパワイヤ
- BME280
BME280
BME280は温度、湿度、気圧を計測することのできるセンサーです。センサーからの値をIC2(Inter-Integrated Circuit)を用いて、アナログ信号として読み取ります。I2C プロトコルでは、次の2つのピンを使用します。詳細はこちらのリンクを確認してください。
- SCL: Arduinoが一定の間隔でパルスを送信するシリアルクロックピン
- SDA: 2つのデバイス間でデータが送信されるシリアルデータピン
なお、BMP280と類似のBME280というセンサーも存在しています。BME280は湿度の計測を行うことができません。見分け方としては、銀色のセンサー本体の形が長方形ならBME280、正方形ならばBMP280です。
接続
LCDの接続は前回と同様です。BME280は次のように配線します。
- BME280 : RedBoard
- GND: GND
- VIN: 5V
- SDA: A4
- SCL: A5
ライブラリの追加
SparkFun_BME280_Arduino_Libraryからメインブランチを取得します。ZIPファイルとして取得するか、レポジトリをクローンしてください。その後、取得したディレクトリをC:/User/XXX/Arduino/libraries
以下に配置します。(Arduino IDEのインストール場所によって異なります。)
Arduino IDEがライブラリを見つけられない場合は、Arduino IDEの設定やインストール先を確認してください。また、Arduino IDEをリスタートしてみてください。
プログラムの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
/* Hardware connections: BME280 -> Arduino GND -> GND 3.3 -> 3.3 SDA -> A4 SCL -> A5 */ #include <LiquidCrystal.h> #include <Wire.h> #include "SparkFunBME280.h" BME280 mySensor; LiquidCrystal lcd(13, 12, 11, 10, 9, 8); // ディスプレイのピン配置を定義 void setup() { Wire.begin(); mySensor.setI2CAddress(0x76); //接続が失敗する場合は, 0x77を試してみてください if (mySensor.beginI2C() == false) // I2C通信の初期化 { Serial.println("The sensor did not respond. Please check wiring."); while(1); } lcd.begin(16, 2); //LCDの文字列配置の定義:16文字、2行で分割 lcd.clear(); //ディスプレイをクリアする } void loop() { lcd.setCursor(0, 0); //カーソルを左上に初期化 // 湿度の表示 lcd.print("Humidity: "); lcd.print(mySensor.readFloatHumidity(), 0); lcd.print("% "); lcd.setCursor(0, 1); // カーソルを1段下に移動 // 温度の表示 lcd.print("Temp: "); lcd.print(mySensor.readTempC(), 1); lcd.print("C"); delay(1000); // 1秒毎にディスプレイをリフレッシュ } |
結果
湿度と温度が表示されます。
センサーに触れてみてり、涼しいところ、温かいところなどに置いて表示が変化するか試してみてください。
まとめ
LCDとBME280センサーを組み合わせて、センサー値をリアルタイム表示するシステムを作成しました。