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

2020年3月、「ロボット?ROBOT?!?」のブログを、この「ばぁちゃんがゆく」の「ロボット?ROBOT?!?」カテゴリーにまとめました。

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で割って、画面に表示させています。

追記:
今回は /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コマンド集を使わせていただきました。

タイトルとURLをコピーしました