Raspberry PiのGPIOはデジタルなのでArduinoで使っていたTMP36やLM35DZなどのアナログセンサを使う場合はADコンバータが必要になります。今回は1-Wireデジタル温度センサのDS18B20を使ってみます。
ブレッドボード配線
DS18B20を搭載したセンサモジュールはaitendoから1820-3PLを395円で購入しました。こちらは完成品のモジュールになっています。
+
(DS18B20) -> 3.3V (Raspberry Pi)S
(DS18B20) -> GPIO4 (Raspberry Pi)-
(DS18B20) -> GND (Raspberry Pi)
セットアップ
最初にパッケージを最新にしてアップグレードします。
$ sudo apt-get update |
カーネルのバージョンを確認します。
$ uname -a |
Raspberry Piで遊ぼう! 改訂第3版 最新情報お知らせページに以下のような情報がありました。
Raspbian 2015-01-31(NOOBS 1.3.12)以降では、1-wireを有効にするための設定手順が増えました。
/boot/config.txt
の書き方が変更になったようです。以下の行をファイルの最後に追記します。
dtoverlay=w1-gpio-pullup,gpiopin=4 |
再起動します。
$ sudo reboot |
w1-gpioとw1-thermのカーネルモジュールをロードします。
$ sudo modprobe w1-gpio |
使い方
カーネルモジュールをロードすると/sys/bus/w1/devices
ディレクトリが作成されます。
$ cd /sys/bus/w1/devices |
‘28-‘で始まる値は温度センサーのデバイスIDです。この値はデバイス毎に異なります。’28-‘のディレクトリに移動してw1_slave
ファイルを読みます。
$ cd 28-0314626a2cff |
1行目にYESと表示されていると温度の計測が成功しています。t=27187
の数字を1000分の1をすると摂氏になります。摂氏27.187度と摂氏27.250度が計測できました。