こんにちは、ちゃんとくです。この記事はNefry Advent Calendar 2018 3日目の記事です。
Nefry BTって?
Nefry BTは「ESP-WROOM-32」というWi-Fi・BLE通信モジュールを搭載した、Arduinoと同じように開発できるマイコンボードです。
Groveという刺すだけで配線できるモジュール対応のコネクタを搭載していて、ハードウェアをあまり意識せずに開発できます。
この記事は下記のNefry BT環境構築・初期設定が済んでいる前提で進めます。
Groveって?
中国のSeeed Studio社が開発・販売している刺すだけで配線できるモジュールです。電源、信号線がソケットにまとめられており、回路の知識があまりなくても配線を行えます。
温湿度センサ、照度センサ、磁気スイッチ、サーボモータなど基本のモジュールは大体網羅しており、現在は100種類以上あるようです。(中の人に聞いたところ「数を把握しきれていない」とのことでした…!)
Nefry BTでGroveモジュールを使った作例はたくさんあるのですが、意外と情報がまとまっていないのでこの機会に1日ずつサクッとまとめてみることにします。
何日やれるかは未定です。期待せずお待ちください。
温度・湿度を取得する
温度・湿度を取得できる温湿度センサです。20〜90%範囲の湿度、0〜50℃の温度測定ができます。(公式Wiki)
以前にもNefry BTでほぼノンプログラムな湿度管理したいで書いたのですが、エラーとか辿らずサクッとやる方法まとめです。
配線
温湿度センサは「A0」というソケットに差し込みます。少し硬いですが、カチッと言うまで押し込めます。配線作業は常に電源オフの状態で行います。
温湿度センサを扱うライブラリを追加
下記リンク先のページで「Clone or Download」から「Download ZIP」を選択します(2つのページから両方ダウンロードしてください)。
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);
}
シリアルモニタで確認
メニューの**ツール>シリアルモニタ
** を選択して開きます。
※シリアルポート接続(PCにUSB接続)できない人 → Nefryポータルの「Web Console」を見ましょう
Nefry BTのデフォルトは115200bpsになっています。右下のbps設定を「115200bps」に変更します。
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 NotifyやIFTTTを使った連携が便利です。
サービス側の設定をすればLineNotify.send()
、IFTTT.send()
といった関数でサクッと試せますので、ぜひご参照ください。