
Wi-FiとBluetooth搭載の小型マイコン「ESP32」は、電子工作やIoT開発の定番となった。多くのマイコンボードに採用され、最近ではAI連携や画像解析に対応した製品も登場している。

Seeed Studioの「XIAO ESP32S3 Sense」は、その代表例といえる存在だ。1600×1200解像度のOV2640カメラセンサーとデジタルマイクを搭載した拡張ボードを組み合わせてもなお「XIAO ESP32S3」と同等の親指サイズをキープ。外部接続可能な13個のGPIOによる他ハードとの連携や拡張性、国内では2500〜3000円程度という手頃な価格で入手できる点も魅力だ。
さらに、Seeed StudioのAIプラットフォーム「SenseCraft AI」と組み合わせれば、カメラを用いた物体検出や分類の実験を、ブラウザからすぐに始められる。この記事では、起動からサンプル動作、そして自作のAIモデルのデプロイまでを試し、この小さなボードに秘められた可能性を探っていく。
親指サイズのボードと、おなじみの開発環境

XIAO ESP32S3 Senseの同梱物は上の通り。Espressif製のESP32-S3R8チップを搭載したボード本体(XIAO ESP32S3)と、OV2640カメラセンサーとデジタルマイク、microSDカードスロットなどを備えた拡張ボードが専用コネクタで接続されている。
そのほか、冷却用のヒートシンクとWi-Fi/Bluetoothアンテナ、拡張ボードやセンサーに接続するためのピンヘッダーが付属している。用途に応じて取り付けよう。

XIAO ESP32S3 Senseの開発環境にはArduino IDEが推奨されている。公式Wikiのガイドラインに従い、セットアップを済ませておこう。


XIAO ESP32S3 Senseは本体と拡張ボードを合わせて外部からアクセス可能な16ピンを持ち、そのうち13ピンがGPIOとして制御可能だ。Arduino系のボードでよく見られるように、本体にはビルトインLEDも備わっており、サンプルスケッチ「Blink」を書き込めば点滅動作を確認できる。Lチカが成功した瞬間、ぐっと身近に感じられるだろう。

ブラウザベースのAIプラットフォーム SenseCraft AI
XIAO ESP32S3 SenseにはArduino IDEでの開発サンプルも用意されているが、今回はSeeed StudioのAIプラットフォーム SenseCraft AIを使った画像解析にトライする。

ブラウザからアクセスでき、トレーニング済みモデルの利用や自作モデルの開発、さらに対応ハードウェアへのデプロイまで完結できるサービスだ。
公開済みのモデルをボードに書き込む
まずは、SenseCraft AIに公開されている事前トレーニング済みのモデルを動かしてみよう。アカウント登録後、メインメニューの「ビジョンワークスペース」から「XIAO ESP32S3 Sense」を選択する。


次にPCとXIAO ESP32S3 SenseをUSBケーブルで接続し、ワークスペース画面左上からデバイスの「接続」を選択。表示されたシリアルポートを選べば準備完了だ。

ワークスペースの「モデルを選択」をクリックすると、SenseCraft AIで公開されているAIモデル一覧が表示される。人物検出や顔認識といった定番から、いちご検出やリンゴ検出といったユニークなものまで幅広く揃っている。
試しに「顔認識(Face Detection)」を選択してデプロイすると、モデルがXIAO ESP32S3 Senseに書き込まれ、リアルタイムのプレビュー画面が立ち上がった。カメラが捉えた映像と検出結果が表示され、画面内の顔の有無や信頼度(100点満点で何点か)が視覚的に確認できる。

検出結果をハードと連携

SenseCraft AIでは、この検出結果をGPIO出力に紐づけることも可能だ。メニューの「出力」から「GPIO」を選ぶと、検出オブジェクトと信頼度の閾値をトリガーとして、GPIOの状態を設定できる。距離センサーや照度センサーを使うような感覚で、画像検出結果を条件として扱えるのだ。

試しに「Face」が信頼度50以上で検出されたら、ビルトインLEDをオンにする設定を作成し、ボードに書き込んでみる。

その結果がこちら。顔を認識すると、XIAO ESP32S3 Senseのオレンジ色のLEDが点灯した。画面上での認識だけでも興味深いが、物理的なアクションとして返ってくる瞬間には、より新鮮な驚きがある。
自分で鍛えたAIモデルでお札発見ロボを作る
SenseCraft AIでは、自分で画像解析モデルを作ることもできる。今回はGPIO連携も組み合わせて、高額紙幣を見つけたら動いて知らせてくれる装置を作ってみよう。

分類モデルのトレーニング

まずはSenseCraft AIの上部メニューから「トレーニング」を選択。ここでは「分類」と「オブジェクト検出」が選べるが、今回は「分類」を利用する。

学習用の画像サンプルは、WebカメラやXIAO ESP32S3 Senseから直接撮影して登録できるほか、既存画像をアップロードすることも可能だ。今回は1万円札と1000円札をそれぞれ20枚ずつ撮影し、Class 1とClass 2に登録した。

さらに「お札がない状態」を表すClassも追加。ここではXIAO ESP32S3 Senseのカメラと録画機能を活用した。カメラで風景を映しながらボタンを長押しするだけで、学習用の静止画として切り出されていくため、効率的にデータが集められる。

必要なClass分だけ画像を登録したら「トレーニング開始」を実行する。しばらく待つと分類結果のプレビューが反映され、見せたお札の種類によってリアルタイムにパーセンテージが変わる様子を確認できた。
今回の学習データは各20枚と少なめだったが、それでもなかなかの精度で分類されている。撮影枚数やバリエーションを増やせば、より実用的なモデルに改善できるだろう。

内容に問題がなければ、マイモデルとしてSenseCraft AIに登録する。画面の指示に従えば、特につまずくことなく進められるだろう。基本的には非公開モデルとして扱われるが、パブリック化のリクエストも可能なので、腕に覚えがあるなら挑戦してみても面白いだろう。
お金を見つけてハイになる装置

学習させたモデルを活用し「1万円を検出したら知らせてくれるハード」を仕上げていこう。モデルが1万円を検出すると、XIAO ESP32S3 SenseのGPIOピンの一つがLOWからHIGHに切り替わり、LEDとモーターが動作する回路を制作。ボードが小型なこともあり、ブレッドボード1枚にミニマムな仕組みを収められた。

先ほど同様、SenseCraft AIのビジョンワークスペースからボードと接続したら、今度はモデルから「マイモデル」を選び、自分が制作したモデルを選んで書き込む。

左側メニューの「出力」から「GPIO」を選択し、トリガーとアクションを設定していく。今回はオブジェクト「Ichimanen(1万円)」の信頼度が50を超えたら、GPIO3をHIGHにし、それ以外ではLOWになるよう設定し書き込んだ。
なお、SenseCraft AIで制御できるGPIOの数は限られている。利用可能なのは、ビルトインLED、本体のGPIO1・2・3、カメラモジュール側のGPIO41・42の計5カ所のみ。制御は「LOW(低レベル)」と「HIGH(高レベル)」に限定されるため、より複雑な処理を行いたい場合はArduino IDEなど別の開発環境を検討しよう。


こうして「1万円を見つけたら元気よく動くロボ」が完成! お札の位置を合わせないと検出してくれなかったり、紙幣が巻き込まれると止まってしまったりと、試行錯誤の余地は残る。しかしこれこそが、単なる近接センサーとは異なる、画像解析ならではの経験とも言えるだろう。自分で作ったモデルが動いていると思えば、感慨もひとしおだ。
まとめ
XIAO ESP32S3 Senseを実際に使ってみて感じたのは、Arduino IDEを中心とした開発環境の扱いやすさだ。電子工作経験者であればこれまでの延長として、ESP32シリーズの知見も生かした開発に挑戦できるだろう。
加えて、SenseCraft AIによるブラウザベースのモデル開発とデプロイのスムーズさも印象的だった。撮影した画像をそのまま学習データとして利用できる手軽さや、検出結果をGPIOに直感的に結びつけられる操作性は、AI画像解析に初めて触れるユーザーの敷居も下げてくれる。短時間の授業やワークショップでも、AIの仕組みや醍醐味を実感できるだろう。
今回のハンズオンでは触れきれなかった、内蔵マイクによる音声入力、microSDカードへのデータ保存、外部アンテナによる通信安定化、SenseCraft AIを介したMQTT連携といった機能など、本格的なIoT開発に役立つ機能も多数備えている。コンパクトさと拡張性を兼ね備えたボードとして、気軽な体験から実運用を見据えたプロトタイピングまで幅広く活用できる、心強い一枚だ。
本記事はSponsored記事です。
提供:Seeed Studio / Seeed 株式会社