WeMosを使ってみる

DS18B20(1-Wire 温度センサー)


WeMosを使ってDS18B20の温度センサーから温度を読み込んでみます。
結線は以下のようになります。
1-WireなのでWeMosとの接続は1本だけです。


WeMosのスケッチは以下の通りです。
ライブラリのインストールなどは、以下のページを参考にさせていただきました。
DS18B20(1- Wire)で温度計測
D0ポート(GPIO_16)には割り込みが関連付けられていないため、割り込みを使用する機能はこのピンでは使えません。
1-Wireも割り込みを使用するので、GPIO_16では正しく動きません。
/*
 * DS18B20 Temperature sensor publish
 * http://make.bcde.jp/arduino/ds18b201-wire%E3%81%A7%E6%B8%A9%E5%BA%A6%E8%A8%88%E6%B8%AC/
 *
 * 18B20       WeMos
 * VCC   --+-- 3.3V
 *         |
 *        4.7K
 *         |
 * OUT   ----- D5(IO14)
 * GND   ----- GND
 */

#include <OneWire.h> // https://github.com/PaulStoffregen/OneWire
#include <DallasTemperature.h> // https://github.com/milesburton/Arduino-Temperature-Control-Library
 
#define ONE_WIRE_BUS 14      // データで使用するIOポート
#define SENSER_BIT    9      // 精度の設定bit
 
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
 
void setup(void) {
  Serial.begin(9600);
  sensors.setResolution(SENSER_BIT);
}
 
void loop(void) {
  sensors.requestTemperatures();              // 温度取得要求
  Serial.println(sensors.getTempCByIndex(0)); // 温度の取得&シリアル送信
}


IDEのシリアルモニターにはこんな感じで表示されます。


「高精度温度湿度計 ライフナビD203」と比較すると、まずまずの精度で取れています。


これ以外の1Wire温度センサーとしてDHT-11 DHT-22がありますが、DHT-11は分解能が1度なので、目安程度にしかなりません。
DHT-22は残念ながら持ってないです。

続く...