まっつん総研連絡用ブログ

プログラミング教育とかMSXとか。

実習室で使っている教材:BBC micro:bit

 プログラミング実習室で使っていたり、要望があれば使えるようにしている教材のうち、BBC micro:bit について書いてみます。

※「子ども向けプログラミング環境にはどのようなものがあるか」、また「そのプログラミング環境がどのようなものであるか」については、既にネットに情報があふれていますので、あくまで身の周りでどのように使っているかを書いています。


f:id:matsun-ri:20220130012051j:plain
micro:bitと箱

目次

概要

 イギリスで100万人の子どもに配られた、ワンボードマイコンです。
 イギリスの公共放送であるBBCが作ったこの micro:bit は、電子工作用の端子のほか、各種センサー(温度・光・加速度・方角)と 25個のLEDランプによるマトリックスを備えており、プログラミングによって利用することができます。

 プログラミングはパソコンで、以前に紹介した MakeCode Arcade でも使用した Microsoft MakeCode を利用します。
 MakeCodeには micro:bit のエミュレーション機能があるため、ある程度は micro:bit の動きを試しながら、プログラムを作成することができます。

f:id:matsun-ri:20220130012326j:plain
Microsoft MakeCodeによるmicro:bitプログラム開発

makecode.microbit.org

 MakeCodeを利用するので、ブロックプログラミングの他、プロが使っている JavaScriptPython といった本格的なプログラミング言語が利用できます。
 ブロックプログラミングというと、よく知らない人が下に見ることがありますが、MakeCode と micro:bit の組み合わせは、ミリ秒単位の超音波センサーを制御するために充分な精度が出せます。

 みんなが大好きな Scratch でもプログラミングができます。ただし、別途ソフトを事前にインストールするなどの事前準備が必要です。

 MakeCodeで作成したプログラムは、USBケーブルを経由して micro:bit に流し込むことで、実行することができます。*1
 いちどプログラムを流し込めば、パソコンがなくても単体で動く*2ので、手作り工作と組み合わせることができます。

 教本は割と多く出版されています。
 『micro:bitプログラミング 手づくり工作をうごかそう!』(翔泳社)など、工作と組み合わせた事例を扱っている本が多く、楽しめると思います。
 また、micro:bitのハードウェアを詳しく知りたい方は、『ビジュアル図解 micro:bitではじめるプログラミング&マイコンボード入門』(技術評論社)をご覧ください。micro:bitのハードウェアについて、メモリマップに至るまで細かく解説されています(たぶんワークショップで普通にプログラミングを楽しむためにはそこまで必要ないと思うのですが……*3)。

v1.5とv2

 購入した micro:bit の世代はv1.5でしたが、後にバージョンが上がり、2021年現在では micro:bit v2が出回っています。

 表面的なバージョンアップとして、v2にはタッチセンサー、マイク、スピーカーが追加されており、 micro:bit 単体でできることが増えました。*4

 内部的にも、Bluetoothの安定性向上や電子工作で利用できる電力の向上(90mA→190mA)、メインメモリが8倍(16kB→128kB)、処理速度がかなり(少なくともクロック周波数は16MHz→64MHz)向上するなど、かなりパワーアップしています。*5
 どうも、AIや機械学習micro:bitに応用することを見込んでいるようです。*6

 定価は変わりませんので、今から購入するなら、v2を選ぶべきでしょう。

状況

f:id:matsun-ri:20220130013449j:plain
電子工作

 最初は、試しに micro:bit単体と、micro:bitで使えるLED, マイク、ブザー、人感センサーなどがセットになったキットを別々に購入しました。

f:id:matsun-ri:20220130013534j:plain
ロボットカー(自動運転車)

 その後、距離センサー、micro:bit用モーター制御基板、タミヤのギヤボックスなどを買ってきて、寄せ集めでロボットカーを作りました。
 目の前の障害物を、自動的に避けて走る車です。

 モーターを動かしながらだと、距離の計測がうまくいかない*7ので、止まってから計測しています。
 計測に失敗したときはしばらく待機するように作っているので、そんな時に「もしも~し」とセンサーの前で手を振ると突然動き出したりするあたりが、子どもたちに人気の秘訣かもしれません。(たぶん)

 ワークショップの予算では、ソフトバンク系の会社が販売している『micro:bit アドバンスセット』を購入しました。
 micro:bit本体、本体を保護するカバー、単体で動かすための電池ボックス、スピーカー、距離センサーなどのほか、それらを活用するためのテキストがセットになっています。
 距離センサーが不要な場合は、省略されている『micro:bitはじめてセット』も販売されています。

 購入したセットに含まれている micro:bit は古いv1.5ですが、現在はv2にバージョンアップされている*8ほか、新たに温湿度センサーが追加されています。

 距離センサーとスピーカーを組み合わせれば、手を近づけたり話したりすると音階が変わるテルミンもどきや、いわゆる母ちゃん接近警報器が割と簡単に作れます。

 同梱されている距離センサーは、より正確には、ワニ口クリップやブレッドボード、はんだ付けなどが必要だったセンサー類の接続を、簡単にコネクタに差すだけで済むようにしたGroveシステムという規格(?)があり、それに対応した距離センサーと、micro:bitにGroveシステムのセンサーを接続するためのシールドのセットです。
 センサー、シールドともに、もともと電子工作パーツのショップなどで販売されている既製品なのですが、このシールドさえあれば、別途Groveシステムに対応した様々なセンサーを購入し、micro:bitで使うことができそうです。*9

 アドバンスセットは2台購入し、1台は主に展示用(テルミンでデモをしたりなど)とし、1台はその場で触ってもらえるように空けています。

サンプルコード

f:id:matsun-ri:20220130015323j:plain
落ちゲー

 MakeCode for micro:bit落ちゲーを作ってみました。

 micro:bitを左右に傾けることで上から落ちてくるドット(明/暗)を左右に動かし、同じ明るさのドットに重ねると消えます。
 消すとスコアが増え、スピードが上がります。
 ドットが上まで積みあがるとゲームオーバーで、得点が表示されます。

 スピーカー対応。ぜひ実機でお試しください。

https://makecode.microbit.org/_KVWCs2hHdHy0

*1:Bluetooth接続を使えば、スマホタブレットのアプリでプログラミングし、micro:bitに流し込めることになっているのですが、個人的にはつながらなくなるなどのトラブルがあったので、勧めていません。Bluetoothの機能が安定したといわれる micro:bit v2なら、うまくいくかもしれません。

*2:電源は必要です。100均で売られているような、単3乾電池2本で動くモバイルバッテリーで動きます。

*3:昔の『Inside (機種名)』とか『(機種名)テクニカル・ハンドブック』とかが楽しめる人は、読んだら楽しめると思います。僕はメモリマップなんて20世紀以来ぶりに見ました。

*4:v1.5では音を出すために、100均からスピーカーを買ってきてワニ口クリップで接続するひと手間が必要でした。それが工作感があってよかった、という意見もありそうですが……。

*5:『ビジュアル図解 micro:bitではじめるプログラミング&マイコンボード入門』によると、v1.5世代では LEDマトリックスを表示するためのCPU負荷がかなり高かったものが、v2では処理速度の向上で無理なく表示できるようになり、I/Oが余ってしまったそうです。

*6:https://microbit.org/new-microbit/

*7:micro:bit のせいではなく、モーターからのノイズ(モーター動作中は micro:bit のLED表示が激しく乱れます)と、センサーの選定を誤ったせいだと思います。電子工作で距離センサーとして使われる定番のセンサーである HC-SR04 は 5ボルトの電圧が必要ですが、micro:bitは3ボルトしか供給できません。5ボルトが供給できる他のワンボードマイコンIchigoJam)ではうまく動いていました。この記事を書いている現在は、互換品でもっと低電圧でも動く、US-100というセンサーが届くのを待っているところです。

*8:v1.5のセットは、おそらく在庫処分のため、ビックカメラの通販で一瞬だけ500円(!!)で売られたことがあるのですが、気づいた時にはもう売り切れていました。

*9:現行製品の『micro:bit アドバンスセット v2対応版』で追加された温湿度センサーは、Groveシステムに対応したセンサーのようです。