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をもっているので、信号線を同じポートにまとめてつないでいても、プログラムで判別できます。
●実行結果
三つのデバイスを見つけてきて、温度を表示しました。