どうも、瀬古です。
今回は、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
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に新規登録すると、もれなく2,599円分のクーポンがもらえます。
AliExpressに参加する
コメント