androidで気圧・高度計(LPS331AP使用)

気圧高度計アプリ

Androidと大気圧センサー(LPS331AP)をイヤフォンジャックで繋いで気圧と高度、ついでに温度を表示する回路・アプリを作ってみました。

 

LPS331AP

LPS331APは、STマイクロエレクトロニクスのSPIまたはI2C接続に対応した大気圧センサーです。
主な仕様は、

  • 動作電圧:1.71V~3.6V
  • 測定範囲:260~1260hPa
  • 精度:±0.1hPa(Typ) ~ ±2hPa(Max)
  • 分解能:0.02hPa(24bit)

 LPS331APのチップ自体はHCLGA-16Lパッケージなのですが、各社から変換基板に乗ったモジュールとして発売されています。

秋月電子製

akizuki-lps331
http://akizukidenshi.com/catalog/g/gM-06581/

650円
通電確認用のLED、I2Cのプルアップ用抵抗が付いている。

 

ストロベリーリナックス製

strawberrylinux-lps331
http://strawberry-linux.com/catalog/items?code=12113

1050円
電源とI/Oの電圧を別にすることができる。

 

Pololu製

pololu-lps331
http://www.switch-science.com/products/detail.php?product_id=1289

1250円
VINが2.5~5.5Vの範囲でもそのまま使えるように設計されているようです。

 

Androidで気圧高度計
今回のブレッドボードの試作回路では、 秋月電子製のモジュールをイヤフォン・ジャック(SoundIRModemライブラリ)を使ってAndroid端末と接続しています。 

 

イヤフォン・ジャックを使った接続

この回路では、イヤフォンジャックを使って音声信号を使ってAndroid端末と通信を行います。
コントローラーとして米粒AVR(ATtiny10)を利用しています。
これらの動作についてはAndroidのライブラリとして公開しています。

soundIR Modem

 

気圧センサー・デバイスの部品リスト

部品 数量 記号 備考
ATTiny10 1 IC1 米粒AVR
LPS331AP 1 IC2 秋月電子製・大気圧センサーモジュール
抵抗 – 220k 1 R1  
抵抗 – 1k 1 R2, R5  
抵抗 – 2k 1 R3  
抵抗 – 100k 1 R4  
抵抗 – 10k 3 R6, R7, R8   
コンデンサ – 0.1u 2 C1, C2 積層セラミックコンデンサ
コンデンサ – 1u 1 C3 積層セラミックコンデンサ
2SC1815 1 Q1 NPNトランジスタ
3.5mmプラグ 1   4極プラグ
電池 1   3V

 

気圧センサー・デバイスの回路図

気圧センサー・デバイスの回路図
 ※秋月電子製のモジュールなのでモジュールのプルアップを使う場合には、R7,R8の抵抗を省略できます。

 

プログラム

Android用気圧高度表示アプリ

SoundIRModem_barometer.apk

Android用気圧高度表示アプリのソース

SoundIRModem_barometer.zip

気圧センサー・デバイス(Tiny10)用プログラム

tiny10sirm_pressure.hex

気圧センサー・デバイス(Tiny10)用プログラムのソース

tiny10sirm_pressure.c
※このソースのコンパイルには、「米粒AVRでI2C通信(マスター)」のページで公開している tiny10softI2C.h が必要です。

 

解説

Androidで気圧高度計

気圧高度計アプリ

このアプリでは前回作った温度計と同様で、500m秒毎にセンサーから数値を読み取り、表示を更新している。
画面上部に小さく表示されている「0×02, 0×63, 0xC6, 0x3E, 0xD8, 0xDE, 0x1F bitCount:56」が、センサーから受け取ったそのままのデータです。

 

データフォーマット

センサーからAndroidに送るデータは、1回に7バイト(56ビット)の下記フォーマットとなっています。

バイト配列 内容
1 デバイスID(0×02)
2 気圧データの最下位(PRESS_OUT_XL)8ビット
3 気圧データの下位(PRESS_OUT_L)8ビット
4 気圧データの上位(PRESS_OUT_H)8ビット
5 温度データの下位(TEMP_OUT_L)8ビット
6 温度データの上位(TEMP_OUT_H)8ビット
7 チェックサム

受信したビット数が56ビットであることと、7バイト目のチェックサムが正しいことをチェックし、1バイト目のデバイスIDが0×02である時に、気圧センサーからのデータであると判定しています。

 

データの変換

気圧の数値は、センサーから受信した24ビットの気圧データを、4096で割るとヘクトパスカル(hPa)の数値となる。

温度の数値は、センサーから受信した16ビットの温度データを、480で割った後42.5を足すと摂氏(℃)の数値となる。

ちなみに、気圧から高度を得る計算式は、このセンサーのアプリケーションノートに載っているものを使用しました。

 

 

フリスクケースに収めて完成

フリスク気圧センサー
もちろん、今回もフリスクケースに入れて持ち歩けるようにしています。

フリスク気圧センサー
フリスクケースの外観

フリスク気圧センサーの中身
フリスクケース用には、ストロベリーリナックスのモジュールを利用。
基板とリチウムコイン電池(CR2032)を両面テープで、スイッチは接着剤を使って固定しています。
また、ケースには外気圧と同じになるように通気用の穴を開けている。

 

関連記事

米粒AVRで温度計

米粒AVRで温度計(STTS751使用)

前回までに紹介したI2CライブラリとLCDライブラリを使って作る、温度計のサンプルです。 温度

記事を読む

no image

ボツネタ~CAN的な何か

少し前に必死になって作ってたデバイス+アプリですが、気持ちが萎えてしまい、結果ボツと

記事を読む

no image

米粒AVRのEAGLEライブラリ

EAGLEを使って米粒AVR(ATtiny10)の回路図を書こうと思ったら何か様子がおかしい。

記事を読む

no image

Androidとオーブントースターを繋いでみた

Android端末とオーブントースターを、Arduino+USBホストシールドで作ったADKっぽい奴

記事を読む

soundIR 送信機

赤外線リモコン送信機(イヤホンジャック接続)の回路

前回は受信機で、今回は送信機を作ってみました。 受信機と違って、送信機の作成は少し面倒です。

記事を読む

raspi-pin-header

そうだ、Raspberry Pi用にピンヘッダーのオス・メス変換アダプタを作ろう

  Raspberry PiのI/O端子は、ピンヘッダーとなっていて、電極が出っ張ってる

記事を読む

no image

S2 Resistor Color Code 公開しました。

このアプリは、抵抗のカラーコードから抵抗値を素早く見る為のAndroidアプリです。 4本帯と、5

記事を読む

thermometer

パソコンで温度計 #2

今回は温度表示とログ取りアプリを作ったので公開。 前回にArduino+STTS751で作った

記事を読む

no image

AndroidでSoftModemを試してみた

今回、ここで言うSoftModemとは、携帯電話のオーディオ端子(イヤホン・マイク端子)を利用し

記事を読む

S2 SoundIR analyzer

赤外線リモコン受信機(イヤホンジャック接続)のアプリ

 前回の赤外線リモコン受信機(イヤホンジャック接続)の回路 を使う為のAndroidア

記事を読む

Comment (3件)

  1. kawana

    今日は、以前におじゃまして、いろいろ教えて頂いた者です。その節は貴重なお時間
    をいただきありがとうございました。
    今、私は、ATXMEGA128A1 BoardでI2C LCDの接続をProgramしています。
    ATXMEGA128A1にもI2Cは有るのですが、実際のProgramが無いと私には見当も
    つきません。そこで、Futabaさんの研究成果の米粒ICでLCD表示を使用させて頂きました。前回は100%は理解出来ませんでしたが、今回は、Programを見ながら、
    グラフ用紙にタイミングを書いて行くとタイミングがすらすらと理解出来ました。
    感謝感激!です。
    TVで見た事で、今の時代は、小学生までが、スマホのProgramを書く時代なのかと
    驚いています。こないだ、私はスマホから、普通の携帯に変えました。(電話代、その他から)スマホが遊んでいます。私には、カメラとカメラ画像を見る程度しか利用出来ません。
    この遊んでいる、スマホを気圧計等の表示に使用可能でしょうか?

    1. Futaba

      コメントありがとうございます。

      イヤホンジャックからの入力は全てのスマホに対応している訳ではありません。
      また、ご質問の内容から、このページの内容はkawanaさんにとってはハードルが高いんじゃないかと思います。

      1. kawana

        ご返事ありがとうございます。やはり、私のレベルには、ハ-ドルが高い事理解しました。私の、当面の関心事を理解して行きたいと思います。

Arduinoで温湿度データロガー
Arduinoで温湿度計 #2

今回は、前回作った温湿度計にRTCモジュールとSDカードアダプタを

Arduinoで温湿度計
Arduinoで温湿度計

秋月電子の温湿度モジュールを使って、温湿度計を作ってみました。 以前

SDカード・マイクロSDカード
ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduin

秋月電子 リアルタイムクロック(RTC)モジュール
秋月のリアルタイムクロック(RTC)モジュール

今回は秋月電子のI2C接続のリアルタイムクロック(RTC)モジュールを

秋月電子 キャラクタLCD
秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、

PAGE TOP ↑