micro:bitを使ってみる
micro:bitという名前のマイコンボードを試しに使ってみました。
とりあえず超簡単な紹介とサンプルプログラムを記事にしてみました。
スペルとしては”micro:bit”と真ん中にコロンが挿入されてますが、読み方は「マイクロビット」と読みます。
Arduinoはイタリア発ですが、こちらはイギリス発です、子供向けのプログラム教育用のマイコンボードとしてBBCが後援のmicro:bit財団が開発し2016年にリリース。
プログラム開発用の言語はJavaScript(ブロックエディタorテキストエディタの選択可能)とPython(テキストエディタのみ)がメインサポート言語ですが、今回はJavaScript(ブロックエディタ)を使ってプログラミングしてみます。
公式ホームページはこちらです。
2019年1月23日更新:記事内容に間違いがあり修正、同時に表現方法の修正・加筆を実施。
目 次
micro:bitとは
序文に少々書きましたが、これはイギリス発です、あの有名なBBCが後押ししているからか基板表面にBBCマークが印刷されてます。
本国イギリスでは11歳と12歳の子供たち100万人に無償配布されたとのことです、わが日本ではマイクロソフト主体のコンソーシアムのWDLCにて「MakeCode × micro:bit 200 PROJECT」という活動が実施されて国内の小学校&教育委員会の合計200団体に無償配布されました。(募集は2018/7までで終了)
2016年に本国イギリスでリリースが開始されましたが日本国内では技適認証取得完了に伴い2017年8月からリリースが開始されました。
という経緯から分かるように【子供のプログラミング教育用マイコンボード】というのが主目的でして、随所に工夫がされてます。
例えば
- micro:bitボード上にLED(5×5=25個)、加速度センサー、磁気センサー、スイッチ、Bluetoothなどのハードコンポーネントが実装されている。
- 部品を追加することなく、すぐにセンサー機能を試せたり、LED上に文字・アイコン表示ができる。
- プログラミングにはブロックエディターが使える。
- ビジュアルコーディングのため、事前学習をほとんどしなくてもすぐにプログラミングが始められる。
- プログラミングを始めるのにIDE(開発環境)、ドライバーなどのソフト・インストールが不要
- 各PCの環境整備の手間が不要、必要なのはネット環境とブラウザ(Micorsoft Edge、Apple Safari、Google Chromeなど)のみ。
micro:bitのハードウェア
Arduinoと比較してみました、
Arduino | micro:bit | コメント | |
CPU | 8bit@16MHz
Atmega328P |
32bit@16MHz
nRF51822(ARM Cortex M0) |
Arduino、micro:bit双方共にメインCPU(プログラム実行用)とサブCPU(USB制御、データ転送制御用)の2個のCPUが搭載されてますが、この表ではプログラム実行用のCPUのみを記述してます。 |
FlashMemory | 32Kbyte | 256Kbyte | |
RAM | 2Kbyte | 16Kbyte | |
GPIO端子 | Digital=13
Analog=6(Digitalとしても使用可能) |
GPIO=19(全数Digital入出力として使用可能、その中からアナログ入力として6本アサイン可能) | micro:bit:GPIO端子として19本が用意されているが、その中から、LED(6本)、A/Bボタン(2本)、I2C(2本)、SPI(4本)がアサインされているのでこれらと競合しないで使用可能なのは5本(その内アナログとしても使用可能なのはは3本)
詳細はこちらを参照 |
LED | 1個 | 25個(5×5マトリクス) | ユーザが制御可能なLEDのみ、パワーオン、通信表帯表示など,は除く |
加速度センサー | × | 〇(MMA8653FC) | micro:bit:左記の加速度、磁気センサーはv1.3ボードの仕様、v1.5ボードでは加速度+磁気が統合されたモーションセンサー(LSM303GR)に変更されてます。こちらを参照。 |
磁気センサー | × | 〇(MAG3110) | |
スイッチ | × | 2個(タクトスイッチ) | プログラマブルなモノのみ記述。Arduino / micro:bit双方共リセットスイッチは実装されています。 |
USB | mini-type | micro-type | |
無線 | × | BLE(BluetoothLowEnergy) またはmicrobitオリジナル方式 | 注)Pythonプログラム上では使用不可(詳細はこちら) |
電源電圧 | +5VDC | +3.3VDC | |
基板サイズ | 18mmx42mm | 52mmx42mm |
特長
比較表を見るとわかるように、
- CPUは8bit対32bitとbit長が4倍、クロック周波数は同じ。
- flashメモリは32kByte対256kByteと8倍の容量アップ、(但しJavaScript、Pythonのインタプレタ、システム領域が必要なためにmicroPythonの場合でユーザアリアは8Kbyteほどしか残ってない。)
- オンボードでセンサー(加速度、磁気)、スイッチ、LED(5×5)が実装されているのでオプションボードの追加が無くてもある程度のプログラミングが可能
となっており、Arduinoでは必須であったブレッドボード配線が最初のステップでは不要、もちろんセンサー、モーター、LCD等々の外部素子を追加すればブレッドボードは必要になる。
プログラミング環境
micro:bit公式ホームページ上のオンラインプログラミング環境を使用するのがベーシックです。
オンラインプログラミングのためアプリソフトのインストール&設定が不要です。
USB接続するとストレージに見えるためUSBドライバーのインストールも不要です。
JavaScript(ブロックエディタ)とPython(テキストエディタ)の二択、公式サイトのこちらのページでに詳しく書いてあります。
JavaScript画面
Python画面
簡単なプログラミングに挑戦
まずはブロックエディタを使ったJavaScriptで「Lチカ」を作ってみます。
手順①
WebBrowserを起動。
ここではGoogleChromeを使用してます。(多分、IE、EdgeでもOKと思われます)
ちなみにPCはWindows10です。
手順②
micro:bitとPCをUSB接続する。(USBコネクタはマイクロUSBタイプ)
手順③
micro:bitの接続を確認する。
確認方法はWindowsのエクスプローラを起動してMICROBIT(E)という名称のストレージが追加されていればOK。(注、個々のPCによりドライブレターは異なります、私のPCの場合は”E”でした)
手順④
WebBrowser上のブロックエディタでプログラミング。
5×5のLEDが搭載されているので複数LEDを使ったLチカをやってみました。
下にスクリーンショットを掲載しましたので皆さんも真似してみてください。
手順⑤
完成したプログラミングをダウンロードする。
ここで言うダウンロードとはWebサーバー上のプログラムを自分のPC上に持ってくることを言います。
ダウンロードボタンをクリックすると自己のPC上に拡張子がhexのファイルを保存するよう指示されるので保存先を選択して保存します。
hexファイルをアップしましたので参考にしてみてください。
microbit-LED_blink_JS4
手順⑥
micro:bitにプログラムをコピーします。
- コピーする対象物=上記hexファイル
- コピー先:MICROBIT(E) (ストレージ)
- コピー方法:専用アプリではなくWindowsエクスプローラを使った通常のファイルコピー操作
注)micro:bitファームウェア(DAPLink)v2.47からWebUSBが使用可能になり、MakeCode画面の「ダウンロード」ボタンからダイレクトにmicro:bitボードに書き込みかができるようになり上記の手順よりも簡単になりました。(詳細手順は別途記事にする予定)
手順⑦
プログラムが自動実行される。
コピー処理が終了するとプログラムが自動的に実行されます。この辺りはArduinoと同じですね。
プログラムが実行されるとコピーしたファイルは自動的に消去されますので、突如ファイルが無くなったと驚かないでください。
動画を撮ってみました。
使ってみた後で、まとめてみる
マイコンボードの開発の目的が子供たちのプログラミング教育用ツールということなので、プログラミングそのもの以外の事柄には手間を掛けなくてよいようにできてますね。
<ハードウェアとしては>
1)電子回路の知識が無くても、また追加学習することなく楽しめるようにできている、具体的にはマイコンボードに最初から1)センサー、2)5x5LEDマトリクス、3)スイッチなどが実装されているのでブレッドボードでの部品実装&配線が不要です。
2)更に追加のセンサー(温度、湿度、気圧、GPS、時計など)、モーター、LCDなどを拡張したいときにはGROVE対応モジュールが使えるようになっているので、この場合でもコネクタを一つ差し込むだけで配線不要という、これまた電子回路知識。経験が不要。(GROVEについては今回は触れてませんのでネットで情報収集してください、機会(時間と予算)があれば記事にアップするかもしれません・・・
(逆に言えば、電子回路を学習したい人には物足りないと言えるかもしれません)
<ソフトウェアとしては>
1)専用の開発環境(いわゆるIDE)のインストールが不要、またよく悩まされるUSBドライバーのインストールも不要。このためいつものようにインストール作業で悩むことが皆無。
2)簡単プログラミングのJavaScript(ブロックエディター)とはやりのPython(テキストエディター)の両方が使える。
次回にはPythonを深堀します。
ハードウェア比較表において
加速度センサーと磁気センサーが逆さまではないでしょうか。
ご指摘ありがとうございます、修正しました。GPIO本数など、他にも間違いがありましたのでそちらも含めて修正しました。