ESP-WROOM-02開発ボードで温度センサーDS18B20を複数使いBlynkで表示させる。(Multiple,Triple)

地温と気温等を1台のボードで測定したい場合、温度センサーを複数設置するための手順です。

DS18B20温度センサーはそれぞれに固有のシリアルコードを備えているため、同一ライン上で複数のセンサーを稼働させる事が出来ます。

今回は、2個のセンサーを設置しました。

配線

ds18b20 multiple

プログラムコード

 
#include <ESP8266WiFi.h>
  
#include <BlynkSimpleEsp8266.h>
  
#include <OneWire.h>
  
#include <DallasTemperature.h>
  
#include <TimeLib.h>
  
#include <SimpleTimer.h>
  
#define ONE_WIRE_BUS 14  //温度センサーをESP-WROOM-02の14番ピンに接続
  
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
  
char auth[] = "fromBlynkApp";  //Blynkで生成されるAuth Token
  
SimpleTimer timer;
  
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, "SSID", "password");  //無線ルーターのSSIDとパスワード
  
sensors.begin();
  
timer.setInterval(5000L, sendTemps); // Temperature sensor polling interval (5000L = 5 seconds)
}
  
void sendTemps()
{
sensors.requestTemperatures(); // Polls the sensors
  
float tempBabyRoom = sensors.getTempCByIndex(0); // 温度センサーから摂氏気温を取得
float tempBabyRoom1 = sensors.getTempCByIndex(1); // 温度センサーから摂氏気温を取得
 
Blynk.virtualWrite(4, tempBabyRoom);  //BlynkアプリでV4ピンを指定する
Blynk.virtualWrite(5, tempBabyRoom1); //BlynkアプリでV5ピンを指定する
}
  
void loop()
{
Blynk.run();
timer.run();
}
 

センサー3本接続のスケッチ例です。

 
#include <ESP8266WiFi.h>
  
#include <BlynkSimpleEsp8266.h>
  
#include <OneWire.h>
  
#include <DallasTemperature.h>
  
#include <TimeLib.h>
  
#include <SimpleTimer.h>
  
#define ONE_WIRE_BUS 14  //温度センサーをESP-WROOM-02の14番ピンに接続
  
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
  
char auth[] = "fromBlynkApp";  //Blynkで生成されるAuth Token
  
SimpleTimer timer;
  
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, "SSID", "password");  //無線ルーターのSSIDとパスワード
  
sensors.begin();
  
timer.setInterval(5000L, sendTemps); // Temperature sensor polling interval (5000L = 5 seconds)
}
  
void sendTemps()
{
sensors.requestTemperatures(); // Polls the sensors
  
float tempBabyRoom = sensors.getTempCByIndex(0); // 温度センサーから摂氏気温を取得
float tempBabyRoom1 = sensors.getTempCByIndex(1); // 温度センサーから摂氏気温を取得
float tempBabyRoom2 = sensors.getTempCByIndex(2); // 温度センサーから摂氏気温を取得
 
Blynk.virtualWrite(4, tempBabyRoom);  //BlynkアプリでV4ピンを指定する
Blynk.virtualWrite(5, tempBabyRoom1); //BlynkアプリでV5ピンを指定する
Blynk.virtualWrite(6, tempBabyRoom2); //BlynkアプリでV6ピンを指定する
}
  
void loop()
{
Blynk.run();
timer.run();
}
 

 

スマホの設定等

ESP-WROOM-02開発ボードで温度センサーDS18B20を使いBlynkで表示させる。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

この記事の著者

momo

1966年訓子府町生まれの訓子府育ち。玉葱や米、メロンを栽培する農家です。一眼レフを本格的に始めたのは2005年。仕事の時でもいつでもカメラを持ち歩く自称農場カメラマン。普段の生活を撮るのが主で、その他ストロボを使っての商品撮影、スタジオ撮影も。愛好家グループで年1回写真展を行っている。農機具の改造や作製、電子工作など、モノづくりが大好きです。

この著者の最新の記事

関連記事

コメント

    • モリミ
    • 2021年 1月 04日

    いつも参考にさせていただいてます。
    おかげさまで、温度計二つでの試作もできました。
    すごく初歩的な質問で申し訳ないですが、
    この温度計は、各々シリアルがあるとのことですが
    試しに3本つけてみました。
    この場合、3本のうち2本が同じ数値をさしました。

    電力不足?
    抵抗のを変更?
    2本より多い場合はシリアルが認識できなくなる?
    などなどもやもや考えてました。
    もし同じようなことをトライされてたりしたら教えていただければと思いコメントさせていただきました。
    御回答頂ければ幸いです。

      • toru
      • 2021年 1月 04日

      モリミさん、コメントありがとうございます。
      記事が参考になったようで良かったです。
      センサー3個以上でのトライは、残念ながら試した事がないので分かりません。
      お役に立てず申し訳ありません。

      • toru
      • 2021年 3月 14日

      モリミさん、
      センサー3本の場合、温度取得部分のスケッチを下記のように変更してみてはいかがでしょうか?
      「sensors.getTempCByIndex(n)」は個別IDを取得しなくても、0..n個の温度が読み取れるようです。

      float tempBabyRoom = sensors.getTempCByIndex(0);
      float tempBabyRoom1 = sensors.getTempCByIndex(1);
      float tempBabyRoom2 = sensors.getTempCByIndex(2);

      Blynk.virtualWrite(4, tempBabyRoom);
      Blynk.virtualWrite(5, tempBabyRoom1);
      Blynk.virtualWrite(6, tempBabyRoom2);

  1. この記事へのトラックバックはありません。

2024年3月
 123
45678910
11121314151617
18192021222324
25262728293031

カテゴリー

ページ上部へ戻る