【iot農業・温度】スマホで温度センサーの値を表示させてみた
DS18B20温度センサーは固有のシリアル番号が付与されているのでGPIOが同じでも読み取りができます。
ということは1本の信号線で多くの温度計測が出来ますね。
この温度センサーをesp32やarduinoで自作した備忘録です。
温度センサー (DS18B20)
DS18B20デジタル温度計は、9ビットから12ビットの摂氏温度測定を提供し、中央のマイクロプロセッサとの通信に定義上1本のデータライン(およびグランド)のみを必要とする1-Wireバスを介して通信します。
ds18b20データシートよりgoogle翻訳
ds18b20の電圧,動作範囲,精度です。
動作温度範囲:-55ºC〜+125ºC
精度+/- 0.5ºC (-10~80°C)
精度は低温や高温になるとやや劣ってくる(+/- 1°C)ようです。
配線図
配線は2つの方法があると記されています。
ここでは判りやすい赤枠で囲った方法を採用しました。
回路
温度センサー(ds18b20)とarduino(esp32)との回路です。ここではesp32のGPIO 32に接続しています。
黒 GND
黄(信号) GPIO 32と4.7KΩ抵抗(VCCへ)
arduino IDE
arduinoやesp32への書き込みにはarduinoIDEを使います。
arduinoIDEをパソコンにインストールする方法やesp32をarduino IDEで使えるようにする手順はこちらです。
ライブラリのインストール
温度センサー ds18b20 をarduinoやesp32で動作させるのに必要なライブラリは次の2つです。
2 Arduino-Temperature-Control ライブラリ
One Wireライブラリはここから、Arduino-Temperature-Control-Libraryはここからダウンロード出来ます。
zipファイルをデスクトップにダウンロードしたらスケッチ→ライブラリをインクルード→ZIP形式のライブラリをインストールと進み先程ダウンロードしたzipファイルをそれぞれ選択して「開く」をクリックしてインストールします。
arduino IDEのメッセージボードに「ライブラリが追加されました」と出ればOKです。
インストールの確認はスケッチ→ライブラリをインクルード→ライブラリの管理と進みDallasと入力しMiles Burtonと表示されINSTALLEDとなっていればOKです。
同様にonewireと入力しby Jim Studt…INSTALLEDとなっていればOKです。
温度センサースケッチ
(詳しい使い方やスケッチはArduino-Temperature-Control-Library-masterのサンプルファイルに収められています。)
ここでは摂氏温度を表示させてみます。
華氏表示は sensors.getTempFByIndexを使います。
[php]
#include <OneWire.h>
#include <DallasTemperature.h>
const int GPIOPIN = 32;
OneWire oneWire(GPIOPIN);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(115200);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float Condo = sensors.getTempCByIndex(0); //センサーindexは0から開始
Serial.print("温度");
Serial.print(Condo); //摂氏表示
Serial.println("ºC");
delay(1000);
}
[/php]
スマホで温度表示
この温度センサーで計測した温度をスマホで見れるようにするにはフランスのIOT企業 cayenne社のプラットフォームを利用します。
カイエン社はビジネス向けの高度なiotプラットフォームを開発しAWS アマゾンクラウドも参加、マイクロソフトやアリババとも提携する一方で個人は無料で高度なプラットフォームを利用することが出来ます。
アカウント開設や設定方法などはこちらに詳しくまとめてみました。
複数の温度センサーを計測する方法はこちらです。
温度センサー (DS18B20) まとめ
温度センサーにはアナログ出力のNTC サーミスタもありますがesp32では温度のブレが大きいのでDS18B20 温度センサーに変えてみたところ結果が良かったので共有したいと思います。
ds18b20 温度センサーにはシリアル番号が付与されているので温度センサーを特定出来るのがいいですね。