Grove
ESP32
NefryBT
NefryDay 3

Nefry BTでGrove温湿度センサをサクッと扱う

こんにちは、ちゃんとくです。この記事はNefry Advent Calendar 2018 3日目の記事です。


Nefry BTって?

Image from Gyazo

Nefry BTは「ESP-WROOM-32」というWi-Fi・BLE通信モジュールを搭載した、Arduinoと同じように開発できるマイコンボードです。

Groveという刺すだけで配線できるモジュール対応のコネクタを搭載していて、ハードウェアをあまり意識せずに開発できます。

この記事は下記のNefry BT環境構築・初期設定が済んでいる前提で進めます。


Groveって?

Image from Gyazo

中国のSeeed Studio社が開発・販売している刺すだけで配線できるモジュールです。電源、信号線がソケットにまとめられており、回路の知識があまりなくても配線を行えます。

温湿度センサ、照度センサ、磁気スイッチ、サーボモータなど基本のモジュールは大体網羅しており、現在は100種類以上あるようです。(中の人に聞いたところ「数を把握しきれていない」とのことでした…!)

Nefry BTでGroveモジュールを使った作例はたくさんあるのですが、意外と情報がまとまっていないのでこの機会に1日ずつサクッとまとめてみることにします。

何日やれるかは未定です。期待せずお待ちください。


温度・湿度を取得する

Image from Gyazo

温度・湿度を取得できる温湿度センサです。20〜90%範囲の湿度、0〜50℃の温度測定ができます。(公式Wiki

以前にもNefry BTでほぼノンプログラムな湿度管理したいで書いたのですが、エラーとか辿らずサクッとやる方法まとめです。


配線

connect.jpg

温湿度センサは「A0」というソケットに差し込みます。少し硬いですが、カチッと言うまで押し込めます。配線作業は常に電源オフの状態で行います。


温湿度センサを扱うライブラリを追加

download.png

下記リンク先のページで「Clone or Download」から「Download ZIP」を選択します(2つのページから両方ダウンロードしてください)。

library.png

Arduino IDEのスケッチ > ライブラリをインクルード > .ZIP形式のライブラリをインストールから、ダウンロードされたZIPファイルを2つとも追加して完了です。


プログラム

#include "DHT.h"

#incude "Nefry.h"

#define DHTPIN A0
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
dht.begin();
Nefry.println("温度・湿度をチェック");
}

void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();

if (isnan(h) || isnan(t)) {
Nefry.println("読み取りに失敗しました");
return;
}

Nefry.println("湿度: " + h + " %\t");
Nefry.print("温度: " + t + " *C");

delay(2000);
}


シリアルモニタで確認

serial_monitor.png

メニューのツール>シリアルモニタ を選択して開きます。

※シリアルポート接続(PCにUSB接続)できない人 → Nefryポータルの「Web Console」を見ましょう

bps.png

Nefry BTのデフォルトは115200bpsになっています。右下のbps設定を「115200bps」に変更します。

Image from Gyazo

2秒ごとに、シリアルモニタに温度と湿度が表示されて行きます。

あまり動きがないですが、息を吹きかけると湿度が上がることを確認できます。


温度・湿度が〜以上の時、な条件分岐

閾値を決めて条件分岐してみましょう。


プログラム

下記は「湿度が70%を超えた時」のサンプルです。冒頭のthreshold = 70の数字部分を任意の値に置き換えてください。

#include "DHT.h"

#incude "Nefry.h"

#define DHTPIN A0
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
const int threshold = 70;

void setup() {
dht.begin();
Nefry.println("温度・湿度をチェック");
}

void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();

if (isnan(h) || isnan(t)) {
Nefry.println("読み取りに失敗しました");
return;
}

Nefry.println("湿度: " + h + " %\t");
Nefry.print("温度: " + t + " *C");

if (h > threshold) {
Nefry.println("すごっく湿度が高いよ!");
}

delay(2000);
}


確認

湿度が70%以上になるとアラートメッセージが出ます。


その他

「アラートメッセージをメールやLINEに通知したい!」などという時はLINE NotifyIFTTTを使った連携が便利です。

サービス側の設定をすればLineNotify.send()IFTTT.send()といった関数でサクッと試せますので、ぜひご参照ください。