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


こんにちは、ちゃんとくです。この記事は[Nefry Advent Calendar 2018](https://qiita.com/advent-calendar/2018/nefry) 3日目の記事です。

## Nefry BTって？

[![Image from Gyazo](https://i.gyazo.com/7a03cd802d043a75ac63bcfd1e6820f9.png)](https://gyazo.com/7a03cd802d043a75ac63bcfd1e6820f9)

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

[Grove](https://dotstud.io/docs/grove/)という刺すだけで配線できるモジュール対応のコネクタを搭載していて、ハードウェアをあまり意識せずに開発できます。

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

- [Arduino IDEをPCにインストール](https://dotstud.io/docs/arduinoide-setup/)
- [Nefry BTの環境構築（Arduino IDE）](https://dotstud.io/docs/nefrybt-setup-arduino-ide/)
- [Wi-Fi情報を設定](https://dotstud.io/docs/nefrybt-setup-wifi/)

## Groveって？
![Image from Gyazo](https://i.gyazo.com/c8398ee929c599bf002de21b82bd234a.png)
中国の[Seeed Studio](https://www.seeedstudio.io/?gclid=EAIaIQobChMIgK602I6p3wIVTKSWCh3ruQDCEAAYASAAEgLhtPD_BwE)社が開発・販売している**刺すだけで配線できるモジュール**です。電源、信号線がソケットにまとめられており、回路の知識があまりなくても配線を行えます。

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

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

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

## 温度・湿度を取得する

[![Image from Gyazo](https://i.gyazo.com/056da13768b8d0a8f1124448b1abe970.jpg)](https://gyazo.com/056da13768b8d0a8f1124448b1abe970)

温度・湿度を取得できる温湿度センサです。20〜90%範囲の湿度、0〜50℃の温度測定ができます。（[公式Wiki](http://wiki.seeedstudio.com/Grove-TemperatureAndHumidity_Sensor/)）

以前にも[Nefry BTでほぼノンプログラムな湿度管理したい](https://qiita.com/tokutoku393/items/d4c91a28485bf568828c)で書いたのですが、エラーとか辿らずサクッとやる方法まとめです。

### 配線
![connect.jpg](https://qiita-image-store.s3.amazonaws.com/0/119003/fce89209-45b2-a0d8-a96c-ae1188e8ebc6.jpeg "connect.jpg")

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

### 温湿度センサを扱うライブラリを追加
![download.png](https://qiita-image-store.s3.amazonaws.com/0/119003/07414049-5ca9-cc36-75a6-11c35a95c884.png "download.png")
下記リンク先のページで「Clone or Download」から「Download ZIP」を選択します（2つのページから両方ダウンロードしてください）。

- https://github.com/adafruit/DHT-sensor-library
- https://github.com/adafruit/Adafruit_Sensor

![library.png](https://qiita-image-store.s3.amazonaws.com/0/119003/dfc508e1-b76d-88fa-1205-6bb35d49ada3.png "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](https://qiita-image-store.s3.amazonaws.com/0/119003/02444b64-a748-8676-7450-9df8336c9eb2.png "serial_monitor.png")

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

※シリアルポート接続（PCにUSB接続）できない人 → [Nefryポータル](https://dotstud.io/docs/nefrybt-basic-portal/)の「Web Console」を見ましょう

![bps.png](https://qiita-image-store.s3.amazonaws.com/0/119003/3b9aee15-195b-4115-ad0a-19b28471ad65.png "bps.png")
Nefry BTのデフォルトは115200bpsになっています。右下のbps設定を「115200bps」に変更します。

![Image from Gyazo](https://i.gyazo.com/b7b4c126b1c4be96af085f86d4630357.gif)
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);
}
```

### 確認

![](https://qiita-image-store.s3.amazonaws.com/0/119003/594f7453-8a65-12ee-681f-e8b1cc5cd9f1.gif)

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

## その他
「アラートメッセージをメールやLINEに通知したい！」などという時は[**LINE Notify**](https://notify-bot.line.me/ja/)や[**IFTTT**](https://ifttt.com/)を使った連携が便利です。

- [Nefry BTとLINE Notifyをサクッと連携](https://qiita.com/tokutoku393/items/1b8d6204915505ebb044)
- [Nefry BTとIFTTTをサクッと連携](https://qiita.com/tokutoku393/items/0235a9624aa6a29b2d55)

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