01. ハードウェアの基礎
「電子工作は初めて」を前提に、スタックちゃんが何でできているかを噛み砕いて説明する。
スタックちゃん K151 の中身
スタックちゃん本体は大きく3つの部品でできている。
┌─────────────────────────┐
│ M5Stack CoreS3 │ ← 「脳みそ」+ 画面 + マイク・スピーカー
│ ┌───────────────────┐ │
│ │ ESP32-S3 (CPU) │ │ Wi-Fi/BluetoothもこのCPUに内蔵
│ │ 320x240 LCD │ │
│ │ マイク・スピーカー │ │
│ │ USB-C │ │
│ └───────────────────┘ │
└──────────┬──────────────┘
│ I2C / GPIO で接続
▼
┌─────────────────────────┐
│ サーボ駆動ボード │ ← 首を振るための小さなボード
│ (パンチルトモジュール) │
└──────────┬──────────────┘
│
┌───────┴───────┐
▼ ▼
サーボ×2 (左右) サーボ (上下)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個使う
USB-C ケーブルを Mac に挿すと何が起きるか
物理的には1本のケーブルだが、中では3つの仕事を同時にやっている:
Mac ────── USB-C ────── CoreS3
① 電力供給(5V)
Mac の USB ポートから給電。バッテリーがあっても給電優先。
② シリアル通信(双方向)
Mac ↔ CoreS3 でテキストデータをやり取りする。
printfデバッグの出力もここを流れる。
Mac 側からは /dev/cu.usbmodemXXXXX という「仮想シリアルポート」として見える。
③ フラッシュ書き込みモード切替
Mac から特定の信号を送ると、CoreS3 を「ファーム書き込みモード」に
入れることができる。普段は通常起動するが、書き込み時だけこの線で切替。なぜ /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
- リセットボタン: 同じく左側面の小さいボタン。短押しで再起動
用語まとめ
| 用語 | 意味 |
|---|---|
| GPIO | General Purpose I/O。マイコンから出ている「自由に使える線」。HIGH/LOW を出したり読んだりできる |
| I2C | アイ・スクエア・シーと読む。マイコンと周辺チップを2本の線で繋ぐ通信規格。サーボボード・センサー類はだいたいこれ |
| UART | ユー・アート。2本の線(送信・受信)でテキストを流す古典的な通信。USBの内側で使われている |
| PSRAM | Pseudo Static RAM。CPU 内蔵 RAM だけでは足りないときに増設する外付けメモリ |
| ファームウェア | マイコンに書き込む「OS兼アプリ」を一体化したもの。電源ONで自動起動する |