Arduino(ESP-WROOM-02)で温度センサーDS18B20を制御する

ハウス内の温度を測定して、結果をスマートフォンで見られるようにしようと思います。
IoT(Internet of things)ってやつです。
今回はまず温度を測定するまでの記録です。

ほ場やハウス内の任意の場所で温度を測りたい場合、そこまでコンセントやUSB電源を引っ張るのは邪魔で非現実的です。
乾電池で駆動して、測定値も無線で飛ばすことができれば、ケーブルレス化が可能です。

それを実現しようとして今回チョイスしたのはArduino。
Arduinoは消費電力が少なく、乾電池駆動も可能(と思う。まだ試してない)なマイコンです。Wi-Fi機能が付いた基板もあります。

温度センサーにはDS18B20をチョイス。
これは防水タイプのものもあるので、気温をはじめ、土中温度や水温なども測ることができます。
信号は1-wireと呼ばれるものであまりメジャーじゃない気がしますが、読み込みはドライバーに任せるので無問題。

用意した部品がこちら。

ESP-WROOM-02は、Arduino互換のマイコンで、Wi-Fiチップを載せているため無線通信が可能です。
今回使用したモノは、USBで電源供給ができたり、リセットスイッチが付いている
『 ESP-WROOM-02開発ボード』です。

パソコン側に開発環境を準備する必要がありますが、この辺はQiitaにすごく詳しく書かれているので、そちらを参照ください。
技適済み格安高性能Wi-FiモジュールESP8266をArduinoIDEを使ってIoT開発する為の環境準備を10分でやる方法
https://qiita.com/azusa9/items/264165005aefaa3e8d7d
Arduino+DS18B20で温度測定してみた
https://qiita.com/hnw/items/315fad0d4b60ada10d00

というか、以下は↑この2つめの記事を参考に実施したので、内容はかなり近いです (^^;)ゞ

さて。これらの環境が揃ってしまえば、温度を測ること自体は簡単です。

回路図はこちら。
初めてFritzingを使ってみました。

結線イメージはこんな感じ。
(DS18B20が非防水タイプの絵なのでトランジスターっぽいです)

実際にはこんな感じです。

Arduinoに書き込んだプログラムがこちら。

#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SimpleTimer.h>
 
#define ONE_WIRE_BUS 14  //温度センサーをESP-WROOM-02の14番ピンに接続
 
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

SimpleTimer timer;

void setup()
{
	Serial.begin(9600);
	sensors.begin();

	timer.setInterval(5000L, sendTemps); // 5秒ごとにsendTemps()を呼ぶ
}

void sendTemps()
{
	sensors.requestTemperatures(); // 温度取得

	float temp = sensors.getTempCByIndex(0); // 温度センサーから摂氏気温を取得
	Serial.println(temp);
}

void loop()
{
	timer.run();
}

プログラムを書き込む際は、ESP-WROOM-02基板上のRSTスイッチとPGMスイッチを同時に押して、RST→PGMの順に離します。
この手順を行ってから、Arduino IDEで[スケッチ]-[マイコンボードに書き込む]を実施します。

Arduino IDEから[ツール]-[シリアルモニタ]を選択して、シリアル通信の内容を表示します。
このように測定値が5秒ごとに表示されたら成功です。

まだPC上で測定値を見られるだけです。
次は測定値をWi-Fi経由でインターネットに飛ばしたいと思います。

1件のコメント

ただいまコメントは受け付けていません。