三浦製作所

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

【Wifi , Bluetooth搭載マイコン】【実装】ESP32で温湿度センサ (BME280)を動かす

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

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

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

 

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

www.takeshi-1222.com

 

Arduino Nano版はこちら

www.takeshi-1222.com

 

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

www.takeshi-1222.com

  • サーボモータ実装

www.takeshi-1222.com

  • 無線書き込み実装

www.takeshi-1222.com

  • Webサーバー実装

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

 

 

ESP32, BME280の簡単な説明

ESP32

ESP32の大きな特徴はWifi, Bluetoothを搭載しているところです。そのうえでArduinoよりも安価に購入でき、ArduinoコードやC++などいくつかの言語の互換性があります。そのため、1つのマイコンでいろいろなことを試したい方には大変おすすめなマイコンです。

温湿度センサ (BME280)

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

 

実験構成

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

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

 

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

実験

配線

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

f:id:bamboomush:20210203225819p:plain

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

f:id:bamboomush:20210203225810p: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 -> 21
  SCL -> 22
*/

#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機器を製作できるようになります。

まとめ

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