Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AIをリアル世界に解き放つ 〜M5Stack×AIであなたのアイディアを手の平に〜

 AIをリアル世界に解き放つ 〜M5Stack×AIであなたのアイディアを手の平に〜

AIの登場で、私たちのソフトウェア開発は大きく様変わりしました。

しかし、その変化はソフトウェアの世界に留まっていることが多いのではないでしょうか。 本セッションでは、AI活用のリアル世界への入口として、M5Stackのような小型デバイスに注目します。組み込みやIoTは、多くのWebエンジニアにとって馴染みの薄い技術スタックです。

その壁を、AIがどのように吸収し、乗り越えさせてくれるのか——実際に光り、喋り、動くデバイスを題材に紹介します。 リアルタイムデモを中心に、みなさんとAIの可能性とワクワク感を一緒に体験出来る場となればと思います。

Avatar for 濱田孝治

濱田孝治

October 24, 2026

More Decks by 濱田孝治

Other Decks in Technology

Transcript

  1. 濱田孝治(ハマコー)製造ビジネステクノロジー部 スマートファクトリーチーム マネージャー 製造業向けAI・クラウドソリューションの企画 導入支援 コミュニティ運営 • JAWS-UG コンテナ支部運営 •

    Grafana Meetup Co-organizer, Grafana Champion AWS認定関連 • SAP, DOP, DBS, SOA, SAA, DVA, SCS, CLF, AIF, MLA, MLS • AWS APN Ambassador 2020, AWS Top Engineer 2025, 2026 執筆書籍 • みんなのAWS • SoftwareDesign 2022年11月号 コンテナ特集 2
  2. Agenda • M5Stackとは? • StackChanとは? • StackChanのカスタマイズ方法 ← 会場リクエスト求む •

    ライブデモ • 基本的なソースコードの構造解説 • 追加のミニデモ ← 会場参加型 • 更なる活用のアイディア 9
  3. 12 そもそも「マイコン」とは 特定用途に最適化された、小さなコンピューター 1つのチップ 電源オンですぐ動く ピンから直接、電気 CPU・メモリ・入出力の回 路が、1つのチップに全部 入っている 書き込んだ1つのプログラ

    ムだけが動く。 LEDを光らせる、モーター を回す、センサーを読む、 がプログラムから直接でき る(GPIO) OSは無いか、もしくは FreeRTOSなどの軽量のも の。 家電・リモコン・おもちゃ…身の回りのあらゆる機械はマイコン
  4. 13 マイコンの代表格「ESP32-S3」 一般的なノートPCのCPUと比べて性能は遥かに小さい 一般的なノートPC(目安) ESP32-S3(StackChan・StopWatch) CPU Intel/AMD(x86)、Appleシリコン (Arm) Xtensa LX7(x86でもArmでもない)

    クロック 数GHz 240MHz コア数 8〜十数コア 2コア メモリ 16GB前後 内蔵512KB(+外付けPSRAM 8MB) ストレージ SSD 数百GB〜 フラッシュ 16MB OS macOS/Windows/Linux なし(またはFreeRTOS) 無線 別チップで搭載 Wi-Fi・Bluetooth LEを内蔵 外とのつながり USBなどの規格越し プログラムできるピン45本
  5. 16 M5Stackの代表的な製品 同じESP32・同じ開発環境で、様々な機器が提供されている Core Stick Atom Cardputer CoreS3・Core2・Tab5 画面付きの定番 StickC-Plus・StickS3

    持ち歩けるスティック型 AtomS3R・Atom Voice 約2.4cm角の極小 Cardputer-Adv キーボード付き Dial E-Paper AIハードウェア 今日の主役 Dial 回すダイヤルのUI PaperS3・CoreInk 電子ペーパー Module LLM・LLM630 デバイス上でLLM StopWatch・StackChan
  6. 17 StopWatch(2026年5月発売) 丸い有機ELの、手の平デバイス 仕様 画面 1.75インチ丸型 有機EL タッチ( 466×466) SoC

    ESP32-S3 入っているもの マイク・スピーカー・6軸IMU・振動 ・時計 電源と重さ 450mAh、39g 拡張 Groveポート、背面端子、マグネッ ト
  7. 20 挿せば使えるUnitが大量にある センサー アクチュエーター 表示・入力 オーディオ 距離・温湿度・CO2 → 近づいたら振り向く ブザー・リレー・モーター

    → 家電の電源を入れる キーボード・OLED・ボタン → 文字で話しかける シンセ・MIDI → 歌う、演奏する カメラ 無線・通信 拡張 …ほかにも 画像認識付きカメラ → 物や人を見分ける GPS・LoRaWAN・RS485 → 工場の機器とつなぐ I2Cハブ・サーボドライバ → 腕や手を足す まだまだたくさん
  8. 23 コミュニティが育てたロボット 1人のOSSから、みんなのロボットへ 2021 その後 現在 1人のOSS みんなで育てる 公式製品に Shinya

    Ishikawa(ししか わ)氏が公開 自作キットが広まる AIで会話できるように 2023年 組み立てキット発売 #スタックチャン で共有 M5Stackの公式キット K151 今日のデモの「顔」のライブラリも、作者によるもの(M5Stack_Avatar)
  9. 24 M5Stackの公式製品に 「The First Co-Created Open-Source AI Desktop Robot」 4,141

    Kickstarterの支援者 人 約46 倍 目標額に対して集まった額 コミュニティと共に作った(Co-Created)ロボット。 今日使うのはこの公式キット K151
  10. 25 StackChanの中身(K151) 光る・喋る・動く・感じる・繋がるが一通りこれだけでできる 動く 光る 喋る フィードバックサーボ2軸 RGB LED 12個

    スピーカー・マイク2つ 水平360°・垂直90°。今の角度も 読める 左右6個ずつ 1Wスピーカー 感じる 感じる 繋がる 頭のタッチ・カメラ 9軸IMU・近接・照度 NFC・赤外線・Wi-Fi 3ゾーンのタッチ、0.3MPカメラ 持ち上げた、近づいた、が分かる 赤外線で家電も操作できる 頭脳はCoreS3(ESP32-S3)。画面2.0インチ、バッテリー550mAh
  11. 29 StackChanのカスタマイズ方法 今日はあえて、「C++で直接」の方法を使っています 方法 何を書くか Webエンジニアから見た距離 ① 工場ファームのまま設定 書かない(スマホアプリ) 一番近い。設定の範囲まで

    ② UiFlow2 ブロック(MicroPython) 近い。ブラウザで完結 ③ 元祖スタックチャン JavaScript/TypeScript 近い。npmで完結 ④ Arduino(今日) C++ 遠い。C++・ボードパッケージ・ピン ⑤ ESP-IDF/PlatformIO C/C++ 一番遠い。本格的な組み込み C++ ハードを全部触れる ターミナルで完結 ①〜③はWebエンジニアでも入りやす い道。あえて遠いC++で「AIなら書け る」を見せる 公式ライブラリで、首・LED・タッチ・ NFC・赤外線まで直接扱える arduino-cliなので、Claude Codeがビ ルドと書き込みまで自走できる
  12. 31 ボードパッケージの中身 ESP32向けの「コンパイラ+ランタイム+デプロイツール」 1 3 クロスコンパイラ ≒ tsc 2 コア

    ≒ Node.js xtensa-esp-elf-gcc / g++ Arduino.h + ESP-IDF(SDK) Mac上で、ESP32の機械語を出す WiFi・WebServerなども同梱 ボード設定 ≒ 設定ファイル 4 書き込みツール boards.txt / pins_arduino.h esptool SDA=2・SCL=1 → Port A(赤)のピン USBでフラッシュに書き込む $ arduino-cli compile --fqbn m5stack:esp32:m5stack_cores3 ≒ デプロイ パッケージ : チップ系統 : ボード
  13. 32 Groveポート接続機器の制御もできる 部品の種類は膨大だが、現在はライブラリ選定からコードを書くところまでAIに お願い可能 挿す 頼む 動く CO2センサーのUnitを Groveポートへ 「1000ppmを超えたら

    困った顔をして」 ライブラリ探しから コードまでAIが書く M5UnitUnified どのUnitも同じ書き方で扱える共通ライブラリ Units.add(unit, Wire); Units.begin(); Units.update();
  14. 37 開発の全体像 依頼してから実機が動くまで、約1分 Claude Code arduino-cli USBケーブル StackChan 日本語で依頼 ESP32向けにビルド

    書き込み 光る・喋る・動く 項目 値 ボードパッケージ m5stack:esp32 3.3.10(ESP32向けのコンパイラ一式) ライブラリ M5StackChan 1.1.1(首・LED・タッチ)、M5Stack_Avatar 0.10.0(顔) かかる時間 ビルド約10秒+書き込み約9秒。AIの作業込みで1回約1分
  15. 38 リポジトリの中身 github.com/HamadaKoji/stackchan-demo stackchan-demo/ ├── CLAUDE.md ├── sketches/ │ └──

    stackchan_base/ │ ├── stackchan_base.ino │ └── voice_*.h └── tools/ ├── make_voice.py └── reset_demo.sh CLAUDE.md AIへの取扱説明書 *.ino 本体のプログラム(C++) voice_*.h セリフの音声データ tools/ 音声づくり・デモのリセット
  16. 39 スケッチの基本形:setup と loop 「起動時に1回」と「ずっと繰り返す」の2つだけ void setup() { M5StackChan.begin(); avatar.init();

    } // 初期化 // 顔を出す void loop() { M5StackChan.update(); if (TouchSensor.wasClicked()) { greet(); // 挨拶する } } setup() Webで言えば 初期化処理 loop() Webで言えば イベントループ
  17. 40 光る・喋る・動く・顔は、それぞれ数行 面倒な部分は、ライブラリが全部隠してくれる やりたいこと コード メモ 首を動かす Motion.moveYaw(300, 400); 10=1度、速さ0〜1000

    首を傾ける Motion.movePitch(500, 300); 上下は5〜85度で LEDを光らせる setRgbColor(0, 168, 0, 0); 12個を番号で指定 表情を変える avatar.setExpression(Happy); 6種類 吹き出し avatar.setSpeechText("…"); 日本語OK 喋る M5.Speaker.playWav(voice, len); WAVを再生 撫でられた? TouchSensor.wasClicked(); スワイプも区別
  18. 41 喋る仕組み:Macの音声合成を埋め込む クラウドもAPIキーも使わない。オフラインで喋る セリフ say WAV voice_xxx.h ビルド テキスト Macの音声合成

    16kHz・16bit C++の配列に ファームに埋め込む 約100KB ネットに左右されない その代わり 2〜3秒のセリフで。フラ ッシュ16MBに十分入る 会場のWi-Fiが不安定でも 喋れる セリフはビルド時に決まる その場で考えるならLLMへ
  19. 42 AIへの取扱説明書:CLAUDE.md コンテキスト設計は、組み込みでもそのまま効く # Claude向けガイド ## デバイス 首の可動範囲、LEDの数… ## 進め方

    ビルドと書き込みまで 自分で実行して終える ## ビルド・書き込みコマンド ## 起点ファームと音声 「セリフを変えて」の一言で… 1 音声データを生成 2 コードを修正 3 ビルド 4 書き込み 書いておけば、首の可動範囲も守ってくれる
  20. 43 AIが書いたコードの例 「1から10まで数えて、3の倍数でアホになって」 void countUp() { for (int i =

    1; i <= 10; i++) { if (i % 3 == 0) { avatar.setExpression(Doubt); setLeds(168, 0, 168); // 紫 Motion.movePitch(450, 300); speak(...); // さ〜ん〜! } else { avatar.setExpression(Happy); setLeds(0, 168, 0); // 緑 speak(...); // いち } } } 自分では 1行も 書いていない 読めば分かる
  21. 46 ミニデモ:curlでロボットを動かす いつものHTTPで、物理世界が動く $ curl http://stackchan.local/alert $ curl http://stackchan.local/ok $

    curl "http://stackchan.local/say?text=…" /alert 首を振って赤く光る「アラートだよ!」 /ok 虹色に光って「解決したよ」 /say 吹き出しに好きな文字 これをGitHub ActionsやCloudWatchのアラートにつなげば…
  22. 47 ミニデモ:GitHubのスターで喜ぶ スターがつくと、ハマコーStackChanが喜びます!! ★ github.com/HamadaKoji/ stackchan-demo 反応まで 数十秒 1 GitHub

    APIでスター数を定期的に確認 2 増えたら虹色に光って踊る 3 「スターありがとう!嬉しい!!」
  23. 50 個別の機能だけでも様々なアイディアを実現 CIの相棒 アラート係 会議の秘書 話し相手 首・表情・LED 首・スピーカー スピーカー・画面 落ちたらうなだれる

    アラートで首を振る 次の会議を読み上げ LLMと会話する 受付ロボ スマートリモコン 入退室チェック オフラインAI カメラ・首 人が来たら挨拶 赤外線 エアコンをつける NFC 社員証で名前を呼ぶ マイク・LLM Module LLM デバイス上でLLM
  24. 51 例:AIエージェントの机上の相棒 Claude Codeの作業を、机の上で知らせてくれる シーン(イメージ) 大きめの修正をClaude Codeに頼んで、席を立つ 戻ると、スタックチャンが困った顔で青く光っている 「ねえ、ファイルの削除していいか聞かれてるよ!」 許可して数分後、虹色に光ってうなずく

    「終わったよ!テストも全部通ったって!」 確認待ち 困った顔・青く光る 「確認お願い!」 完了 笑顔・虹色・うなずく 「終わったよ!」 エラー 悲しい顔・赤く光る 「失敗しちゃった…」 Claude Code hooks curl StackChan 作業の終了・確認待ち 決めたコマンドを自動実行 今日のミニデモと同じ 振り向く・光る・喋る hook起点で動かすことで、ITの結果を受け取って動作させることが簡単にできる
  25. 52 例:部屋の「AI執事」になる ITはLLM、現実世界は赤外線を利用 LLMが、使う道具を自分で選ぶ シーン(イメージ) 帰宅して「ただいま、暑い…」とつぶやく 「おかえり!室温29度だね。冷房を26度でつけるね 」 赤外線で、エアコンが「ピッ」と鳴る 「明日は朝9時から会議だから、早めに寝てね」

    室温を読む 温湿度センサー(Groveに挿すだけ) エアコンをつける 赤外線を送る(StackChanに内蔵) 予定を調べる カレンダーAPI 「暑い…」 音声認識 LLM 道具を使う 返事 マイク 言葉を文字に 意図をくみ取る センサー・赤外線・API 喋る・首を振る LLMのtool useそのもの。道具の中身が、Web APIから赤外線やセンサーになっただけ
  26. 53 例:Unitを足すと腕が生える 首と画面だけだったロボットに身振り手振りが増える 挿すUnit シーン(イメージ) 受付のスタックチャンに、人が近づく くるっと振り向いて、小さな腕で手を振る 「いらっしゃい!セッション会場はあっちだよ」 腕で方向を指し示す 嬉しいときはバンザイ、困ったら頭をかく

    サーボドライバ I2C 腕・手を最大8個 距離センサー I2C 人が近づくのを知る RGB LED・ブザー GPIO 光と音で気持ちを強める 人が近づく StackChan 首 腕 表情・声 距離センサー 気づく 振り向く 手を振る・指す 気持ちを伝える 腕の身振りも、話す内容に合わせてAIに決めさせられる
  27. 54 例:Unitを足すと工場の見守りロボを実現 工場現場での一つの利用例として 挿すUnit シーン(イメージ) ラインの横で、制御盤とつながって機械を見守る 3号機の温度が、じわじわ上がり始めると… 「3号機、いつもより温度が高いよ」 「ベアリングの点検、前回から2か月たってるね」 事務所の保全担当のスマホにも通知が飛ぶ

    RS485 UART 機械(PLC)と話す 温湿度センサー I2C 現場の環境も測る LoRaWAN・PoE 工場でも安定して送る 工場の機械 RS485 StackChan クラウド 保全担当 PLC 産業用の通信 作業者に声で 蓄積・LLMで分析 スマホに通知 ハードの信頼性の問題があるのでそのままは使えないが 概念実証としては検証の余地はある
  28. 59