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

 

関連記事

no image

ボツネタ~CAN的な何か

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

記事を読む

no image

Atmel Studio 6

米粒AVR(ATtiny10)の開発を行う為に、Atmel Studio 6.0をインストールし

記事を読む

パソコンで温度計 #2

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

記事を読む

no image

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

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

記事を読む

秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、ちょっと比較してみる。 買っ

記事を読む

no image

AndroidでSoftModemを試してみた

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

記事を読む

Raspberry Piのスクリーンショット

  ブログで使う用に、Raspberry Piのスクリーンショットを撮りたいと思った時、

記事を読む

Hello Tiny10

米粒AVRでI2C通信を使ってLCD表示

前の記事で紹介したI2Cライブラリを使った、LCDの表示のライブラリ的なもの  

記事を読む

no image

PIC24FJ64GB002でADKを試す(その1)

先日、MicrochipからPIC向けのAndroid Open Accessoryのライブラリが公

記事を読む

Raspbianの起動SDカードを再利用

一度、Raspbianのイメージを書き込んだSDカードは、フォーマットが違う為にWindowsでは利

記事を読む

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で温湿度計 #2

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

Arduinoで温湿度計

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

ArduinoでSDカード

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

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

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

秋月の小型キャラクタLCD

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

PAGE TOP ↑