見出し画像

(6)M5Stack BasicとM5Stamp Pico 、UIFlowでダイソー「ピンポンブザー」を早押し対応にする - 子機の解答権表示

※本記事は、ダイソー製品に関する改造記事です。本記事を参考にして同様の改造を行い、何が起こったとしても責任はとれませんので、もし参考にする場合は、自己責任でお願いします。予めご了承の上、お読みください。なお、該当製品の「使用上の注意」には、「分解や改造をしないでください。」とありますので、(株)大創産業の想定していない使用方法であることを付記しておきます。完全自己責任です。

前回はこちら

子機に解答権があるかどうか表示させる
(親機側の修正)

親機側で判定した、一番早かった子機を、すべての子機に教えます。
これにより、子機側では、自分に解答権があるかどうかを判定できるようになります。(5)で修正したばかりですが、更に修正します。

修正前
修正後

データを受け取ったとき、一番早かった子機のMacアドレスを、表示すると同時に、ブロードキャストでデータとして送り返します。

子機側の修正

子機側では、現在、親機からEspNowで何かデータが送られてきたら再び押しボタンスイッチを有効にする、リセット扱いになっています。これを、自分のMacアドレスがデータとして送られてきたら、「1番早かったのは自分だ(解答権がある)」と判定します。判定はひとまずLEDの緑点灯としておきましょう。
送られてきたデータが、自分のMacアドレスでないなら、「早押しに負けた」ということで赤点灯にしておきます。(赤と緑はドンピシャで色覚多様性にひっかかる部分なのですが、対応はひとまずおいておきます)
リセットの扱いですが、以前のプログラムでは、「データはなんでもよく、とにかく何か親機から送られてきたら」という扱いでしたが、親機のリセット送信部分を作成する際に、データ部分は「Reset」としておきました。これをそのまま活用します。つまり、データが「Reset」なら、リセット扱いにする。ということになります。LEDの色を黒(消灯)にする処理を足しておきます。(初期化処理として、Setup直下にも追加しておくとよい)

親機から送られてくるデータをまとめると、こうです

  • Reset
    リセット信号

  • 自分のMacアドレス
    解答権あり

  • 他人のMacアドレス(Resetでも自分のMacアドレスでもない)
    解答権なし

修正前
修正後

中学校技術・家庭科 技術分野における、情報の技術として

ここが中学校技術科としては肝の部分なのですが、この修正により、「ネットワークを利用した双方向性のあるコンテンツ」の要件を満たすようになります。中学校学習指導要領では、「ネットワークを利用した双方向性のあるコンテンツのプログラミングによる問題の解決」「計測・制御のプログラミングによる問題解決」を学習するよう求められています。学習指導要領技術・家庭科編 P53には、双方向性のあるコンテンツについて、

 なお,ここでいうコンテンツとは,デジタル化された文字,音声,静止画,動画などを,人間にとって意味のある情報として表現した内容を意味している。また,ネットワークを利用した双方向性とは,使用者の働きかけ(入力)によって, 応答(出力)する機能であり,その一部の処理の過程にコンピュータ間の情報通信が含まれることを意味している。利用するネットワークは,インターネットに限らず,例えば,校内LAN,あるいは特定の場所だけで通信できるネットワー ク環境も考えられる。

中学校学習指導要領解説 技術・家庭科編 P53

とあります。親機の液晶への、ボタンを押すのが早かった子機の表示や、子機の解答権あるなしをLEDの色の点灯で表すことは、「デジタル化された文字,音声,静止画,動画などを,人間にとって意味のある情報として表現した内容」であり、「コンテンツ」と解釈できます。また、広い意味では、「○」の表示をポンと上げて解答に名乗りを上げることそのものがもうすでにコンテンツです。

「ネットワーク」については、EspNowはWi-Fiネットワークを利用している通信方法ですから、「コンピュータ間の情報通信が含まれる」ことになります。

また、今までは、子機が一方的にMacアドレスを送り、親機が判定しているだけでしたが、親機からもフィードバックとして、一番早かったMacアドレスが返ってきます。それによって子機側でも処理を分けているため、「使用者の働きかけ(入力)によって, 応答(出力)する機能」に該当するでしょう。「双方向性」を満たすことができます。

この一連の記事は、学習指導要領が求めている「ネットワークを利用した双方向性のあるコンテンツのプログラミングによる問題の解決」の具体例のつもりで掲載しています。これは、個人的な意見というか、感想なのですが、よく、この例として教科書などでは、チャットプログラムを作成するような活動が挙げられることが多いです。ただ、この例が出るたび、(本当に個人的な感覚としては)チャットプログラムで、何を解決しようとしているのかをいつも疑問に感じているのです。もちろん、「遠くの人とコミュニケーションをとりたい」などになるのでしょうが、果たして、中学生がそれを問題と捉えて、「よし、プログラミングで解決しよう!」となるのか?と思ってしまいます。
チャットというか、コミュニケーションツールとしてLINEなどのSNSを活用することはあるけれど、自分自身がプログラミングして解決しようという気持ちにはならないのではないのかと思っています。

いや、分かるのです。サービスを実現しているテクノロジーの裏側でそれが、どのように動いてるかを実際に手を動かして理解していくことが大事なのも。自分自身がそのサービスをプログラミングしないにしろ、プログラミングによって問題は解決されていて、それを学ぶのは大事なことなのです。

ですが、「プログラミングによる問題解決」としては、ちょっと中学生にとって遠い問題ではないかとも思ってしまうのです。(もちろん、SNS利用という意味では近い問題なのですが、自分でプログラミングによって解決する問題では、ないのかな…と)。
学習指導要領解説 技術・家庭科編の同じページ(P53)の中では「内容の取り扱い」として、「問題を見いだして課題を設定し,自分なりの解決策を構想させる」ともあります。うーん…。

今回は、「ダイソーの『ピンポンブザー』を買ってきて、複数台で使うときに、どれが一番早かったのかを判断するのが難しい」というのが問題で、「早押しの順番が分かるもの」をM5Stack Basic、M5Stamp Pico、UIFlowを使い、「ネットワークを利用した双方向性のあるコンテンツのプログラミング」によって解決してみた、というような感じです。

個人的には、こういう展開の方が、しっくりくるんですよね…。

まぁ「問題解決」を自分個人の問題解決というわけではなく、社会全体の問題解決と捉えれば納得はできるんですけどね…。(全然別の話で、こういうのをリフレーミングといいます)

あぁ、ちなみに、この活動自体は「計測・制御のプログラミングによる問題解決」も含みます。だって、「ボタンが押しこまれている状態」を計測して、「LEDを点灯」するという制御をさせたりしてますからね。なんだったらはんだづけもしてますから「エネルギー変換の技術」や「材料と加工の技術(金属の溶接)」の内容も含んでたりします。(こっちはまぁ敢えて言えば)

まぁ、専門的すぎて、あんまり面白くない話ですみません。

まだまだ改良は続きます。

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