Skip to content

活動

AIライトスイッチ

中級 | MakeCode | LED表示, 加速度センサー, 無線 | AIの理解, 入出力, 機械学習

micro:bit CreateAI を使用して、手をたたくとライトがつき、手を振るとライトが消える、AI ライトスイッチを作ります。

やさしいプロジェクトガイド

ステップ 1: 理解する

仕組み

このプロジェクトでは、手をたたいたり振っったりしたことを認識する機械学習 (ML) モデルをトレーニングします。

このモデルを、手をたたくたびに「lightsOn」無線シグナルを別の micro:bit に送信し、手を振るたびに「lightsOff」無線シグナルを送信する MakeCode プログラムと組み合わせます。

受信側の micro:bit が「lightsOn」シグナルを受信すると、すべての LED が点灯します。 「lightsOff」シグナルを受信すると、LED ディスプレイの表示が消えます。

機械学習とは何ですか?

機械学習 (ML) は、コンピュータがデータに基づいて学習し、意思決定できる人工知能 (AI)の一種です。

ML モデルは、たとえば micro:bit をさまざまな方法で動かしたときに、さまざまな「アクション」を認識するなど、決定を下すのに役立つよう人がトレーニングします。

必要なこと

AIシステムは、人間が設計し、組み立て、テストしてから使う必要があります。 データを集めてMLモデルを訓練・テスト・改善し、コンピュータプログラムと組み合わせてAIを利用したスマートデバイスを作りましょう。 これを行うには、micro:bit と micro:bit CreateAI のWebサイトを使います。

ステップ2: プログラムする

必要なもの

データサンプルの収集

micro:bitのCreateAIでプロジェクトを開くと、「手を振る」、「拍手」、「静止」アクションのデータサンプルがいくつか表示されます。

micro:bitの運動センサーまたは加速度センサーを使って、独自の運動のサンプルを追加できます。

micro:bit CreateAI で、「接続」(Connect)ボタンをクリックして、データ収集用micro:bitを接続して指示にしたがいます。

ディスプレイにバツ印が表示されたmicro:bitが、手首に装着されている写真。

micro:bitを手首に装着します。 最初のアクションである「手を振る」をクリックし、「記録」をクリックします。 間違えた場合は、不要なサンプルを削除できます。 micro:bit のボタン B を押して記録を開始することもできます。

10秒間連続で記録して10個のサンプルを取得したい場合は、記録ボタンの横にある三点リーダーをクリックし、当該オプションを選択します。

次に、「拍手」と「静止」アクションの独自のデータサンプルを記録します。特に「静止」については、上向きや下向きなど、異なる姿勢でサンプルを収集するようにしてください。

モデルのトレーニングとテスト

「モデルを訓練」ボタンをクリックしてモデルを訓練します。 拍手、手を振る、静止といったアクションが推測されるか試してみましょう。micro:bitを他の人に装着してもらい(同じ手首に同じ向きで装着することを確認してください)、同様に動作するか確認します。

モデルの改善

ほとんどのモデルは、より多くのデータを学習させることで精度を上げることができます。 モデルの改善が必要な場合には、「← データサンプルを編集」をクリックします。

不適合と思われるデータサンプルを削除したり、さらにサンプルを追加したりできます。

モデルを再度トレーニングし、再度テストします。

モデルとプログラムをmicro:bitに入れる

micro:bit CreateAI で、「MakeCode で編集」(Edit in MakeCode)をクリックすると、MakeCode エディターでプロジェクトのプログラムが表示されます。

プログラムを修正してもいいですし、そのままで試すこともできます。 USBケーブルで最初のmicro:bitを接続し、MakeCode画面の 「ダウンロード」ボタンをクリックして、指示に従ってAIモデルとコードブロックをmicro:bitに転送します。 その後、別のmicro:bitに再度ダウンロードします。

送信側micro:bitにバッテリーパックを取り付けます。 受信側micro:bitはコンピュータに接続したままにしておくか、バッテリーパックに接続します。 送信側micro:bitを装着してテストしてみましょう。

プログラムの仕組み

プログラムが開始されると、無線グループは52に設定されます。 無線グループはチャンネルのようなもので、同じグループを使っているmicro:bitがメッセージを受け取ります。 0から255の好きなグループ番号を使用できます。 このプロジェクトを授業やプログラミングクラブで利用する場合、各ペアまたはグループがクラス内の他のグループとは違う無線グループを使用するよう呼びかけると良いでしょう。

「on ML... start」ブロックは、手を振り始めたり、拍手を始めたり、静止状態を開始したと送信側micro:bitのMLモデルが判断したときにトリガーされます。

拍手している場合、「on ML clapping start」ブロックにより、送信側micro:bitのLEDディスプレイにチェックマークが表示され、受信側micro:bitに無線メッセージ「lightsOn」が送信されます。 手を振っている場合、「on ML waving start」ブロックにより、送信側micro:bitのLEDディスプレイにバツ印が表示され、受信側micro:bitに無線メッセージ「lightsOff」が送信されます。

静止している場合、または送信側micro:bitが運動を認識できない場合、LEDディスプレイは表示が消え、無線メッセージは送信されません。

「on radio received」ブロックは、メッセージ「lightsOn」を受信した場合はmicro:bitの全LEDを点灯させ、メッセージ「lightsOff」を受信した場合は画面を消します。

「on radio received lightsOn / lightsOff」ブロックは、「Radio Broadcast」というMakeCode拡張機能からのものです。 このプロジェクトを自分でプログラミングしたい場合は、「拡張機能」をクリックし、「Radio broadcast」を選択するとブロックが見つかります。

評価

動きに応じてライトのスイッチが切り替わる精度はどうですか? 必要に応じて、どのように改善できそうですか?

この装置は実際の生活の中でどのくらい役立ちそうですか? 通常のライトスイッチと比べるとどうですか?

ステップ 3: 拡張する

  • 同じプログラムを複数のmicro:bitに読み込むことで、部屋の明かりを点灯できます。 誰かが別のmicro:bitを動かして電源を入れたり切ったりしているときは、もう一方のmicro:bitは動かさないようにしましょう。
  • 受信側micro:bitのライトが暗くなる、4つ目のアクションを追加しましょう。 「その他」の「LED」セクションにある「set brightness」ブロックを使用します。