ページ

2014年8月30日土曜日

RaspberryPiと戯れてみる 10 - 温度測定 -

以前Arduinoでやった温度測定をRaspberry pi でやって外から温度を見れるようにする。

まずはRaspberry Pi がI2C接続できるようにする。
以下サイトを参考に設定
http://www.gvc-on.net/?p=288

pi@raspberrypi ~ $ sudo diff /etc/modules /etc/modules.org 
8d7
< i2c-dev
pi@raspberrypi ~ $ sudo diff /etc/modprobe.d/raspi-blacklist.conf /etc/modprobe.d/raspi-blacklist.conf.org 
4c4
< #blacklist i2c-bcm2708
---
> blacklist i2c-bcm2708

再起動。

ちゃんとI2Cデバイスモジュールが読み込まれているか確認。
pi@raspberrypi ~ $ dmesg | grep i2c
[    4.899135] bcm2708_i2c_init_pinmode(0,0)
[    4.906241] bcm2708_i2c_init_pinmode(0,1)
[    5.086692] bcm2708_i2c bcm2708_i2c.0: BSC0 Controller at 0x20205000 (irq 79) (baudrate 100000)
[    5.277198] bcm2708_i2c_init_pinmode(1,2)
[    5.368575] bcm2708_i2c_init_pinmode(1,3)
[    5.374680] bcm2708_i2c bcm2708_i2c.1: BSC1 Controller at 0x20804000 (irq 79) (baudrate 100000)
[   11.249426] i2c /dev entries driver

I2C用ツールをインストール。
pi@raspberrypi ~ $ sudo apt-get install i2c-tools
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libnet-daemon-perl libplrpc-perl
これを削除するには 'apt-get autoremove' を利用してください。
提案パッケージ:
  libi2c-dev python-smbus
以下のパッケージが新たにインストールされます:
  i2c-tools
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
59.5 kB のアーカイブを取得する必要があります。
この操作後に追加で 223 kB のディスク容量が消費されます。
取得:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main i2c-tools armhf 3.1.0-2 [59.5 kB]
59.5 kB を 1秒 で取得しました (47.1 kB/s)
以前に未選択のパッケージ i2c-tools を選択しています。
(データベースを読み込んでいます ... 現在 71037 個のファイルとディレクトリがインストールされています。)
(.../i2c-tools_3.1.0-2_armhf.deb から) i2c-tools を展開しています...
man-db のトリガを処理しています ...
i2c-tools (3.1.0-2) を設定しています ...

配線。


















Raspberry Piのピン配置
http://elinux.org/RPi_Low-level_peripherals

pi@raspberrypi ~ $ sudo i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --  

bcのインストール
pi@raspberrypi ~ $ sudo apt-get install bc
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libnet-daemon-perl libplrpc-perl
これを削除するには 'apt-get autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
  bc
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
106 kB のアーカイブを取得する必要があります。
この操作後に追加で 257 kB のディスク容量が消費されます。
取得:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main bc armhf 1.06.95-2 [106 kB]
106 kB を 1秒 で取得しました (79.4 kB/s)
以前に未選択のパッケージ bc を選択しています。
(データベースを読み込んでいます ... 現在 71054 個のファイルとディレクトリがインストールされています。)
(.../bc_1.06.95-2_armhf.deb から) bc を展開しています...
menu のトリガを処理しています ...
install-info のトリガを処理しています ...
man-db のトリガを処理しています ...
bc (1.06.95-2) を設定しています ...
menu のトリガを処理しています ...

シェルスクリプト作成
#!/bin/bash

hexraw=$(sudo i2cget -y 1 0x48 0x00 w)
while [ "$hexraw" == "" ]; do
    hexraw=$(sudo i2cget -y 1 0x48 0x00 w)
done

msb=$(echo ${hexraw:4:2})
lsb=$(echo ${hexraw:2:1})
dec=$(printf "%d\n" "0x$msb$lsb")

echo "scale=4; $dec*0.0625" | bc
~                                                                                         
~                                                                                         
~         


無事温度測定できました^^
pi@raspberrypi ~ $ ./tmp102.sh 
29.1250
pi@raspberrypi ~ $ ./tmp102.sh 
31.5000
pi@raspberrypi ~ $ ./tmp102.sh 
31.6875
pi@raspberrypi ~ $ ./tmp102.sh 
31.8125
pi@raspberrypi ~ $ ./tmp102.sh 
31.8750
pi@raspberrypi ~ $ ./tmp102.sh 
31.9375
pi@raspberrypi ~ $ ./tmp102.sh 
31.9375
pi@raspberrypi ~ $ ./tmp102.sh 
32.0000
pi@raspberrypi ~ $ ./tmp102.sh 
32.0625
pi@raspberrypi ~ $ ./tmp102.sh 
30.5000
pi@raspberrypi ~ $ ./tmp102.sh 
30.3750
pi@raspberrypi ~ $ ./tmp102.sh 
30.3750
pi@raspberrypi ~ $ ./tmp102.sh 
30.3125
pi@raspberrypi ~ $ ./tmp102.sh 
30.3125
pi@raspberrypi ~ $ ./tmp102.sh 
30.2500
pi@raspberrypi ~ $ ./tmp102.sh 
30.2500
pi@raspberrypi ~ $ ./tmp102.sh 
30.1875
pi@raspberrypi ~ $ ./tmp102.sh 
30.1875
pi@raspberrypi ~ $ ./tmp102.sh 
30.1875

次はVPN接続して外からブラウザ上で温度が見れるようにする。

0 件のコメント:

コメントを投稿