三浦製作所

興味のあるものをとりあえず動かしてみた、実装してみたシリーズをガンガン上げていきたいと思います。あくまでも自身の備忘録としてですが、誰かの助けになったらうれしいです。

【低価格マイコン】【実装】Arduino Nanoで温湿度センサ (BME280)を動かす

f:id:bamboomush:20210206214943p:plain
 Arduino Nanoを用いて温湿度センサを実装したので、そのやり方について紹介したいと思います。

この記事を読むことで、安価なマイコンであるArduino Nanoで温湿度センサが実装できるようになります。

今回の温湿度センサは気圧や高度も測ることができます。また、安価なセンサと比べると高性能なセンサです。これを動かせることで、IoTモジュール、デバイスの開発ができ、室温の管理から、冷房の開発まで可能となります。

 

安価な温湿度センサ (DHT-11)版

www.takeshi-1222.com

 

ESP32版はこちら

www.takeshi-1222.com

 

◆Arduino関係の実装記事◆ 
  • DCモータ実装

www.takeshi-1222.com

  •  サーボモータ実装

www.takeshi-1222.com

  • OLED実装

www.takeshi-1222.com

  • 超音波センサ実装

www.takeshi-1222.com

  • LCDディスプレイ実装

www.takeshi-1222.com

  • 温湿度センサ (低コスト)

www.takeshi-1222.com

  • 温湿度センサ (複数)

www.takeshi-1222.com

  • CO2センサ 

www.takeshi-1222.com

  • ほこりセンサ

www.takeshi-1222.com

 

Arduino Nano, BME280の簡単な説明

Arduino Nano

Arduino Nanoは超安価で購入ができるマイコンで、電気やプログラミングの深い知識を持っていない電子工作初心者でも扱いやすい、オープンソースマイコンです。

Arduinoと比較すると、性能は劣るものの、安価で広い用途で使用可能なので初心者に適しています。

ちなみに、上記が純正品ですが、互換品である以下も性能面では変わらないので強いこだわりがない限りは、互換品の方がおすすめです。

温湿度センサ (BME280)

温湿度センサはそのままの意味で、温度と湿度の計測が可能で、さらにそれらの値から不快感を測る指標である不快指数も算出することが可能です。さらに、気圧や高度の計測も可能となっている。

 

実験構成

 今回の実験に使用する部品は以下のものです。
  • Arduino Nano
  • 温湿度センサ (BME280)
  • ジャンパ線多数

Arduino Nano、温湿度センサは上記のものを使用しています。

 

ジャンパ線は何を使用してもいいですが、一応リンクを張っておきます。

実験

配線

まず配線は以下のようにします。

f:id:bamboomush:20210203224757p:plain

配線ができると以下のような画像のようになります。

f:id:bamboomush:20210203224832j:plain

実行コード

ここまで出来たら以下のコードを実行することで動作確認ができます。

/*
  Get basic environmental readings from the BME280
  By: Nathan Seidle
  SparkFun Electronics
  Date: March 9th, 2018
  License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).

  Feel like supporting our work? Buy a board from SparkFun!
  https://www.sparkfun.com/products/14348 - Qwiic Combo Board
  https://www.sparkfun.com/products/13676 - BME280 Breakout Board
  
  This example shows how to read humidity, pressure, and current temperature from the BME280 over I2C.

  Hardware connections:
  BME280 -> ESP32
  GND -> GND
  VIN -> 5V
  SDA -> A4
  SCL -> A5
*/

#include <Wire.h>

#include "SparkFunBME280.h"
BME280 mySensor;

void setup()
{
  Serial.begin(9600);
  Serial.println("Reading basic values from BME280");

  Wire.begin();
  mySensor.setI2CAddress(0x77);
  if (mySensor.beginI2C() == false) //Begin communication over I2C
  {
    Serial.println("The sensor did not respond. Please check wiring.");
    while(1); //Freeze
  }
}

void loop()
{
  Serial.print("Humidity: ");
  Serial.print(mySensor.readFloatHumidity(), 2);

  Serial.print(" Pressure: ");
  Serial.print(mySensor.readFloatPressure(), 2);

  Serial.print(" Alt: ");
  Serial.print(mySensor.readFloatAltitudeMeters(), 2);
  //Serial.print(mySensor.readFloatAltitudeFeet(), 1);
  Serial.print(" Temp: ");
  Serial.print(mySensor.readTempC(), 2);
  //Serial.print(mySensor.readTempF(), 2);
  Serial.print(" discomfort: ");
  Serial.print(0.81*mySensor.readTempC()+0.01*mySensor.readFloatHumidity()*(0.99*mySensor.readTempC()-14.3)+46.3, 4);
  Serial.println();

  delay(1000);
}

今回は1秒おきに温度、湿度、高度、気圧、不快指数をプリントしています。これらの値を使って、いろんなIoT機器を製作できるようになります。

まとめ

今回は、Arduino Nanoで温湿度センサを動かすために必要なものの紹介と、サンプルプログラムの紹介をしました。