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

 

関連記事

Raspberry Pi

Raspberry Piを買った

先日、Raspberry Pi(ラズベリーパイ)を買いました。 Raspberry Piは噂で

記事を読む

no image

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

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

記事を読む

米粒AVT(tiny10) リモコンレシーバー

米粒AVRでリモコン受信処理

  米粒AVR(Tiny10)で赤外線リモコンを受信して処理をするサンプルを作ってみまし

記事を読む

no image

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

またSoftModemネタです。 調子に乗って arms22さんの記事 iPhoneで一眼レフカメ

記事を読む

thermometer overlay

パソコンで温度計 #4

前回までに作ったPC温度計のログデータを、計測と同時に撮影した映像にオーバーレイ表示(スーパーイ

記事を読む

no image

AndroidでSoftModemを試してみた

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

記事を読む

no image

Arduino + USBホストシールド で ADK を試す(その3)

「Arduino + USBホストシールド で ADK を試す(その1)」では、Android上のア

記事を読む

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

ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduinoでも比較的簡単にSDカードを

記事を読む

Androidから米粒AVRへデータを送る

米粒AVRでSoftModem的なこと その2

前回は「米粒AVRからAndroidへデータを送る」ことを試しました。 今回はその逆の「And

記事を読む

no image

Android + Bluetoothドングル + PIC24F

@hrdakinori さんと言う方が、PIC24FとBluetoothドングルを使って、Andro

記事を読む

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 ↑