見出し画像

【GASでIoT】GASとラズパイでおこなう、お手軽データ・ロギング&フィードバック制御〔解説編2〕~1-wire仕様の温度センサ DS18B20の接続~

この記事のシリーズでは、Googole Apps Script(GAS)を利用して、日常生活を便利にする事をテーマにしています。

GASへのアクセスは、通常はキーボードから文字情報で行いますが、「Raspberry Pi(ラズベリーパイ)」というシングルボードコンピュータを介することで、文字以外の情報をインプットする事ができます。

今回インプットする情報は「温度」で、この情報を利用して電気なべの温度をコントロールしよう、というのがテーマです。

全体の概要は、先回の記事を参照ください。


さて、今回の記事は、温度センサの接続についてです。


1-wire仕様の温度センサの接続は簡単


1-wire仕様の温度センサの接続は簡単です。

センサからは、3本の導線が出ていて、大抵は以下の色で役割を示しています。

赤色・・・電源線
黄色・・・信号線
黒色・・・アース線

これを、ラズベリーパイZEROに、以下の様に配線します。



赤色・・・3Vか5V
黄色・・・GPIO4
黒色・・・Ground

信号線~電源線の間に、高めの抵抗器(4.7kΩなど)をつなぎます。

導線の色は、メーカーによっては必ずしも上記とは限りません。中心となるICはマキシム社のものですが、それをケースに入れた製品は中国製など様々なメーカー製品があるため、その色分けも様々です。

配線部分を拡大します。

若干補足をします。

電源線

センサのマニュアルでは3Vから5.5Vまで許容の様です。上記では3Vピンに配線していますが、5Vピンでも特に問題なく動きました。

信号線

デフォルトではGPIO4ピンに接続します。他のピンでは認識されません。

抵抗

マニュアルでは4.7kΩですがこれも、ある程度の巾は許容される様です。

この抵抗の役目は、信号線を電源またはアースにつないで、信号線の電位を安定させることです。

ただし直結すると大電流が流れるので、それを防止する目的で高めの抵抗を挟んでいる訳です。

アナログな電圧で出力する一般的なセンサでは、この抵抗値そのものも、重要な意味を持つことが多いのですが、このセンサでは、抵抗は単に電気的に信号線と電源線を連結させて電位を安定にするのが目的であり、多少の差異は問題になりません。

なお、電気的に信号線をどこかに結合する場合に使う抵抗の内、電源側に結合させる抵抗は「プルアップ抵抗」、アース側に結合させる抵抗は「プルダウン抵抗」と呼ばれます。
ここでの抵抗の使い方は「プルアップ抵抗」です。

温度センサ DS18B20の仕組みについて

少し脇道に逸れますが、このDS18B20は、センサにしては珍しく、プルアップ抵抗値や電源電圧をあまり厳密に管理しなくて良い理由を記しておきます。

この部品のマニュアルを見てみましょう。

・DS18B20のもう一つの特徴は、外部電源なしで動く能力です。
・電源の代りに、バスが [Hi] の時に、DQピンを経由した1-Wireプルアップ抵抗器を通して電力が供給されます。
・また [Hi] のバス信号は、内蔵コンデンサ(CPP)を充電します。 そしてバスが [Low] の時に、そこからデバイスにパワーを供給します。
・1-Wireバスから電源を得るこの方法は、「パラサイト・パワー」と呼ばれます。

あまり専門的な所まで理解できた訳ではありませんが、このセンサは、コンデンサ(充電池の一種)が内蔵されており、適時これを充放電することで測定のための電力としている様です。

充電時(Cppとある部分で蓄電)
測定時に電源として放電

つまり、測定の肝心な部分では、厳密に管理された内蔵のコンデンサを利用するので、外部の状況はアバウトでも良いという事だと理解しています。

ユーザにとっては有難い仕様です。

早速つないでみよう


配線は単純ですので、早速センサをつないでみます。

半田づけしなくても、ブレッドボード(穴あき板)に導線を挿す方法で、手軽に配線できます。

センサの導線をジャンパー線の先端に巻いて押し込む

多少工夫が必要なのが、センサの導線が非常に柔らかく、ブレッドボードに挿せないことです。

そんな時は、ジャンパー線(オス)の先端にセンサの導線を巻いて、ジャンパー線もろともブレッドボードに挿せば、とりあえず配線できます。

配線した状態でラズベリーパイを再起動する


配線が済んだところで、ラズベリーパイを再起動します。

起動が済んだら、/sys/bus/w1/devices/ のパスの中を覗きます。

28で始まるサブフォルダがあるはずです。

その中を覗くと、w1_slave というファイルがある筈です。

これをエディタで開いてみまると、以下の様な中身が見えるはずです。

その中にある、t=・・・・ の部分(下図囲み部)こそが、温度の測定結果です。(正確には1000で割った値になります)


読み取った温度を知りたい場合は、上記ファイルを開いて「t=・・・」となっている部分を読み出し、1000で割ると簡単に求められます。

注意点

このファイルについて2点注意点です。

1つ目ですが、ファイルのデータは最後に測定した結果で常に上書きされますので、過去の記録は残りません。経時変化を知りたい場合は、都度データを読み出して別な場所に記録する様にしましょう。

2つ目は、温度センサ DS18B20 を配線しないで再びラズベリーパイを起動すると、上記のフォルダやファイルは消えてしまう事です。

消えてしまったら配線して再び起動すれば、またフォルダが復活します。

ここで一旦記事を切ります。

次回は、ラズベリーパイから温度データを読み取り、ネットを介して送信するまでをご説明します。


いいなと思ったら応援しよう!