マイクロビットと他のパーツの組み合わせ

 マイクロビットは他のパーツ(センサー等)と組み合わせることでできることの幅が広がります。今回は以下のPIECE(ピース)という商品を使います。

・PIECE https://www.elekit.co.jp/piece/

 PIECEは複数のモジュールを接続して処理を実現します。電源モジュールとセンサー系のモジュールや論理モジュール、出力/制御系のモジュールなどがあります。モジュールごとに色分けされており子供でも分かりやすいものになっています。また、間違って接続しセンサーなどを壊してしまわないように配慮されています。
 モジュールを、うまく組み合わせる事で様々なアイデアを実現してみようというのがPIECEです。今回はPIECEとマイクロビットを組み合わせたプログラムを作成します。

PIECEのモジュール

 最初にマイクロビットと組み合わせる前にPIECEだけで何か作成してみましょう。ここでは夜中に侵入者が来たら検知して音を鳴らすようにしてみます。
 いきなり完成したものを作るのではなくモジュールの動作を確認しながら組み立てていきます。

 PIECEには以下のモジュールがあります。カテゴリ別に色分けされています。

・赤モジュール
 電源を供給するモジュールです。電源は乾電池またはUSBから供給します。乾電池は電池ボックスに単三乾電池2本を入れて使用します。電源供給は乾電池かUSBのどちらかからしか行えません。

・オレンジモジュール
 センサー系のモジュールです。ショックセンサー、明るさセンサー、音センサーの3つがあります。

・緑モジュール
 結果を出力するモジュールです。LED、VIBE(バイブ)、MELODY(メロディ)、MOTER Driver(モータードライバー)の4つがあります。また、MOTOER Driverに接続して使うモーターとギアも同梱されています。
 緑モジュールは電圧によって動作が変わります。電圧を制御するにはCONTROL(コントロール)モジュールを使います。

・黄モジュール
 信号の制御を行うモジュールです。NOT(ノット)、AND(アンド)、OR(オア)、CONTROL(コントロール)、TIMER(タイマー)の5つが用意されています。このうちCONTROL(コントロール)モジュールは電圧を変化させることができます。

振動したら音を鳴らす

 最初に作成するのは振動したら音を鳴らすものです。
 まず、電源モジュールを用意します。電源モジュールには乾電池ボックスか、USB電源のどちらかをつなぎます。まだ、この時点では電源スイッチはオンにしないでください。

 次に振動を検知するモジュールを電源モジュールの左側につなぎます。続いて電源モジュールの右側にMELODYモジュールをつなぎます。これで振動できあがりです。

 電源スイッチをオンにしてみましょう。振動させると音が鳴るはずです。音が鳴らない場合は電池がなくなっていないか、きちんとモジュールがつながっているか確認してください。何度やっても駄目な場合はモジュールが壊れている可能性もありますので、その場合は販売元に聞いてみましょう。

暗くなったら音を鳴らす

 次に暗くなったら音を鳴らしてみます。先ほどつなげた振動モジュールを取り外します。振動モジュールの代わりにLIGHTモジュールを接続します。

 この段階で動作テストしてみましょう。光に反応するので、明るい時に音が鳴ります。侵入者検知では暗い時に音が鳴らないといけません。このような場合に便利なのがNOTモジュールです。これは動作を逆にします。つまり、ライトモジュールの後につなげると、明るさではなく暗さに反応するようになります。
 NOTモジュールをつなげたら動作テストしてみましょう。暗くなると音が鳴るはずです。

侵入者検知

 侵入者検知をするようにモジュールを組み合わせます。夜中に侵入してきた場合に音を鳴らして知らせます。
振動モジュールとLIGHTモジュールを組み合わせるのですが、二つの条件を満たした場合に動作させる必要があります。こういう場合は便利なのがANDモジュールです。
 図のようにモジュールを組み合わせます。これで、出来上がりです。動作テストしてみましょう。暗い状態で振動があると音が鳴ります。

 侵入者検知をして音を鳴らすという処理はPIECEでは非常に簡単に実現できてしまいます。扱えるモジュールの種類が増えれば可能性が広がるでしょう。

マイクロビットと組み合わせる

 それではマイクロビットでPIECEのモジュールを使ってみます。ここではマイクロビットのボタンを使って制御します。ボタンAで音が鳴り、ボタンBで音が止まるようにMELODYモジュールを制御します。また、どちらのボタンを押したのかが分かるようにLEDに数値を表示します。ボタンAなら1、ボタンBなら0を表示します。
 まず、マイクロビットとPIECEを以下のようにつなぎます。

マイクロビットのP0とモジュールの下
マイクロビットのGNDとモジュールの中央
マイクロビットの3Vとモジュールの上

 電源はマイクロビット側から供給されるので、PIECEの電源モジュールは必要ありません。接続したらマイクロビットで以下のようにプログラムを組み合わせます。

JavaScriptコードだと以下のようになります。

input.onButtonPressed(Button.A, () => {
    pins.digitalWritePin(DigitalPin.P0, 1)
    basic.showNumber(1)
})
input.onButtonPressed(Button.B, () => {
    pins.digitalWritePin(DigitalPin.P0, 0)
    basic.showNumber(0)
})
basic.forever(() => {

})

プログラムができたらマイクロビットに転送して動作を確認してみましょう。ボタンAを押すとPIECEのモジュールから音が鳴ります。ボタンBを押すと音が止まります。

音を変えることもできます。MELODYモジュールの前にCONTROLモジュールを接続します。このCONTROLモジュールのつまみを回すことで鳴る音が変わります。

PIECEでは出力モジュールが1つしかつなぐことができないため、LEDを点灯させながら音を鳴らすことができません。マイクロビットと組み合わせることで複数の出力モジュールを制御することができます。

LEDのモジュールとマイクロビットの端子もP0,3V,GNDに接続します。もし、うまく接続できない場合はP1端子など他の端子に接続しても構いません。その場合は、ボタンAが押されたら信号を出力する端子を間違えないように指定してください。

マイクロビット側のプログラムの変更は必要ありませんので、LEDモジュールとMELODYモジュールを接続したらボタンを押して動作を確認してみましょう。ボタンAを押すとLEDが点灯し音が鳴ります。

センサーからの入力

 次にセンサーからの入力を行ってみましょう。ここではSOUNDモジュールを接続します。SOUNDモジュールは音に反応します。人の声では反応しにくいので手を叩いたりして動作を確認します。

 マイクロビットのP0端子と3V、GNDをSOUNDモジュールに接続します。マイクロビットではセンサーからの入力値を、そのままLEDに表示します。以下のようにブロックを組み合わせます。

JavaScriptコードだと以下のようになります。

basic.forever(() => {
    basic.showNumber(pins.digitalReadPin(DigitalPin.P0))
})

プログラムをマイクロビットに転送して動作を確認してみましょう。大きな音を出すとセンサーが反応しマイクロビットのLEDに1が表示されます。

次にLIGHTモジュールに取り替えてみましょう。明るいときには1が表示され、暗いときには0が表示されます。

マイクロビットとPIECEのモジュールを組み合わせることで、より複雑な処理を実現することができます。PIECEのセンサーからの入力をマイクロビットを経由して無線で送信することもできます。振動センサーと明るさセンサーを取り付けたマイクロビットを置いておき侵入者がきたら無線(Bluetooth)で各部屋にあるマイクロビットに取り付けたMEDOLYモジュールで音を鳴らすこともできます。工夫次第で、さまざまな事に応用することができるでしょう。思いついたアイデアをマイクロビットとPIECEを使って実現させてみるとよい勉強になるはずです。

著者 古籏一浩
プログラミングをベースにして面白そうなものはとりあえずやってみるというスタンス。複雑なものよりシンプルで楽しめるものが好み。最近は30年前に移植したゲーム(mz-700版 SPACE HARRIER)の話などを書いたりしています。
著者サイト:http://www.openspc2.org/