モダンOSのお砂場(4) Micro:bitとDroidScript その2

前回、何の苦労もなく、Android機上のDroidScriptから、BLE経由で、microbitを操作できたのは僥倖であったことが、今回理解できました。「たまたま」うごく「組み合わせ」であった、ということです。結局、どこにでも転がっているように思える、ソフトウエアのバージョンの問題に遭遇してしまいました。いろいろ調べてみて、どの組み合わせならどう動かすべきなのか少し分かってきたので、中間報告を兼ねて書き留めておきます。問題を認識した切っ掛けはハードを拡張するためのブレークアウトボードの作成でした。

※「モダンOSのお砂場」投稿順Indexはこちら

まずは、ブレークアウトボードの部品写真から。microbitの「エッジコネクタ」から信号を取り出すためのボードです。主要な3信号と電源、グランドにはスクリュー式の端子、その他の信号はピンソケットで取り出せるようになっています。
部品はスルーホールに半田付けするだけなので特別難しいこともないですが、スクリュー式の端子台は相互に嵌まるようにできているので、はめ込んで5個一体化してから半田付けする方がさそうです。(後からはめようとしたら結構きつくて困った)

組み立て後、microbitのカードエッジを差し込んだところ。

 

 

下は裏面から見たところ。

 

 

 

 

 

 

 

 

 

さて、本題のDroidScriptのバージョン問題に入ります。今回、使用しているAndroid機は2種。

  1. 古いアンドロイドタブレットNexus 7 Android 4.4.2
  2. 上記よりは新しいスマートフォン Android 6

それぞれにDroidScriptがインストールしてありました。2の方は最新版のDroidScript 1.74に更新済。1の方は、大分前にインストールしてあった古いバージョン(不明)のままでした。

1と2では、メニューからmicrobit pluginをインストールするときの挙動が違い、1は、メニューから、Google Playを介ず、pluginがダンロードでき、かつ、即座に実行可能な状態となります。それに対して、2では、メニューからmicrobit pluginをインストールしようとすると、Google Playが立ち上がり、まず、microbit pluginをインストールするためのアプリをインストール。それを実行した後でDroidScriptを再起動するとようやくmicrobit pluginが実行できるように反映されています。

また、1でmicrobit pluginをインストールすると、microbitにEspruinoをインストールした前提でのドキュメントしか表示されないのですが、2でインストールすると、Espruino無で、自分でmicrobit側のアプリを作成する方法とEspruinoを使用する方法の2つが表示される、という違いもあります。

さて、前回「1,2,3」という感じで、簡単に、BLE経由で、microbitを操作できたのは、1の古い方のAndroid環境でした。実は、今回も古い方の環境で作業を始めたのです。しかしここに大きな躓きが潜んでいました。

カードエッジコネクタに出ているピンにデジタル出力できない

のです。ドキュメントには、ちゃんとデジタル出力用のメソッドもあるのに。試みにアナログ入力用のメソッドを使ってみると何やら信号がとれます。調べてみると、

  • Espruinoはmicrobitだけのものではない
  • Espruinoは、デジタル出力メソッドも含め、各種ハードを使うためのメソッドを持つ。
  • しかし、microbit用のEspruinoがサポートしているのはそのサブセット

であるようでした。大体、Espruinoは有償のボード販売がメインのようですが、microbit用のEspruinoは料金無料で配布しているということみたいです。詳しいことは、

Espruino

本格的にEspruinoが気に入ったら、対応ボードを買ってくれ、というスタンスなのかもしれません。どうもEspruino経由でフルにmicrobitの端子を利用するのは望み薄な感じがしたので、DroidScriptを更新して、Espruinoを使わない方法で作業を進めることにいたしました。そこで、古いDroidScriptをアンインストールし、DroidScriptを最新版にアップデートしてしまいました。ついでにプラグインも最新版に。インストール自体はまったく問題なくありません。DroidScriptの動作も正常に見えます。しかし、

BLEのScanで落ち、Espruinoに接続できない

です。原因はプラグインの内部のエラーのようでした。困りました。新しい方のスマホ環境でも確認しましたが、状況は同じでした。

しかたないので第2の方法に切り替えました。USBから、microbitにサンプルの小さなBLEアプリを書きこみます。その後microbitのコンパニオンアプリを使い、Androidとmicrobitのペアリングを行った後、Connectメソッドで接続すればDroidScriptから操作可能でした。この方法であれば、microbit側でのio操作は、予めmicrobit側の開発環境でプログラムすることになるので、基本全てのio操作ができる筈ですから、先ほどのようなデジタル出力できないといった制限は無い筈。

しかし、都度、アプリを書きこまず、ペアリングも不要だったEspruinoの良いところは消滅しました。特にUSB経由でmicrobitに新なアプリを書きこむとペアリングやりなおしになるのが開発フェースではかなり面倒です。

とりあえず、古い方のタブレットをEspruinoが使える環境に戻しておきたい、と思いました。ネット上を探し回って、古いバージョンのAPKファイルをGET。ところが、このタブレット、マルチユーザ設定で、アンノウンなアプリをローカルインストールできなくなっていました。そこで、adb経由で無理やりAPKファイルをインストールしようとしたのですが、今度はインストールしようとするAPKファイルが「ダウングレード」だといってはねられます。どうもアプリをアンインストールしても何か情報が残っていて古い版ははねられてしまうようです。さらに調べまわって、adbつかった「アプリのダウングレードをともなうインストール」(オプションに-rだけでなく-dつけるだけですが)で「元の環境とほぼ同じバージョン」に戻すことに成功しました。そのバージョンがこちら

DroidScript 1.42

ようやく、振り出しに戻りました。

モダンOSのお砂場(3) micro:bitとDroidScript その1 へ戻る

モダンOSのお砂場(5) mocro:bitとDroidScript その3 へ進む