micro:bit シリアル通信のやり方(2)

2020年12月28日

この記事で説明すること

前回の記事では micro:bit からパソコンに対して、文字列データを送信する、温度情報を送信するといった micro:bit → パソコン方向の通信の実現方法について説明致しました。

今回の記事ではパソコン→ micro:bit に対して文字列データを送る方法について説明します。本記事では、文字列データをパソコンから micro:bitに対して送ることのみを説明しますが、例えば Raspberry Piといった別のコンピュータ・マイコンと接続する際の通信手段にも応用が可能な内容となっています。

micro:bit のプログラムを作成するその前に…

こちらの記事の読者の方はまずは自分で考えてみて、色々と動かしてみて下さい。前回の記事ではいくつかのサンプルプログラムを例として記載しましたが、やはり、何事も自分で動かす、自分で試してみること以上に理解を深める方法ありません。

とは言いながら、仕組みが分からないと難しい内容もあるので、まずは考えなければいけなことを2点記載します。

考えなければならないこと:

①どうやって micro:bit にデータを送信するか?

②どうやって micro:bit がデータを受信したことを知ることが出来るか?

どうでしょうか?

このような考え方は今後、プログラムを作成していく上でどうしても必要な内容です。次回以降ではもう少し複雑なプログラムの実装方法についても説明していく予定ですが、まずは今実現しなければならないことを、必要なパーツに整理し、それぞれをどう実現していくか、が非常に大切です。

では ①どうやって micro:bit にデータを送信するか?ですが、こちらは皆さん気付きましたでしょうか?前回の記事で記載した teratermというアプリケーション、これをそのまま使います。teraterm の画面上でパソコンのキーボードを叩いても一見、何も起きていないように見えるのですが、実は micro:bit にはちゃんとタイプした文字が送信されています。

②どうやって micro:bit がデータを受信したことを知ることが出来るか?については如何でしょうか?こちらは micro:bitでプログラムする内容です。

もしかして、受け取ったデータをLEDで表示すれば良いのでは?という考えに至ったアナタ。

正解です。今までこういったプログラムを書いたことがない人には難しいかもしれません。今思いつかなかったとして、何も気にする必要はありませんので、先に進めていきましょう。

micro:bit のプログラムを作成しましょう

では、早速プログラムしていきましょう。

1.)いつも通り、「最初だけ」のパーツにはハートを表示するようにしておきましょう。

ここでは新たに 変数 の概念を取り入れます。変数のパーツリストから変数を選択し、「変数を追加する」を選択して下さい。こうすると作成する変数の名前を聞かれるので、「受信データ」としてきましょう。

すると、以下のような画面表示になります。変数という概念を知らない方は、この時点では何をやっているかのか分からないかもしれませんが、一旦、このまま進めて下さい。変数については後ほど簡単に説明します。

次にこの「変数 受信データを 0 にする」のパーツを右のエリアに移動させ、「ずっと」のパーツに組み合わせて下さい。

それから、「シリアル通信」のパーツリストから「シリアル通信 文字列を読み取る」を選択し、これを上記のパーツの 0 のところに置いて下さい。一見、置けるの?という感じがしますが、ちゃんと置けるようになっています。

ここまでが teratermから文字列データを表示するための手順です。次はこの文字列データを表示するためのプログラムです。「基本」のパーツリストから「文字列を表示」のパーツを上記で置いたパーツの下に配置して下さい。

ここから…先ほど作成した 変数 を使います。「変数」のパーツリストの一番上に「受信データ」のパーツがありますので、これを「文字列を表示」パーツの"Hello"のところに置きましょう。

ここで一度、プロジェクト名を「シリアル受信」としてバイナリファイルを micro:bit にダウンロードしてみましょう。

ダウンロードが出来たら、前回同様、teraterm を立ち上げて、通信スピードを 115200 に設定し、teraterm の画面でキーボードをタイプしてみましょう。

パソコンで “a" をタイプしたと時には micro:bit のLEDに"a"が表示され、"D"とタイプした時には LEDに"D"が表示されているかと思います。ちゃんとパソコンから micro:bit に文字列データが送れていることを確認出来ましたね。

少しだけアレンジを加えたものが以下です。

こちらは micro:bit が受信した文字列を LEDに表示した後、その文字列をパソコンに送り返すという内容です。実際に動作を確認してみると、teratermの画面上にタイプした文字列の表示されることが確認出来ると思います。出来ることがたくさんあって、micro:bit は面白いですね!

変数について

最後に変数について簡単に紹介しておきます。プログラムを書いたことがある人にとっては馴染みのあるものなので特に意識をする必要はありませんが、変数って何だ?と言いながらここまで進めてこられた方もいるかと思います。

変数とは…一時的なデータの入れ物です。

今回の例では、受信した文字列を一時的な”受信データ”という名前の変数に格納し、それをLEDへの表示、文字列の送信に利用しました。意図的にその変数の中身を書き換えることがなければ、同じように繰り返し使うことが出来ます。

また、後の記事で使用例について書いていく予定ではありますが、例えばあるプログラムのブロックを実行するかどうかの判定や、5回だけこのプログラムのブロックを実行したい、といったようなケースでも変数を使用することが多いのです。

変数についてはまた、次回以降の実際の使用例を元に、一緒に考えていきましょう。

今回の記事はここまでとします。

何かご不明点がありましたら、何でも気軽にご質問下さい。