見出し画像

M5StickC Plus とUIFlowでプログラミング(1) - 前提

はじめに

 今回は前提の話になります。

今後、自分の備忘録を兼ねて、具体的な話をしていこうと思っています。

 技術・家庭科の技術分野では「計測・制御」としてプログラミング教育を行うことになっています。この際に、教材の選択をどうするか、ここ何年も頭を悩ませてきました。

 ハードウェアとしての教材、プログラミング環境、利用するにあたっての制約など、それぞれ利点もあれば欠点もあり、選択が難しいです。特に、自分が気にしているのは、学校での学習で終わらずに、教室から離れたときに自力でなんとかできる、入手性がある程度あることや、将来性があることです。
 また、学習においては、生徒が扱う上で、扱いやすさも重要です。

 以下に、自分が実践してきた一覧を示します

画像1

 2020年は、2年次に学習を行った子たちが3年生になったので、行いませんでした。新型コロナウイルス感染症による休校のため、余裕もありませんでした。

Arduino

 はじめは、Arduinoを使用していました。技術科の教材としては、いくつか、プログラミング学習専用に開発された教材があるのですが、専用教材はよくできている反面、一般に流通してはいません。学校での学習後に興味を持った子が、とっつきやすいように汎用性のあるものは何かと考えた結果採用をしました。

 Arduinoの利点としては汎用性があることと、実際のプログラミング事例がかなりあることが挙げられるでしょう。また、後述するmicro:bitに比べてライブラリが充実しているので、使いたいモジュールを自分で探してきて教材化できると思います。

 実際、INA226という電流・電圧計測モジュールと、LCD表示モジュールを使って、電流・電圧の計測を行って、中和滴定(理科)の授業で使ったり、BME280という温湿度・気圧計測モジュールやLCD表示モジュール、SDカードモジュールをつかって、百葉箱での継続観察や、フラスコ内で雲を発生させる実験での気圧や気温の低下などを確認するような応用が効きました。(プログラムは生徒作成ではなく、教員側で作成しています)

 逆にArduinoの欠点としては、ArduinoIDEで使用されている言語がC言語ベースの独自言語ということで、テキストベースでのプログラミングになり、中学生にはやや敷居が高いことが挙げられます。個人的には、本気でプログラミングを学習するなら、プログラミングをテキストベースで行うことにこそ意義があると思ってはいますが、特に公立中学校で広くプログラミングを扱う場合にはビジュアルプログラミングが妥当だろうと思います。

 この点を解決するために、GoogleBlocklyをベースにしたBlocklyDuinoEditorというサイトを使いました。ビジュアルプログラミングである、ブロックプログラミングでArduinoのプログラミングができ、コードを自動生成してくれる、というものです。授業の中では、吐き出したテキストをコピペで貼り付けるような運用のしかたをしました。もちろん、吐き出したテキストを直接編集してもOKです。自分の理解度や技能に応じたプログラミングができるのではないかと思います。

 Arduinoのもう一つの欠点は、プログラムを転送するのに、COMのシリアル通信をさせる都合上、学校のPCにドライバを入れなければならないこと、ArduinoIDEのインストールを行わなければならないことです。

 当時はインストールすること自体は可能だったのですが、環境復元ソフトが環境を復元してしまいますので、毎回授業前に全端末に、インストールする必要がありました。インストールされた状態に復元するようにするには、うちの自治体では施設を管理する部署に申請すれば管理者権限の持った業者が作業をすることで可能だったのですが、申請してから実際に業者が作業するまで日数が必要でした。また、申請後に「ArduinoIDEがインストールされた前例がない」とのことで、環境や動作検証に更に日数が必要でした。それまでは毎回朝早く来て、全端末にインストールするという力技でしのぎました。(現在は、インストール権限もなくなりました)

micro:bit

 今の学校になってからはmicro:bitにしました。

 micro:bitの利点は基本USBメモリとして動作し、プログラミングもMakeCodeページでするので、USBメモリが使えれば既存の環境に変更を加える必要がない、ということです。ただ、「プログラミング → ファイルダウンロード → ファイル書き込み」の作業が必要なので、手間は増えます。これも良し悪しで、一旦ファイルを作らなければ書き込めないので、書き込んだファイルを提出させれば、評価に活用できるということもありますが、見るにはMakeCodeページの「開く」からいちいち開かないと見られないので、手間はかかります。WebUSBの規格を利用すれば直接Chrome → micro:bit間でファイル作成から転送までやってくれますが、今度は、プログラミング内容の評価のためにファイル保存や提出の話をしないといけなかったりして、2度手間になるような感じでした。このあたりは、Arduinoはいやが上にもテキストベースでのプログラミングですから、テキストファイルを提出させれば評価でき、テキストファイルは基本、どんな環境でも開けるので問題にはならなかった部分です。
 プログラミングは基本MakeCodeでブロックプログラミングですから、バイナリファイルができます。開くにはMakeCodeページで開かなければならないので素のままではどういうファイルか把握できないです。

※2023/9/24追記
ファイル提出に関しては簡便な方法がMakeCodeにはあります。
いつからあるかは分かりませんが、シェアリンクを共有させる、という方法です。詳しくは以下の記事の中盤に載せてあります。
この点だけ考えると、micro:bitの利点が際立ちます。
https://note.com/singtaro/n/n32aafe9afb61?magazine_key=mc7b46c15792e

 また、micro:bitがArduinoに比べてよかったのは、いくつかのセンサや25LEDを標準搭載していてすぐに活用できたことです。Arduinoでは何をするにも外付けでしなければなりませんでした。まぁ、後々のことを考えれば(どうせ外部機器の計測・制御をさせる)別にそれでもよかったのですが入り口として、いくつかのセンサやアクチュエータを備えているのは強みでした。

 micro:bitの欠点は、出力機構の貧弱さと外部機器のつなげにくさでした。標準の出力機構は25LEDで、これは1桁の数字くらいならなんとかなりますが、2桁以上はスクロールするので、一覧性に乏しいです。外部機器も、0~3のリング(GPIO)は標準でもつなげますが、ちょっと高度なことをしようとすると、ブレイクアウト基板が欲しくなります。結局有機ELディスプレイを外付けで使用することにしました。また、ライブラリもありますが、Arduinoよりは貧弱なので、前述のINA226とかもそのままでは直接micro:bitからは叩けません。まぁ自分でライブラリ作ればよいんでしょうけれど(micro:bitもI2C通信自体はサポートしているので理論的には可能)そこまでして…という気持ちもあります。micro:bitの出力の貧弱さは、v2.0でスピーカーが追加されて多少改善されてはいます。

 この、出力が貧弱というのは、実は、結構深刻で、新しい学習指導要領では、「計測・制御」以外に「双方向性のあるコンテンツ」というものも技術で扱っていかなければならなくなりました。その際に、表示が貧弱なのは何をするにしても難しくなってしまいます。

M5StickC Plus

 さて、本年度は、M5StickC PlusにUIFlowを組み合わせて使用してみようと思っています。まだ使用していないので、利点と欠点は今思いつく範囲になります。

 M5StickC Plusの利点は外部出力機構がリッチだということです。グラフィック液晶、ブザーが標準で利用でき、普通のLEDや赤外線LEDも搭載されています。また、バッテリ内蔵だというのもポイントが高いです。Arduinoも、micro:bitも、単独動作させるには外部電源を繋げなければなりませんでした。

 逆に、M5StickC Plusを本校で活用する際の難点は、無線ベースにせざるを得ないということです。M5StickC Plus自体は有線でも扱えるようになっていますが、今回、UIFlowを使用するにあたって、USB経由ではなく、Wi-fiで扱おうと思っています。これは、Arduinoのときのように、学校のコンピュータにソフトウェア・ハードウェア的な変更が効かないため、そうせざるを得ないのですが、問題は接続先のWi-fiが学校のものが使えないというところです。

 学校のネットワークは接続端末がコントロールされていて、他のネットワーク機器を接続できないようになっています。まぁ当たり前ですし、それはしょうがないのですが、結果、IoT機器もつながらないことになるので、IoT機器を使用することが難しいです。

 したがって、今回は無線ネットワークを独自で用意して、M5StickC Plusは、そっちでつなげることで解決させることにしました。

 その点さえ解決できればUIFlowで、ビジュアルプログラミングもできます。ライブラリについては、micro:bitと同様に、Arduinoほどは揃ってはいないのですが、その代わり、HATやUnitといった周辺機器が充実しているので、授業で扱う分には問題なさそうです。INA226とかは難しいかな…。

※2023/9/24追記
M5Stack社製品は、毎月のように新製品を発表しています。HATやUnitが充実しているのはそのためです。

その他

 採用を見送ったものを挙げます。
 この内容については、あくまで「自分は」見送った、ということで、製品としてはどれもよくできていると思います。

Scratch
 有名なプログラミング環境。ビジュアルプログラミングの元祖といってもいい。個人的にあまり詳しくないので見送った。
 様々なハードウェアやサービスとの連携がとれる(はず)。

MESH
 教科書にも乗っているSONY製センサモジュール群。児童・生徒が簡単に扱える点は利点である。ただ、中学技術の「計測・制御」の学習内容との兼ね合いや、一人ひとりに扱わせるには単価が高いので見送った。

※2022/8/8追記
 実際にやってみての雑感を書きました。



この記事が気に入ったらサポートをしてみませんか?