新機能「micro:bit CreateAI」を使った AI・機械学習の仕組みをフルカラーLED と組み合わせてみた【速報版】【micro:bit】

この記事は後から、「[micro:bit Advent Calendar 2024](https://qiita.com/advent-calendar/2024/microbit)」の 5日目の記事としても登録しました（記事は 11月後半に書いたものです）。

## はじめに
どうやら、今日出たばかりらしい micro:bit の下記の新機能、これを早速試したのですが、関連する情報を記事に書いてみました！

https://x.com/sarahatamicrob1/status/1859188215552590308

新機能でできることは micro:bit のセンサーのデータを使った「機械学習モデルの作成」と「機械学習モデルを使った、あらかじめ学習させた動き（センサーデータの特徴）の識別」になります。
（センサーデータを対象にした、多クラスの分類になるかなと思います）

### 試した内容
自分がやったお試しでは、「静止」「水平方向の揺れ」「垂直方向の揺れ」の 3つの動きを学習させ、それぞれにフルカラーLEDテープが「緑」「レインボー」「青」の色で光る処理を紐付けました。

<iframe width="560" height="315" src="https://www.youtube.com/embed/yXaw8_Ih6Rc?si=233FEt_54zHWlhXM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

今までだと、「揺さぶられた時」の判定で揺れを判別できてはいましたが、方向の異なる揺れをダイレクトにそれぞれ区別することはできなかったかと思います。
それが AI・機械学習の新機能を使うと、上記のとおり良い感じに動いています。

今回、まずは速報版ということで、上記の新機能のざっくりな情報を書いてみます。

## 新機能について
### 自分が試した際の画面の抜粋
新機能を自分が試した時の主要な画面を、まずは少し掲載してみます。

#### 入り口となる部分
最初の入り口となるページは、以下となるようです。
https://createai.microbit.org/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/5e12eb52-7eea-9946-5b56-5f88e0075c31.png)

この画面の「Get Started」ボタンを押すと、次のページへ進めます。

次の画面では、以前やった内容がある場合は、それを読みこむこともできるようです。最初は、そういったものがないと思いますので、「New session」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/4b4f52ce-f05c-ee7a-20e6-4cf52a00579a.png)

#### 機械学習モデルの作成
機械学習モデルの作成は、以下のページで行います。今回は速報版ということで、一部の詳細は省略して書いています。
https://createai.microbit.org/data-samples

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/29d7a1e1-a97d-908d-0c1c-fcbe96399c22.png)

このページでは識別したい動きを記録して、機械学習モデルを作成します。

画面中央下のほうにあるボタンを操作したりして、micro:bit との接続の操作を行います。

また、画面左下のほうにある「Add action」ボタンを押して、その追加した action に名前をつけます。さらに、名前をつけた後に表示される記録用のボタン（赤い Record ボタン）を押してから動きを覚えさせる、という流れになります。

ここでは、冒頭で書いた 3つの動きを学習させ、機械学習モデルの作成をしました。その時の画面は以下になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/98569713-64bb-48c9-04e5-c9289a17f9ec.png)

画面上に適当な名前の 3つ（「test1」「test2」「test3」という名前）で、それぞれ 4回ずつの動きのデータを記録しています。

一番上は静止状態、真ん中は横方向の揺れ、一番下は縦方向の揺れを記録したものです（※ micro:bit の「LED の面を天井方向に向けた時」の方向です）。

ここで動きを記録して、機械学習モデルを作成したら、次はコーディングです。

#### コーディング
先ほどの機械学習モデルを作成ができたら、今度は MakeCode でのコーディングです。機械学習モデルを作成した後、画面上で操作をして MakeCode の画面に遷移できます。

画面を遷移した直後に、既に先ほどの機械学習モデルを使う処理ブロックが置かれていました。通常の MakeCode のページとは URL が異なるページでしたが（URL ⇒ https://createai.microbit.org/code ）、拡張機能の読み込みも普通に行えました。

そこで、Neopixel の拡張機能を読みこんで、フルカラーLEDテープを使えるようにして、冒頭にある光り方をするように作ってみました。組んだブロックの全体は、以下の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/18558a61-6c27-6f03-0210-570ccb7e10d5.png)

動きと光り方の関係を書くと、以下のようになります。

- micro:bit の動きと、フルカラーLEDテープの色の関係
   - 「静止」 - 「緑」
   - 「水平方向の揺れ」 -  「青」
   - 「垂直方向の揺れ」- 「レインボー」

あとは、作成したものを micro:bit に書きこんで使えば OK です。

#### 新ブロック
上で使った MakeCode には、「Machine Learning」のブロックがあります。

今回使ってみたもの以外にも、以下のようにいくつかのブロックが用意されているようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/f24d376a-ac37-5afa-8b86-e6805a50baa6.png)

### 公式の情報
出たばかりの新機能は、公式のページ・公式の説明動画は以下になります。公動画では、機械学習モデルの作成から利用までの流れを示してくれています。

●micro:bit CreateAI | micro:bit
https://microbit.org/get-started/user-guide/microbit-createai/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/821c4e1f-9fc2-7cc3-6e51-89e2eb174f99.png)

<iframe width="560" height="315" src="https://www.youtube.com/embed/yWl3WxDE6QI?si=LbAQsFfJIrtpjDzS" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## おわりに
今回は速報版ということでざっくりな内容しか書いてないですが、詳細は、また別の機会で記事にしようと思います。

### 【余談】 micro:bit とフルカラーLEDテープの組み合わせ
余談になりますが、今回使った micro:bit とフルカラーLEDテープの組み合わせは、個人活動でやっているモノ作り活動でよく使う組み合わせです。

過去には、例えば以下のようなものを試作したりしています。

#### 試作の例1

<iframe width="560" height="315" src="https://www.youtube.com/embed/8-Bhf8gKN7Q?si=rKrmaVKIqyEzfry9" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

#### 試作の例2

<iframe width="560" height="315" src="https://www.youtube.com/embed/jNVB8PA1VDU?si=VcuZCifPFm51gWhU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

#### 試作の例3

<iframe width="560" height="315" src="https://www.youtube.com/embed/s4auEwHEjlQ?si=kvib5eYhPpljVu9r" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

### 【12/3 追記】 サヌキテックネットさんの記事
micro:bit に関する様々な情報を書かれているサヌキテックネットさんが、「micro:bit CreateAI」に関する記事を複数投稿されて始めているようなので、その記事のリンクを掲載してみます。

●micro:bitで機械学習を手軽に micro:bit CreateAI | micro:bit Lab.【マイクロビット】
　https://sanuki-tech.net/micro-bit/CreateAI/

●micro:bitの動きを学習してプログラミングに活用 micro:bit CreateAI（加速度センサー編） | micro:bit Lab.【マイクロビット】
　https://sanuki-tech.net/micro-bit/CreateAI/createai-3-axis/

●micro:bitの動きを学習してプログラミングに活用 micro:bit CreateAI（プログラミング編） | micro:bit Lab.【マイクロビット】
　https://sanuki-tech.net/micro-bit/CreateAI/createai-makecode/