Raspberry Pi で Android を動かそう

10/3(土) の 第6回 Japan Xamarin User Group Conference 東京 – connpass のライトニングトークスネタ的に、Raspberry Pi で Android を動かしています。事例スペシャルだしLT枠の10分程度だし、当日はさくっと RPi2 で Android デモをしておしまいな感じ。Xamarin ですから、Visual Studio 2015 から Xamarin.Android を使ってデプロイ&デバッグぐらいなスタイルで行きます。普通は Android/iPhone のスマートフォンを使ってやる話ですから、異例といえば異例な気もしますが、実は、このネタ自体は、組み込みシステムのカンファレンスあたりから考えていたものです。

Android ボードというものがある

5月あたりに ホーム – 組込みシステム開発技術展 | ESEC があったわけですが、その中で Android ボードをいくつか見てきました。戦車なりロボットアームなりを動かそうとすると、Raspberry Pi に Rasbian(Linux) を入れて使うか、Arduino などを使った直接制御をするか、ってのが定番だと思います。そんな中で、以前は ARM で動く Java CPU だったり、Java の組み込みシステムという分野があって、そうなると色々見ているうちに Android の組み込みボードというのがありました。Android と言えば、スマートフォン/タブレットを使うのに特化したようなイメージがありますが、ノート PC に直接入れたって良いし(使い勝手はどうなのか知りませんが)、中身はれっきとした Linux なのだから、そのまま GPIO をつなげて制御ができたってよいのです。実際 ESEC では、組み込み Android ボードがあって、定番的には 5万円ぐらい、安いところで 2,3万円というものがありました。遊びにはちょっと高いものだし、そのままだと Android スマートフォンを買っても良い値段なぐらいで、どんなものかな、と思っていたのですが、その事例の中に Android IDE を使って GUI 部分と機器制御(券売機)を行っていた会社さんがありました。なるほど、GUI を組み合わせるのだったら、Android IDE みたいなのがいいですよね。ってことは、Xamarin.Android を使えば C# で書けるのではないか?と思ったわけですが、聞いてみるとグラフィック部分は外部ライブラリを使っていて、特殊な形で呼び出しているとのこと。うーむ、そうなると Android ボードを買っても動かない、

Banana Pi で Android が動く

さて、そうなると、ひょっとすると Raspberry Pi で Android を動かしているものがあるのではないかと調べてみると、一応、非常に遅いのですが Android が動くという噂を見つけました。なにやら、ややこしくてインストールも大変そうだし、Android 自体も 2.3 という古いバージョンだったので(BLEを使いたいので、4.4以降がいいのです)探すのをやめてみたのですが、Banana Pi – Product – LeMaker | The Open Source SBCs Community という Raspberry Pi 互換ボードがあるのを見つけました。 すでに手元に Raspberry Pi が 5台(!)もあるので、互換ボードであっても Linux が動くだけではつまらないのですが、Raspberry Piを模した「Banana Pi」が発売–中国の教育機関が開発 – ZDNet Japan の記事を見ると「Android 4.4」という単語がはいっています。なるほど、ならば買ってみて、Android を動かしてみよう、というのがスタートです。ちなみに Banana Pi の Android イメージは Banana Pi – LeMaker | The Open Source SBCs Community からダウンロードができます。

ちなみに、実際に動かすとこんな感じになります。WiFi, Bluetooth のドングルが認識しないので、有線LANでつないていますが、マウスを使ってアプリを動かすことができますね。左上に「ねこあつめ」のアイコンがあるのでわかるように Google Play からアプリをダウンロードできます。

手元の 5インチモニタで動かしてみたのですが、解像度の設定がうまくいかなくて場所がずれてしまっています。/boot/config.txt で解像度を変えられるはずなのですが、Android の場合はどうやるんでしょうね。

Resolutions supported by Android on Banana Pi – Android – LeMaker | The Open Source SBCs Community あたりで DragonFace program を使うようなことが書いてあるのですが、これはあとで調べてみます。

BerryBoot で Android を起動させる

Raspberry Pi というと公式の NOOBS をダウンロードして Raspbian を入れるのが定番だと思っていたのですが、一方でマルチーブートが使える BerryBoot v2.0 というのもがあるのを知りました。Raspberry Piで遊ぼう [No.23:BerryBootでRaspberry Piのマルチブートをやってみよう(SDカード作成)]:アシマネくんのほんわか日記:So-netブログ な記事を見ると、2013年頃からあるもので、その中に Android 4.4 のイメージをダウンロードできる項目があります。

じゃあ、やってみよう、ということで Android 4.4 を Raspberry Pi2 にインストールしたのがこれです。こっちのほうは、マルチブートの設定で config.txt を書き換えることができるので、解像度を 800×480 に設定しています。

config.txt の設定

hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0

hdmi_modeがダブって書かれているのですが、そのまま書いています。Raspberry Pi Config | Adafruit 5″ and 7″ 800×480 TFT HDMI Backpack | Adafruit Learning System 私が使っているモニタは Adafruit のものとは違うので完全に設定は同じではないのですが、互換はあるでしょう。タッチパネルなので、タッチもできるはずなのですが、こっちのほうはまだ動いていません。仕方がないのでマウスでアプリを起動させます。例によって、Wifi も Bluetooth のドングルも認識しないので、Android スマートフォン以下です。当初のもくてきの BLE も使えないので、なんともやりようがないのですが、そのあたりはもうちょっと頑張ってみる予定です。なんせ、Android 組み込みボードを買うと 3万円ぐらいするのに、この組み合わせだと Raspberry Pi2 が5千円ちょっと。5インチモニタや BLEドングルと合わせても1万円弱ぐらいで済みますからね。

Android スマートフォンで単体で動かすと GPIO 制御はできないし、BLE経由でロボットを動かすことになります。Raspberry Pi + Android だと、直接モーター制御とかができそうですよね。アプリ自体は Google Play に載せることも可能なので、なんかいいかもってな感じです(誰が注目するのか?というは謎ですが)。まあ、素直に Raspbian でやったほうが早いと思いますが(苦笑)

中身は Android なので、Xamarin.Android が使えます。後ろに見えているのが Visual Studio 2015 でデプロイ&デバッグができます。BerryBoot の Android は既に 5555 のデバッグポートで動いているらしく、adb connect <IPアドレス> でコネクトができます。バッテリは試しにスマートフォンの急速バッテリを使って動かしてみました。例によって、タッチパネル機能が動かない(ここももうちょっと頑張ってみる予定)ので、マウスで動かすというなんとも変な感じですが、モニタリングとしてはいけますよね。先日出た Raspberry Pi の公式タッチパネル Raspberry Pi:Raspberry Piにマルチタッチ対応の公式7インチタッチパネル – MONOist(モノイスト) を使うと動くのかどうかは謎です。$60 ということなので、手元のほうは半額。ただし、公式のほうは既に売り切れ状態なので、まあ手元のもの頑張るしかないわけですが。

Xamarin.Android のほうはもうちょっとデモっぽいものを作って持っていく予定です。できれば GPIO を制御するところまでやりたいのですが、時間的にそこまで行けるかどうか不明。途中に 9/26(土) Comm Tech Festival が挟まっているので。.NET のほうは、Windows IoT Core on Raspberry Pi ということで、戦車かサーボモーターで動くおもちゃの予定です。

と、Orange Pi に Android を入れる補記

書き忘れていたので追記しておきましょう。Orange Pi という Raspberry Pi 互換機があります。これが非常に安価で、Aliexpress で $15 だったりします。公式サイト を見るといくつかあり、私が手元に持っているのは Orange Pi Mini 2 です。それぞれ、どのような違いがあるのか一見してわかりませんが(苦笑)、ひとまず Mini 2 は WiFi なし版ですね。WiFi が乗っている Orange Pi Plus を買うほうがいいかもしれません。ちなみに $15 のほうは、Orange Pi PC ですね。USB が一個少ない(3つになってる)けど、これで十分でしょう。Android を入れて、モニタをくっつけて並列で動かしてみたいな、と思ったりしたのですが…Android に関しては、ちょっと手間取って躊躇しているところです。普通に Linux マシンとして動かすほうがよいでしょう。

Orange Pi のイメージは Orange Pi から適切な種類のものをダウンロードしていきます。このなかで Android の書き込みには、Win32DiskImager が使えなくて、PhoenixCard で書き込みをします。書き込みの手順は、Install Android OS image に従っていけばよいでしょう。

image

ここで、かなりはまったのですが、micro SDカードを差し込む場所は、PC に直差しにしたほうがよいです。最初、HUB を通して書き込んでいたのですが、書き込み時にエラーが頻発します。なぜか、SDカードリーダーの調子も悪くて、暫くは SD カード自体が壊れてしまったのかと思っていました。たぶん、書き込みスピードの問題もあるのでしょう。PhoenixCard を使う場合は、PC に直差しで書き込んでください。

その後、micro SD カードを Orange Pi で動かすと、こんな風に Android が起動できます。残念ながらモニタの解像度はあっていないらしく 5inch モニタでは動いていないのですが。

初期状態の Android は中国語になっているので、設定の言語で「日本語」を選びます。ちなみに、USB OTG インターフェースがあるので、Android に USB 接続して adb で、と思ったのですが認識しませんでした。仕方がないので、Xamarin.Android アプリは USB メモリ経由で送っています。これは、ボードの問題なのか、インストールした Android の問題なのかは不明です。

そんな訳で3機種(Raspberry/Banana/Orange)が動いたので、今度は Lemon Pi を買って試してみようかなと。もともと Banana Pi の購入目的が Android を動かすことだったので、Raspberry Pi 上で動けばそれで十分なんですけどね。Raspberry Pi 上の Android は GPU の関係は 800×480 の解像度でも結構遅いです。フルHD だと全然ダメなので、実用的に使うのであればもう少し画像回りのスピードがあがるボードじゃないと辛いと思っています。

 

 

カテゴリー: Android, RaspberryPi, Xamarin パーマリンク

Raspberry Pi で Android を動かそう への1件のコメント

  1. masuda のコメント:

    DragonFace を使ってみたけど、現バージョンは対応していないとエラーが出る。もうちょっと古い Android のバージョンなら大丈夫かもしれない。試しに書き戻すとアプリが落ちるので、やっぱり駄目っぽい。Android なんだから、素の状態からビルドすればいいような気もするけど、Orange Pi あたりで試してみるか思案中。

コメントは停止中です。