Trinket M0 (2) 1-WireのDS18B20で温度測定

 Trinket M0には信号用に使えるピンが5本しかありません。複数の場所の温度を測るには工夫が必要です。ここでは1-Wireと呼ばれる最小限の信号線1本で温度が測れるDS18B20を利用します。アマゾンで入手しました。
 デバイスはトランジスタと外形が同じ3本足ですが、数mのケーブルがついた製品も一般的です。

必要なライブラリは2本

 Arduino IDE(1.8.7)のメイン・メニューのツールにあるライブラリ管理を開きます。DS18B20を検索欄に入れると二つ出てきます。2番目はCortex-Mシリーズには対応していないので、最初の「Dallas Temperature」をインストールします。こちらのライブラリは、対応しているCPUのことは書かれていません。

 もう一つ、onewireで検索して出てくるOneWireライブラリをインストールします。

 スケッチ例からDallasTemperature、Testerを読み込みます。そのまま書き込みます。

 最大262144バイトのフラッシュメモリのうち、スケッチが22544バイト(8%)を使っています、と表示が出ました。書き込み時間も短いです。

接続

 温度センサの信号線DQ(多くは黄色)の接続先は、スケッチ内で2番になっていたので、2とシルク印刷されたピンにつなぎました。複数のセンサもまとめて2番につなぎます。GND(黒色)も3.3V(赤色)の電源も全部束ねます。
 DS18B20のシリアル通信では、製品それぞれが固有のIDをもっているので、信号線を同じポートにまとめてつないでいても、プログラムで判別できます。

実行結果

 三つのデバイスを見つけてきて、温度を表示しました。

前へ

Trinket M0 (1) Arduino IDEをインストール