Arduino感覚でAI開発──2000円台のカメラ付きボード「XIAO ESP32S3 Sense」でお札検出ロボをつくる

00_header

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

01_product
Seeed Studio 公式Wikiより引用

Seeed Studioの「XIAO ESP32S3 Sense」は、その代表例といえる存在だ。1600×1200解像度のOV2640カメラセンサーとデジタルマイクを搭載した拡張ボードを組み合わせてもなお「XIAO ESP32S3」と同等の親指サイズをキープ。外部接続可能な13個のGPIOによる他ハードとの連携や拡張性、国内では2500〜3000円程度という手頃な価格で入手できる点も魅力だ。

さらに、Seeed StudioのAIプラットフォーム「SenseCraft AI」と組み合わせれば、カメラを用いた物体検出や分類の実験を、ブラウザからすぐに始められる。この記事では、起動からサンプル動作、そして自作のAIモデルのデプロイまでを試し、この小さなボードに秘められた可能性を探っていく。

目次

親指サイズのボードと、おなじみの開発環境

02_open

XIAO ESP32S3 Senseの同梱物は上の通り。Espressif製のESP32-S3R8チップを搭載したボード本体(XIAO ESP32S3)と、OV2640カメラセンサーとデジタルマイク、microSDカードスロットなどを備えた拡張ボードが専用コネクタで接続されている。

そのほか、冷却用のヒートシンクとWi-Fi/Bluetoothアンテナ、拡張ボードやセンサーに接続するためのピンヘッダーが付属している。用途に応じて取り付けよう。

03_unit
拡張ボードとアンテナを取り付け、本体のUSB-C端子にケーブルを接続。やはり小ささは他のボードと比べても際立っている。

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

04_arduino
ボードマネージャーから「esp32」のバージョン2.0.8以上をインストール
XIAO_PIN
公式Wikiより引用

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

06_Lchika
実家のような安心感

ブラウザベースのAIプラットフォーム SenseCraft AI

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

07_senseCraft

ブラウザからアクセスでき、トレーニング済みモデルの利用や自作モデルの開発、さらに対応ハードウェアへのデプロイまで完結できるサービスだ。

公開済みのモデルをボードに書き込む

まずは、SenseCraft AIに公開されている事前トレーニング済みのモデルを動かしてみよう。アカウント登録後、メインメニューの「ビジョンワークスペース」から「XIAO ESP32S3 Sense」を選択する。

08_workspace
他にも「Grove Vision AI Module V2」や「reCamera」などのハードウェアが選択できる
09_connect

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

10_model

ワークスペースの「モデルを選択」をクリックすると、SenseCraft AIで公開されているAIモデル一覧が表示される。人物検出や顔認識といった定番から、いちご検出やリンゴ検出といったユニークなものまで幅広く揃っている。

試しに「顔認識(Face Detection)」を選択してデプロイすると、モデルがXIAO ESP32S3 Senseに書き込まれ、リアルタイムのプレビュー画面が立ち上がった。カメラが捉えた映像と検出結果が表示され、画面内の顔の有無や信頼度(100点満点で何点か)が視覚的に確認できる。

11_faceDetect

検出結果をハードと連携

12_GPIO

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

13_GPIO_more
ビルトインLEDのほか、5カ所のGPIOを選択可能

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

14_LED_on

その結果がこちら。顔を認識すると、XIAO ESP32S3 Senseのオレンジ色のLEDが点灯した。画面上での認識だけでも興味深いが、物理的なアクションとして返ってくる瞬間には、より新鮮な驚きがある。

自分で鍛えたAIモデルでお札発見ロボを作る

SenseCraft AIでは、自分で画像解析モデルを作ることもできる。今回はGPIO連携も組み合わせて、高額紙幣を見つけたら動いて知らせてくれる装置を作ってみよう。

15_image
ChatGPTにイメージ図を出力させたら、あやしすぎる偽札が生成された

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

16_training

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

17_osatsu

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

18_noMoney_fix

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

19_moneyBunrui

必要なClass分だけ画像を登録したら「トレーニング開始」を実行する。しばらく待つと分類結果のプレビューが反映され、見せたお札の種類によってリアルタイムにパーセンテージが変わる様子を確認できた。

今回の学習データは各20枚と少なめだったが、それでもなかなかの精度で分類されている。撮影枚数やバリエーションを増やせば、より実用的なモデルに改善できるだろう。

20_myModel
マイモデルとして登録が完了

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

お金を見つけてハイになる装置

21_breadboard

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

22_mymodel

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

23_GPIO

左側メニューの「出力」から「GPIO」を選択し、トリガーとアクションを設定していく。今回はオブジェクト「Ichimanen(1万円)」の信頼度が50を超えたら、GPIO3をHIGHにし、それ以外ではLOWになるよう設定し書き込んだ。

なお、SenseCraft AIで制御できるGPIOの数は限られている。利用可能なのは、ビルトインLED、本体のGPIO1・2・3、カメラモジュール側のGPIO41・42の計5カ所のみ。制御は「LOW(低レベル)」と「HIGH(高レベル)」に限定されるため、より複雑な処理を行いたい場合はArduino IDEなど別の開発環境を検討しよう。

24_movA_fix
25_movB_FIX

こうして「1万円を見つけたら元気よく動くロボ」が完成! お札の位置を合わせないと検出してくれなかったり、紙幣が巻き込まれると止まってしまったりと、試行錯誤の余地は残る。しかしこれこそが、単なる近接センサーとは異なる、画像解析ならではの経験とも言えるだろう。自分で作ったモデルが動いていると思えば、感慨もひとしおだ。

まとめ

XIAO ESP32S3 Senseを実際に使ってみて感じたのは、Arduino IDEを中心とした開発環境の扱いやすさだ。電子工作経験者であればこれまでの延長として、ESP32シリーズの知見も生かした開発に挑戦できるだろう。

加えて、SenseCraft AIによるブラウザベースのモデル開発とデプロイのスムーズさも印象的だった。撮影した画像をそのまま学習データとして利用できる手軽さや、検出結果をGPIOに直感的に結びつけられる操作性は、AI画像解析に初めて触れるユーザーの敷居も下げてくれる。短時間の授業やワークショップでも、AIの仕組みや醍醐味を実感できるだろう。

今回のハンズオンでは触れきれなかった、内蔵マイクによる音声入力、microSDカードへのデータ保存、外部アンテナによる通信安定化、SenseCraft AIを介したMQTT連携といった機能など、本格的なIoT開発に役立つ機能も多数備えている。コンパクトさと拡張性を兼ね備えたボードとして、気軽な体験から実運用を見据えたプロトタイピングまで幅広く活用できる、心強い一枚だ。

本記事はSponsored記事です。
提供:Seeed Studio / Seeed 株式会社

00_header

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!

ライター/編集者。大学で3Dプリンターと出会いものづくりの面白さに目覚め、デジタルファブリケーションの世界へ。卒業後、研究員として2年半ほど従事したのち、ものづくりを中心としたライターとして独立。
2023年には墨田区でファブ施設「京島共同凸工所」の運営をスタート。文章と場づくりを行き来しながら、街での生活を満喫している。工房での日々を綴った自主制作本「京島の十月」が販売中。

目次