ラズパイ Rainbow HAT


20170812raspi_hat

秋月で ラズパイ HAT が販売されていたので、3種類ほど買ってみました。
Rainbow HAT + Pibow Coupe Android Things

そのうちの1つ RainbowHAT について記述します。
20170701_rainbow_hat

RainbowHATの概要
14セグやフルカラーLEDが搭載されたラズパイの拡張ボードです。

国内の販売元
秋月の他に、
スイッチサイエンスアマゾン で販売しています。

設計 製造元 
PIMORONI Ltd 
英国でラズパイを販売している電子部品の代理店のようです。

主なハード諸元
回路図や実装図は公開されていませんが、githubに若干記述がありました。

(1) 14セグメントLED with HT16K33:x4
搭載位置は中央
GPIO接続は、I2C

(2) フルカラーLED APA102:x7
搭載位置は14セグメントLEDの上
GPIO接続は下記
Clock | BCM#11
Data | BCM#10
Chip-Sel | BCM#8

(3) タッチセンサー AT42QT1070 x3
搭載位置は14セグメントLEDの下で、ABCと表記されている
GPIO接続は下記
A | BCM#21
B | BCM#20
C | BCM#16

(4) 単色LED(赤Red、緑Green、青Blue) x各1
搭載位置はタッチセンサーABCの上にRGB
GPIO接続は下記
Red | BCM#6
Green | BCM#19
Blue | BCM#26

(5) 温度気圧センサ BMP280 x1
GPIO接続は、I2C
注意:搭載位置がCPUチップに近いために温度は高めの値が取得されるようです。

(6) 圧電ブザー:x1
GPIO接続は下記
BCM#13 / PWM1

サンプルコード
下記のサンプルコードが用意されています。
どういう動作をするのか説明がなかったので追記しておきます。

(1) demo.py
ビープ音を鳴らし、
14セグに”WJDK”を表示する。
ボタンAに触れると、14セグに”AHOY”を表示し、
赤LEDを点灯する。
ボタンBに触れると、14セグに”YARR”を表示し、
緑LEDを点灯する。
ボタンCに触れると、14セグに”GROG”を表示し、
青LEDを点灯する。

(2) temperature.py
14セグに温度を表示する。
ボタンAに触れると、終了する。

(3) pressure.py
14セグに気圧を表示する。
ボタンAに触れると、終了する。

(4) lamp-rgb.py
カラーLEDの3色RGBを制御する
ボタンAをタップすると、3色のいずれを選ぶ
ボタンBをタップすると、選ばれた色が明るくなる。
ボタンCをタップすると、選ばれた色が暗くなる。
します。

(5) rainbow.py
カラーLEDを左から右に点灯する
色の指定は、HSV色空間のH色相(Hue)で行っている。
虹のように連続的に色を変化させる意図だろうが、
実際は白色に近い。
britnessが0.1なので、明るすぎるのかも。

(6) touch.py
ボタンABCに触れると、下記のようにカラーLEDの色を変える。
指を離すと、無色になる。
A:赤RED
B:緑GREEN
C:青BLUE

Android Things 対応
HATに拡張できるようにI2C、SPI、UARTなど端子がある。
なお、Android Things のサンプルコードは用意されていない。


Android 端末の識別子


Android で取得できる端末の識別子 は下記のものです。
取得には、READ_PHONE_STATE と ACCESS_WIFI_STATE のパーミッッションが必要です。

IMEI ( 国際移動体装置識別子 International Mobile Equipment Identity )
端末本体に付与される識別子

IMSI ( 国際加入者識別子International Mobile Subscriber Identity )
携帯電話のユーザーに付与される識別子

– ICCID ( Integrated Circuit Card Identity )
SIMカードに付与される識別子

Mac Address ( Media Access Control address )
WiFi機器に付与される識別子

– Android ID
Android機器に付与されるID
初期設定のときに生成される

サンプルコードを作って、Github で公開しました

端末の識別子を取得して表示する

20170701_screenshot_device_id_view

参考

AndroidおよびiOSでの端末識別子について


端末のシステム情報


現在のビルドに関する 下記のようなシステム情報を取得できる。

–ブランド名 Build.BRAND

– デバイス名 Build.DEVICE

– 製造者名 Build.MANUFACTURER

-モデル名Build.MODEL

– SDKフレームワークのバージョン Build.VERSION.SDK_INT

サンプルコードを作って、Github で公開しました

システム情報を取得して表示する

20170701_screenshot_system_info_view

参考

Build | Android Developers

Androidのシステム情報を取得する方法


未捕捉の例外の処理


AndroidやJavaでは様々な理由で例外が発生する。
通常は try cstch で捕捉するが
捕捉できないときは ANR Application Not Responding が発生する。

メインスレッド Activity にて、未捕捉の例外を処理することができる。
その中で、ログファイルに記録したり、メールで通知したt=り、サーバーに送信したりできる。

簡単なサンプルコードを Github で公開した。

例外が発生すると ログファイルに記録する

20170701_screenshot_uncaught_exception_exception

下記のようなログが記録され、
ainMainActivityの78行目で例外が発生したことがわかる

  
jp.ohwada.android.uncaughtexceptionsample1.MainActivity#procButtonException:78
jp.ohwada.android.uncaughtexceptionsample1.MainActivity#access$000:23
jp.ohwada.android.uncaughtexceptionsample1.MainActivity$1#onClick:48

参考

Android キャッチされなかった例外を処理する

バグ報告システムでLogCatを送信する


logcat のファイル出力


logcat をファイルに出力します。
logcat を取得する API はないので、
下記のように アプリにて logcat コマンドを実行します。

     Runtime.getRuntime().exec("logcat");

文字列を取得するには。ひと手間 必要です。
Activity (UI スレッド) から実行するには、非同期処理にします。

簡単なサンプルコードを作って、Github で公開しました。

logcat をActivity 画面に表示する。

20170701_screenshot_logcat_view

参考
ndroidアプリケーションからlogcatコマンドを実行する