Raspberry Pi3 Model B  1-wire接続のデジタル温度センサー DS18B20を動かす(覚書

OSOYOOのサイトで
「Raspberry Piで温度センサーを作動する」に詳しく書いてあるのですが、 Raspberry Pi2 での説明であることと、初心者のため、エディタの使い方などでちょっと戸惑って大変だったので、覚書として残しました。
Raspberry Pi3 Model B では、もっと簡単にできました。

動かし方

  1. まずはつなげる。

    上記のように「-」と書いてある側から、GND、5V、GPIO4につなげます。
    Raspberry PiのGPIOポートにDS18B20の3つのPINをつなげるだけではなく、5KΩ~10KΩの抵抗を5VとGPIO4ピンにつなぐ間に入れます。
    ここで、必ずGPIO4を使うこと。固定です。

     

  2. 次に1-Wire通信モジュールのインストール。
    ターミナル(LXTerminal)で以下の2行を順番に入力。

    sudo modprobe w1-gpio
    sudo modprobe w1_therm

     

     

  3. 1-Wireモジュールの有効化
    raspberry piの設定で「インターフェイス」の 1-Wire を有効にして「OK」をして、再起動。

    OSOYOOのサイトに書かれている config.txt ファイルの修正は新バージョンでは必要ないと思います。
    もしかすると 2.のモジュールもインストールされていたかもしれませんが、実行してしまったのでわかりません・・・。実際に試してみました、2は不要です。

     

  4. ターミナル(LXTerminal)で
     
    ls -l /sys/bus/w1/devices/

    と入力すると /sys/bus/w1/devices/ フォルダの中のフォルダやファイルが表示されます。
    ここに表示される「28-xxxx」フォルダ名を使用して

    cat /sys/bus/w1/devices/【28-xxxx】/w1_slave

    と入力。
    表示される2行目の「t=xxxx」の部分が温度の1000倍とのことです。
    1000で割ると現在の温度が確認できるとか。(この場合25.437℃)

     

  5. ここまでできちんとできていることを確認したら、
    osoyooでサンプルコードを提供してくれているので、動かしてみるといいです。
    上記のcatコマンドでは、w1_slaveファイル内をそのまま表示させているだけらしく
    このサンプルコードも w1_slave ファイルをオープンし、読みだして、「t=xxxx」の数字部分を数値として変換して、1000で割って、画面に表示させています。
     
  6. 追記:
    今回は /boot/config.txt ファイルを編集せずに行ったのですが、このファイルに以下のように入力して使う、という方法が書かれていました。
    dtoverlay=w1-gpio-pullup,gpiopin=4
    これを使えば、1.で抵抗を使わなければいいのではないかと思います。

    追記

    今回、Raspberry Piで学ぶ電子工作を読みながら、初めてラズベリーパイを使いました。
    一緒に購入したキットがRaspberry Piで学ぶ電子工作 専用 実験キットというもので、本書に出ているものと違うものが少しあったのが原因で、初心者としては対応するのに苦労しました。

    覚書の覚書

    エディタ

    プログラムを記述するためのエディタの一つであるViエディタは、ターミナルで「vi ファイル名」とすることで使うことができます。
    これにはコマンドモードと入力モードがあり
    何もしなければコマンドモードで、コマンドを入力することで1行削除したり、ファイルを保存したりでき、例えば「i」を入力すると、文字を追加できる入力モードになります。
    この状態でEscキーを押すと入力モードがコマンドモードに変わります。
    詳しくはviエディタの使い方にコマンドがわかりやすく書かれています!

    Linux コマンド

    ターミナルで使ったCATやLSなどのコマンド、意味が知りたいときには
    IT Pro の Linuxコマンド集を使わせていただきました。