防水温度センサーDS18B20を使って温度計測

Linuxで遊ぶ

どうも、瀬古です。
今回は、OrangePi One上で、温度を取得できるようにしてみたいと思います。

防水温度センサーDS18B20を使って温度計測

DS18B20を使うには、シングルボードコンピューター上で、1Wire通信を有効にしなければなりません。そもそも「1Wireってなんぞや?」なんですが、要は一本の信号線だけでデータ転送を行う規格だそうです。

今回使った部品

温度センサー:DS18B20(防水タイプ)
抵抗:4.7kΩ
ブレッドボード
ジャンパーワイヤー(オスメス3本 オス3本)

Orange Pi Oneで1Wire通信を有効にする

Orange Piで1Wire通信を有効にするには、armbianEnv.txtに、下記を追加してリブートする必要があるようです。
$ sudo vi /boot/armbianEnv.txt

overlays=w1-gpio
param_w1_pin=PA10
param_w1_pin_int_pullup=1
OrangePi(H3 Soc) GPIO – pinout

1Wire通信が出来るようなったか確認します

$ sudo cat /sys/kernel/debug/gpio

gpiochip0: GPIOs 0-223, parent: platform/1c20800.pinctrl, 1c20800.pinctrl:
gpio-10 ( |onewire@0 ) out hi
gpio-15 ( |orangepi:red:status ) out lo
gpio-166 ( |cd ) in lo ACTIVE LOW
gpio-204 ( |usb0_id_det ) in hi IRQ
gpiochip1: GPIOs 352-383, parent: platform/1f02c00.pinctrl, 1f02c00.pinctrl:
gpio-354 ( |usb0-vbus ) out lo
gpio-355 ( |sw4 ) in hi IRQ ACTIVE LOW
gpio-358 ( |vdd-cpux ) out lo
gpio-362 ( |orangepi:green:pwr ) out hi

きちんと通信が出来ているようです。

DS18B20を配線する

まずは、ブレッドボードにピンを挿せるように防水温度センサーDS18B20から出ている3本の線(VDD、DQ、GND)にジャンパーワイヤーを圧着します。
VDDに3.3V又は5V、GNDにGND、DQにBCMピン番号10(物理ピン番号35)を接続します。
DS18B20のデータシートを確認すると抵抗(4.7kΩ)が必要なようです。VDDとDQ間に抵抗を挟みます。

動作確認

温度を取得できる状態にある場合は、/sys/bus/w1/devices/に28-****という名前のディレクトリが作成され、ディレクトリ内のw1_slaveに温度が格納されます。

$ ls /sys/bus/w1/devices/
28-011927a00150 w1_bus_master1

$ cat /sys/bus/w1/devices/28-011927a00150/w1_slave
cc 01 4b 46 7f ff 0c 10 76 : crc=76 YES
cc 01 4b 46 7f ff 0c 10 76 t=28750

上記では、t=28750が計測された温度で、28.750度という意味です。

きちんと温度が取得できました。




Aliexpressの紹介キャンペーン実施中!
下をクリックしてしてAliexpressに新規登録すると、もれなく2599円分のクーポンがもらえます。
AliExpressに参加する

コメント

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