reccoo’s memo

ほぼ自分用のメモ

Raspberry Pi Zero WHで温度センサーDS18B20を使う

手軽に使える温度センサーDS18B20を買ってみましたので
Raspberry Pi Zero WHにつないで温度を計測してみたいと思います。

使用するものは 1-WirePythonW1ThermSensor だけで手軽に取得します。



1-Wire を有効にします。


まず 1-Wire を使えるようにします。

設定の追加

/boot/config.txt に以下の記述を追加します。

dtoverlay=w1-gpio-pullup,gpiopin=4



カーネルにモジュールの追加

カーネルw1-gpiow1-thermを追加します。

$ sudo modprobe w1-gpio
$ sudo modprobe w1-therm

一旦再起動します。

$ sudo reboot



有効になっているか確認します。

$ lsmod | grep w1

以下の2つがあれば有効になっています。

w1_gpio
w1_therm



温度センサーDS18B20を繋ぐ。


以下のように適当に繋いでみます。
f:id:reccoo:20181126222019j:plain:w300


正しくつながっているとRaspberry Pi側で検知され以下のようなフォルダが作られます。

/sys/bus/w1/devices/28-0000********

Pythonを使って取得する。


W1ThermSensor をインストールする。
$ git clone https://github.com/timofurrer/w1thermsensor.git
$ cd w1thermsensor
$ sudo python setup.py install



コード

sensor.py

# -*- coding: utf-8 -*-
from w1thermsensor import W1ThermSensor

sensor = W1ThermSensor()
celsius = sensor.get_temperature()
print("ただいまの温度は {0:.2f}℃です。".format(celsius))

実行結果

$ python sensor.py
ただいまの温度は 21.62℃です。




これを前回入れた音声読み上げにパイプで渡せば読み上げもしてくれます。