1-Wireモジュールの確認
1-Wireの温度センサーDS18B20を接続するにためにどうすれば良いか調査しました。
まずは1-Wire用のモジュールが有効かを確認
> dmesg | grep wire
モジュールが有効にするには
modprobe w1-gipo modprobe w1-therm
PINのオーバーレイの作成
/dts-v1/; /plugin/; /{ compatible = "ti,beaglebone", "ti,beaglebone-black"; part-number = "BB-W1"; version = "00A0"; /* state the resources this cape uses */ exclusive-use = "P9.22", /* the pin header uses */ "gpio0_2"; /* the hardware IP uses */ fragment@0 { target = <&am33xx_pinmux>; __overlay__ { dallas_w1_pins: pinmux_dallas_w1_pins { pinctrl-single,pins = < 0x150 0x37 >; }; }; }; fragment@1 { target = <&ocp>; __overlay__ { onewire@0 { compatible = "w1-gpio"; pinctrl-names = "default"; pinctrl-0 = <&dallas_w1_pins>; status = "okay"; gpios = <&gpio1 2 0>; }; }; }; };
コンパイルを行います。
dtc -O dtb -o BB-1WIRE-P9-22-00A0.dtbo -b o -@ BB-1WIRE-P9-22-00A0.dts cp BB-1WIRE-P9-22-00A0.dtbo /lib/firmware/
オーバーレイの確認
cat /sys/devices/bone_capemgr.9/slots
/sys/bus/w1/devicesに28-XXXXXというディレクリが作成されています。XXXXX 部分がデバイスIDです。
温度の取得
cat /sys/bus/w1/devices/28-000004027af4/w1_slave 25 01 4b 46 7f ff 0b 10 65 : crc=65 YES 25 01 4b 46 7f ff 0b 10 65 t=18312
t=18312が温度の値です。1000で割れば摂氏の値が取得できます。
参考にしたページ
http://interactingobjects.com/ds18b20-temperature-sensor-on-a-beaglebone-black-running-ubuntu/
参考図書
新品価格 |
LinuxガジェットBeagleBone BlackでI/O: ハードウェア制御の大本命! (インターフェースSPECIAL) 新品価格 |
機器
新品価格 |