Skip to content

01. ハードウェアの基礎

「電子工作は初めて」を前提に、スタックちゃんが何でできているかを噛み砕いて説明する。

スタックちゃん K151 の中身(本プロジェクト構成)

スタックちゃん本体は大きく3つの部品でできている。本プロジェクトではさらに Module-LLM(背面モジュール)と Bottom3(GROVE 拡張ベース)を追加し、複数の Unit を Bottom3 経由で接続する。

スタックちゃんの内部構成

追加コンポーネントの役割

パーツ役割接続
Module-LLM (AX630C)オンデバイス LLM / STT / TTSCoreS3 背面の Module バス (UART)
Bottom3バッテリー+ GROVE 拡張ハブ(Port.A/B/C)CoreS3 底面に積む
FAN V1.1Module-LLM 冷却Bottom3 経由
TMOS PIR / ToF Rangingセンサー UnitBottom3 Port.A (I2C)
Unit IR家電リモコン送受信Bottom3 Port.B
Unit MIDI効果音・通知音Bottom3 Port.C (UART)

詳しい在庫・接続状況は パーツ資産管理ページ を参照。

ESP32-S3 とは

  • CPUチップ の型番。ESP32 シリーズの中で比較的新しい世代
  • Wi-Fi と Bluetooth が内蔵されている(別チップ不要)
  • メモリは内蔵 SRAM 512KB + 外付け PSRAM 8MB(CoreS3 の場合)
  • 我々のコードは最終的にこのチップの上で動く

CoreS3 とは

  • M5Stack社の製品名。中身に ESP32-S3 + LCD + マイク + スピーカー + IMU + バッテリーをまとめて、ケースに入れたモジュール
  • USB-C を挿すと充電・通信どっちもできる
  • LCDサイズは 2インチ・320×240 ピクセル

サーボとは

  • 角度指定で動くモーター。0°〜180°のどの位置に向くかを指示できる
  • 普通のモーターは「回る/回らない」しか制御できないが、サーボは「45°の位置で止めて」と命令できる
  • スタックちゃんでは首を左右に振る/上下に向ける用途で2〜3個使う

Module-LLM (AX630C) とは

  • CoreS3 の背面に積む LLM 推論モジュール(M5Stack 純正)
  • 中身: AX630C SoC、NPU 3.2 TOPS、LPDDR4X、eMMC を1枚に統合
  • Qwen2.5-0.5B / Llama3.2-1B / Whisper クラスのモデルがオンデバイスで動く
  • CoreS3 とは UART (Module バス) で通信。CoreS3 から「これ答えて」と投げて結果を受け取る
  • Wi-Fi なしでも対話・STT/TTS が完結する のが最大の利点
  • 発熱が大きいので FAN V1.1 で冷却するのが推奨

Unit と GROVE コネクタ

  • Unit シリーズ = M5Stack 社が出しているモジュール式の周辺機器(センサー・アクチュエータ)
  • GROVE 4ピンコネクタ でケーブル1本でつなぐ
  • 中身は I2C / UART / GPIO のどれか
  • CoreS3 単体だと Port が1つしかないので、Bottom3 を底面に積んで Port.A / B / C に拡張するのが一般的

USB-C ケーブルを Mac に挿すと何が起きるか

物理的には1本のケーブルだが、中では3つの仕事を同時にやっている:

USB-C ケーブルが運ぶ3つの仕事

なぜ /dev/cu.usbmodemXXXXX なのか

  • macOS は USB-シリアル変換デバイスを「仮想的なシリアルポート」として扱う
  • /dev/cu.* という名前で生えてくる(cu = call-out, 古い UNIX の慣習)
  • 末尾の数字(例: 83301)はチップ固有の識別子。複数台繋ぐと別の番号になる
  • /dev/tty.* も同じデバイスを指すが、こちらは「相手からの呼び出し待ち」用なので普通使わない

確認コマンド

bash
# 繋がっているシリアルデバイスを一覧
ls /dev/cu.usbmodem*

# デバイスの正体(メーカー・型番)を見る
ioreg -p IOUSB -l | grep -E "USB Product Name|idVendor"

CoreS3 が見つかると以下のように出る:

"USB Product Name" = "USB JTAG_serial debug unit"
"USB Vendor Name" = "Espressif"

「Espressif」が出れば認識成功。Espressif は ESP32 を作っている会社。


給電と書き込みの注意

  • 充電だけしたいとき: USB-C を挿せば勝手に充電する。Mac じゃなくて USB アダプタでも OK
  • 書き込み中は抜かない: 途中で抜くとファームが壊れて起動しなくなる場合がある(復旧はできるが手間)
  • 電源ボタン: CoreS3 左側面のボタン。長押しで電源 OFF、短押しで ON
  • リセットボタン: 同じく左側面の小さいボタン。短押しで再起動

用語まとめ

用語意味
GPIOGeneral Purpose I/O。マイコンから出ている「自由に使える線」。HIGH/LOW を出したり読んだりできる
I2Cアイ・スクエア・シーと読む。マイコンと周辺チップを2本の線で繋ぐ通信規格。サーボボード・センサー類はだいたいこれ
UARTユー・アート。2本の線(送信・受信)でテキストを流す古典的な通信。USBの内側で使われている
PSRAMPseudo Static RAM。CPU 内蔵 RAM だけでは足りないときに増設する外付けメモリ
ファームウェアマイコンに書き込む「OS兼アプリ」を一体化したもの。電源ONで自動起動する

aieo-product / stack-chan project