で購入した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でググるとプルアップ抵抗を繋いでいる記事が多いが、内蔵プルアップ抵抗を有効にするのでは駄目なのだろうか?電子工作の知識が足りていないのでよくわからない。