教育用、と銘打って売られている「マイコン・ボード」的なもののひとつに
Micro:bit
というものがあるのをご存知かもしれません。小学生くらいを主対象にプログラミングの学習用など意図したボードのようです。世界中に蔓延っている?らしいです。調べてみると、この開発環境、如何にも「モダン」な要素にあふれています。子供相手のおもちゃなどと馬鹿にしたものじゃありません。
※「モダンOSのお砂場」投稿順Indexはこちら
このMicro:bit なるもの、英国BBCが起源のようです。女王陛下を頂く大英帝国には、昔から妙に「お手頃」価格の「一風変わった」コンピュータを作る伝統があるようです。遥かな昔、BASICなんぞでプログラムを書いていたころ、英国製のZ80のマイコン、キーを押す度に画面が消える(キースキャンと画面リフレッシュの両方をZ80のソフトでやっていた!)コンピュータを触ったことがございます。今を時めくArmなども、その出自をたどっていくと、それら英国の系譜に連なるような気がいたします。で、このMicro:bitですが、イギリス本拠の非営利のMicro:bit教育財団というところが開発と配布の実体であるようです。しかし、財団の創立メンバにはArm、Amazon、Microsoftなども含まれております。あえて、その辺、詮索はいたしますまい。ファンシーなパッケージ写真をお見せしましょう。
このごろのマイコン評価キットのパッケージは結構あか抜けたものになってきていますが、やはり、それとは一線を画する感じです。
こちらは、普通のマイコン評価ボードであれば、「裏面」にあたる部分ですが、このボードの場合、「表」というべきでしょう。まず基板は「ファンシー」?な色に塗られ、その中央に5x5のLEDが並んでいます。こんなにLEDあってどうするのという感じですが、LEDの点灯で単なるパターンを映し出すだけでなく、文字が流れる表示版として、文字列なども表示できるようです。なかなかの優れもの。そして、両脇にはAとBのスイッチ。とりあえず基板単体では、この2つのスイッチが唯一の入力デバイスのようです。そして下部に「カードエッジ」が見えていますが、何やらいくつか孔が開いていています。どうも主要な信号と電源はワニ口クリップなどで取り出せるように工夫しているようです。
上部中央に、マイクロUSBコネクタあり、これを介してPCに接続することで、PCからはドライブに見えるという、他のマイコン開発ボード同様な仕組みも使えます。それ以外に右肩にあるコネクタは電池(3V)接続用のコネクタ。間に挟まっているのはRESETスイッチです。主要なICは2つだけであり、PROCESSORと書かれた方に鎮座しているのは、
Nordic Semiconductor製nRF51822-QFAA
でした。2.4GHz帯、BTLEのトランシーバチップですが、「マイコン」といっていいでしょう。マイコンとしては以下のようです。
- Arm Cortex M0
- 256KB FLash
- 32KB SRAM
マイコンと言えば、もう一個搭載されていて、こちらは、
NXP製 Kitetics KL26
でした。こちらのコアは Arm Cortex M0+です。レーザーマーキングの字が小さくて読めませんでした。詳細な型番まで読み取れなかったので、メモリサイズは決められませんが、ノルディックのチップの半分くらいじゃないかと思います。こちらはプログラミングする対象ではなく、プログラムを助けるための書き込みツール的な機能を担っているようです。
そして、プライマリな開発環境ですが、Webベースです。
- Microsoft提供、MakeCodeエディタ
- Pythonエディタ
の2つがあります。1は「教育向け(ぶっちゃけお子様向けか)」と称する類のプログライミング環境で時折見かける、ブロック図ベースの開発環境で、ブロックを組み合わせ、その中のパラメータを適宜書き込んでいけば、ソフトウエアができあがるものです。なかなかインタフェースが綺麗で良いです。下手にテキストで書くと間違えそうなプログラムの構造がガッチリブロックで組み立てできるので、つまらないバグは作らなそうに思えます。なお、ドキュメントの上位層はほぼ日本語化されているので、とっつきやすいです(奥の方へ行くと、日本語が無い?ページが散見されますが)。この環境、表はグラフィカルですが、裏があって、スイッチするとJavaScriptのテキストベースでも開発できるようになっています。ブロックを配置すると裏のソースコードが着々と増えていくのが、なかなか小気味よい感じです。JavaScriptはいろいろな局面で使われてきていますが、マイコンよお前もか?という感じ。「モダンOS」ポイント?高いです。
2のPythonの方は、テキスト環境のみです。勿論、フルではなく、MicroPython(インタフェース誌の分類に従えば、モダンOSの範疇に入る)です。上のブロック図ベースの環境を見てからこちらにくると、「普通」に読めるソースなので、ちょっとホッといたします。年寄りだな。
これ以外にも、上記の1をパソコン上でローカルに使えるようにした環境(見た目もWebベースのものそっくり)、スマホ上で開発できるようにしたもの(スマホとMicro:bitをBTLEでペアリングしてファイル転送する。実際の開発はWebベースの環境を流用する感じ)などあり、また、JaveScriptとMicroPython以外の言語で開発できる環境も複数あるようです。
使用しているアブストラクションレイヤは、Arm主導でMbedで使っているものと一緒だ、ということに気付きました。Mbed調べると、
Mbedのターゲットデバイスとして Micro:bit サポートされていたです。つまり、
Mbed環境使えば、C++/Cでも普通に開発できる
筈。子供向けどころか、IoT向けのマイコンボードとして使えるんじゃないでしょうか。