LoginSignup
1
2

M5Stackで温湿度センサーを作る

Posted at

M5Stackで温湿度センサーを作る

作業部屋の湿度を感じることが多いのですが、気づいたら気にならない時期になってます。。
除湿機を買おうか悩んでいたのですが、実際どの程度湿度変化があるのか気になり、
温湿度センサーを作ってみることにしました。

画面があると色々と便利なので、M5Stackを使ってみます。
BLE、Wi-Fi使えるので、幅広げるのも楽そうかなと思っています。

本記事では、M5Stackで温度・湿度・気圧を取得するところまで進めます。

ハードウェア構成

  • M5Stack BASIC V2.7
  • M5Stack用温湿度気圧センサユニット Ver.3(ENV Ⅲ)

環境構築

PlatformIOを業務で使っていたので、PlatformIOを使って環境構築します。

前提として、Visual Studio Codeの拡張機能にPlatformIOインストール済みです。
PlatformIOのインストールはこちらを参考にしてください。

困った時は、他記事で丁寧に環境構築が書かれているので、参考にしてください。
こちらなど

PlatformIOのプロジェクト作成

以下設定でプロジェクトを作成しました。

  • Name: env-sensor
  • Board: M5Stack Core ESP32
  • Framework: Arduino

プロジェクトを作成すると、以下のようなディレクトリ、ファイルが自動生成されます。

.
├── include
│   └── README
├── lib
│   └── README
├── platformio.ini
├── src
│   └── main.cpp
└── test
    └── README

M5Stackライブラリのインストール

PlatformIOのライブラリ画面から以下ライブラリをインストールします。

M5Stack by M5Stack

書き込みの確認

適当なソースコードを用意して、Uploadの確認をします。
確認用のソースコードは、PlatformIO/Libraries/M5Stack/Examples/Displayのサンプルコードをmain.cppにコピペしました。
これで、M5Stackに書き込めることを確認しました。

書き込み方法

PlatformIOの書き込みは以下方法があります。

  • PlatformIOのサイドメニュー(PlatformIOのプロジェクトとしてVS Codeを開いている時)
  • VS Code下部のアップロードアイコン(→)
  • コマンド (pio run -t upload)

pioコマンドは、source ~/.platformio/penv/bin/activateを実行すると使えます。

温湿度の取得

実際にセンサ値を取得するソースコードを実装します。

センサ値を取得するためのソースコードをダウンロード

GitHubに M5Stack用温湿度気圧センサユニット Ver.3(ENV Ⅲ) の制御コードが置かれているので、ダウンロードします。
M5Stack用温湿度気圧センサユニット Ver.3(ENV Ⅲ)のGitHub
自分の環境では、以下のように保存しました。

.
└── src
    └── main.cpp
    └── sensor
        ├── DHT12.cpp   <-- 追加
        ├── DHT12.h     <-- 追加
        ├── M5_ENV.h    <-- 追加
        ├── QMP6988.cpp <-- 追加
        ├── QMP6988.h   <-- 追加
        ├── SHT3X.cpp   <-- 追加
        └── SHT3X.h     <-- 追加

main.cpp のソースコードを下記に記載します。

#include <M5Stack.h>
#include "sensor/M5_ENV.h"

SHT3X sht30;
QMP6988 qmp6988;

float temperature = 0.0;
float humidity = 0.0;
float pressure = 0.0;

void setup()
{
    M5.begin();
    M5.lcd.setTextSize(2);

    Wire.begin();
    qmp6988.init();
    sht30.init();
    M5.lcd.println("ENV III Unit Test");
}

void loop()
{
    pressure = qmp6988.calcPressure();
    if (sht30.get() == 0)
    {
        temperature = sht30.cTemp;
        humidity = sht30.humidity;
    }
    else
    {
        temperature = 0.0;
        humidity = 0.0;
    }

    M5.lcd.fillRect(0, 20, 100, 60, BLACK);
    M5.lcd.setCursor(0, 20);
    M5.lcd.printf("T: %2.1f  \r\nH: %2.0f%%  \r\nP:%2.0fPa\r\n",
                  temperature, humidity, pressure);
    delay(1000);
}

ここまでで、M5Stackにソースコードをアップロードすると、M5Stackで温度・湿度・気圧を確認することができます。

まとめ

M5Stackとセンサを用いて、温度・湿度・気圧を取得することができました。
今後、BLEやWi-Fiを用いてWebやスマホからセンサ値を確認できるようにする予定です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2