NefryでGrove温湿度センサーをAdafruitライブラリから使う

# 概要
NefryでGrouve温湿度センサー（Temperature&Humidity Sensor）を使うときのメモです。
# 環境
- Windows 10 Pro 64bit Build 1607
- [Arduino IDE 1.8.1](https://www.arduino.cc/en/main/software)
- [Nefry V2.0](https://dotstud.io/shop/nefry-connect-internet/)

# 環境構築
## Arduino IDEにライブラリを追加

Adafruitのライブラリを利用します。GitHubから次の2つのライブラリをダウンロードし、Arduino IDEに追加します。

- Adafruit Unified Sensor Driver（[Adafruit_Sensor-master.zip](https://github.com/adafruit/Adafruit_Sensor)）
- Adafruit DHT Humidity & Temperature Unified Sensor Library（[DHT-sensor-library-master.zip](https://github.com/adafruit/DHT-sensor-library)）

## コーディング
今回は、スケッチ例の［DHT sensor library］→［DHTtester］を利用します。

まずは元コード（コメントは適宜削除）

```c

#include "DHT.h"
#define DHTPIN 2     // what digital pin we're connected to

//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");

  dht.begin();
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);

  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}
```

これをNefry用に書き換えます。

```c
#include <Nefry.h> // Nefryのライブラリをインクルード

#include "DHT.h"
#define DHTPIN D4     // 値をD4に変更（接続するピンに応じて変更）

#define DHTTYPE DHT11   // DHT 11に変更

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  //Serial.begin(9600); 削除
  Nefry.println("DHTxx test!"); // SerialをNefryへ変更
  dht.begin();
}

void loop() {
  Nefry.ndelay(2000); // Serial.delayをNefry.ndelayへ変更

  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);

  if (isnan(h) || isnan(t) || isnan(f)) {
    Nefry.println("Failed to read from DHT sensor!"); // SerialをNefryへ変更
    return;
  }

  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  Nefry.print("Humidity: ");    // SerialをNefryへ変更
  Nefry.print(h);               // SerialをNefryへ変更
  Nefry.print(" %\t");          // SerialをNefryへ変更
  Nefry.print("Temperature: "); // SerialをNefryへ変更
  Nefry.print(t);               // SerialをNefryへ変更
  Nefry.print(" *C ");          // SerialをNefryへ変更
  Nefry.print(f);               // SerialをNefryへ変更
  Nefry.print(" *F\t");         // SerialをNefryへ変更
  Nefry.print("Heat index: ");  // SerialをNefryへ変更
  Nefry.print(hic);             // SerialをNefryへ変更
  Nefry.print(" *C ");          // SerialをNefryへ変更
  Nefry.print(hif);             // SerialをNefryへ変更
  Nefry.println(" *F");         // SerialをNefryへ変更
}
```

## 実行の様子
接続はこんな感じ(^o^)
![DHT11.JPG](https://qiita-image-store.s3.amazonaws.com/0/120703/100686b6-3566-1856-ae98-1ee637b07914.jpeg)

Nefryに書き込んだ後にNefry Consoleに接続すると図のように表示されます。

![nefry_console.png](https://qiita-image-store.s3.amazonaws.com/0/120703/b28f7122-032e-b3bd-3f47-77b7861f848e.png)

# 留意点
- Nefryへの接続は、NefryのWi-fiに接続した方がいい。他のアクセスポイント経由だと、タイムアウトする場合が多い。
- Seed Studioのライブラリ（[Seeed-Studio/Grove_Temperature_And_Humidity_Sensor](https://github.com/Seeed-Studio/Grove_Temperature_And_Humidity_Sensor)）も試したが、ハードウェアが対応していないとコンパイルエラーに。。。

# 参考文献
[ArduinoでDHT11デジタル温度センサーをAdafruitライブラリから使う](http://qiita.com/masato/items/99e5dac91d13650e90a2)
[NefryでGrove温湿度センサー(DHT11)を使うメモ](http://qiita.com/n0bisuke/items/f94dbf0bce629c08fa0b)