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)を両面テープで、スイッチは接着剤を使って固定しています。
また、ケースには外気圧と同じになるように通気用の穴を開けている。

 

関連記事

S2 SoundIR analyzer

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

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

記事を読む

no image

S2 Resistor Color Code 公開しました。

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

記事を読む

no image

米粒AVRでシリアル通信(ただし送信だけ)

米粒AVR(ATtiny10)にUART機能は搭載されていないので、シリアル通信を行う為には自前

記事を読む

Arduinoで温湿度計

Arduinoで温湿度計

秋月電子の温湿度モジュールを使って、温湿度計を作ってみました。 以前「パソコンで温度計」と言うもの

記事を読む

no image

Android + Bluetooth + Arduino

 以前書いた『気になる物』で紹介したBluetoothモジュールですが、本当に気になって実

記事を読む

soundIR 送信機

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

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

記事を読む

no image

赤外線リモコン受信機(イヤホンジャック接続)を作ってみた

最近、このブログ何も書いて無かったので、作成中の物の紹介・・・  これは、Andro

記事を読む

vlc_media_player

Raspberry Piのサウンドを試したら音が出なかった話

(これはX-WindowのVLCメディアプレイヤーのスクショ) Raspberry Piでは、

記事を読む

no image

Androidで一眼レフカメラのシャッターを制御する(MicroBridge接続)

以前書いた、Androidで一眼レフカメラのシャッターを制御するでは、AndroidとArduino

記事を読む

米粒AVR リモコン

米粒AVRでリモコン送信機

米粒AVR(tiny10)を使った赤外線リモコン送信機を作ってみました。 これで送信できるのは

記事を読む

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 ↑