ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

Raspberry Piで温度取得

denpa-shinbun.com

で購入したDS18B20を温度センサーとして用いる。

モジュール有効化

sudo modprobe w1-gpio
sudo modprobe w1-therm

内蔵プルアップ抵抗を有効にする

ここではGPIOピン4番を用いる。

sudo emacs /boot/config.txt
dtoverlay=w1-gpio-pullup,gpiopin=4

を追記し、再起動する。

認識されているか確認する

$ ls /sys/bus/w1/devices
28-0115c11746ff  w1_bus_master1

28-hogehogeがいればOK。

値の簡易確認

$ cat /sys/bus/w1/devices/28-0115c11746ff/w1_slave
80 01 4b 46 7f ff 0c 10 67 : crc=67 YES
80 01 4b 46 7f ff 0c 10 67 t=24000

t=24000が摂氏*1000した温度である。

値の切り出し

こういったファイルから特定位置の値を切り出すには正規表現が楽である。

cat /sys/bus/w1/devices/28-0115c11746ff/w1_slave | grep -o 't=[0-9]*' | grep -o '[0-9]*'

切り出し方はあまり綺麗ではない。もっと簡単にとれそうな感じもあるが・・・。ひとまずこれで値は取得できる。

BitBucket

Boxil / ds18b20_sensor / source / — Bitbucket

ピンの接続

SがValueなのでGPIOの4番に接続する。 -はGNDに接続する。 残りの真ん中が電源で3.3Vに接続する。 間違えると、センサーが高熱になってくさい臭いがし始めるので注意。

ところで、DS18B20でググるとプルアップ抵抗を繋いでいる記事が多いが、内蔵プルアップ抵抗を有効にするのでは駄目なのだろうか?電子工作の知識が足りていないのでよくわからない。

f:id:mczh:20160718185852j:plain