Raspberry Pi のI2Cで秋月の温度センサー&大気圧センサーを使ってみる。(AE-LPS331)

2016年9月21日

LPS25H使用 気圧センサーモジュールDIP化キット

AE-LPS331

組み込みCか、(Visual Stuido C++かじった程度)な人なので、PHPが一番わかりやすいわけです。

この「function signed16hexdec($hex)」ですが、符号付きに変換する関数なので、案外使いまわしできると思います。

 

AE-LPS331.php

<?php

function signed16hexdec($hex)
{
	$dec = hexdec($hex);
	if( $dec & 0x8000 ) {
		$dec = (~($dec -1) & 0xFFFF) * -1;
	}
	return $dec;
}

exec('i2cset -y 1 0x5c 0x20 0x90 b');	// boot & transmit 1s
function AELPS331_presser()
{
	$num1 = hexdec(exec('i2cget -y 1 0x5c 0x2A b'));
	$num2 = hexdec(exec('i2cget -y 1 0x5c 0x29 b'));
	$num3 = hexdec(exec('i2cget -y 1 0x5c 0x28 b'));
	$num4 = (($num1 << 16) + ($num2 << 8) + $num3) / 4096.0;
	return $num4;
}

function AELPS331_temp()
{
	$str2 = exec('i2cget -y 1 0x5c 0x2C b');
	$str1 = exec('i2cget -y 1 0x5c 0x2B b');
	$str3 = str_replace('0x', '', $str2 . $str1);
	$num1 = signed16hexdec($str3);
	$num2 = 42.5 + ($num1 / 480.0);
	return $num2;
}

while(1) {
	sleep(1);
	$num = AELPS331_presser();
	echo sprintf("%6.1f hPa\n", $num);
	$num = AELPS331_temp();
	echo sprintf("%6.1f c\n", $num);
}

?>

えーと、2つのファイルに分かれているのを適当につなげて書いたので、このまま動くか検証していません。

sudo php AE-LPS331.php

コマンドラインに圧力と温度が表示され続けます。

Raspberry Pi 2

Posted by saba