このページの目次
MCU 選定と開発エコシステム
なぜ選定が必要なのか
部品の学習は終わり、回路解析もできるようになった。しかし、実際にものを作る際、最初のステップは「どのチップを選ぶか」である。
選定を誤る → パフォーマンス不足/高価/在庫切れ/エコシステムが貧弱 → プロジェクトの中止
メジャーな MCU ファミリー
STM32 (STマイクロエレクトロニクス) — 産業用・汎用王者
製品ラインアップ (コア別):
STM32F0/F1: Cortex-M0/M3, 入門向け (48~72MHz)
STM32F4: Cortex-M4 + FPU + DSP, パフォーマンス級 (84~180MHz)
STM32F7: Cortex-M7, 高性能 (216MHz+)
STM32G0/G4: Cortex-M0+/M4, 低消費電力の主流
STM32H5/H7: Cortex-M33/M7, フラッグシップ (250MHz+)
STM32L0/L4/L5: 超低消費電力
STM32WB/WL: ワイヤレス (BLE/LoRa)
STM32MP1: Cortex-A7 + M4, Linux + RTOS 双核
命名規則: STM32F407VGT6
F=シリーズ 407=型番 V=パッケージ(100pin) G=フラッシュ容量(1MB) T=LQFP 6=温度範囲
エコシステム:
ツール: STM32CubeMX (ピン設定+クロックツリー+コード生成)
IDE: STM32CubeIDE (無料), Keil, IAR
HAL/LL ライブラリ: 公式ドライバ
OpenOCD + ST-Link デバッグ
ESP32 (Espressif) — WiFi/BLE コスパ王者
ファミリー:
ESP32 (Xtensa LX6): デュアルコア 240MHz, WiFi 4 + BLE 4.2
ESP32-S3: シングルコア Xtensa LX7, WiFi 4 + BLE 5, AI加速
ESP32-C3: シングルコア RISC-V, WiFi 4 + BLE 5, 低消費電力
ESP32-C6: RISC-V, WiFi 6 + BLE 5.3 + Thread/Zigbee
ESP32-S2: シングルコア, WiFi のみ (BLEなし), USB OTG
特徴:
✓ WiFi + BLE 統合 → IoT の第一選択
✓ 低価格 (ESP32-C3 モジュール ~¥8)
✓ Arduino / ESP-IDF の二重エコシステム
✗ ADC が非線形 (精密測定には不向き)
✗ 消費電力は nRF に劣る
✗ ピン数が少ない (特に ESP32-C3, GPIO が限られる)
ESP を選ぶべきシナリオ:
- WiFi または BLE が必要
- 低コストな IoT
- 迅速なプロトタイピング (Arduino エコシステム)
- スマートホーム / センサーノード
nRF52/nRF53 (Nordic) — 低消費電力ワイヤレスの基準
ファミリー:
nRF52832: Cortex-M4F, BLE 5.0 (定番)
nRF52840: Cortex-M4F, BLE 5.0 + Thread/Zigbee + USB
nRF52833: nRF52840 の簡易版 (USBなし, フラッシュ小)
nRF5340: デュアルコア M33 (app+network), BLE 5.4 + Thread + LE Audio
nRF52810: 入門向け BLE
特徴:
✓ 極めて低い消費電力 (BLE接続時 μA 級)
✓ RF性能が優れている
✓ Zephyr RTOS のネイティブサポート
✗ 高価 (ESP32 の 2~3倍)
✗ WiFi なし (BLE/Thread/Zigbee のみ)
✗ 学習曲線が急 (Zephyr/nRF Connect SDK)
nRF を選ぶべきシナリオ:
- バッテリー駆動の BLE デバイス (数ヶ月~数年稼働)
- Thread/Zigbee + BLE が必要
- 消費電力に厳格な要件がある
- 製品化レベル (プロトタイプではない)
RP2040 (Raspberry Pi) — デュアルコア PIO の黒馬
仕様:
デュアルコア Cortex-M0+ @133MHz
264KB SRAM (非常に大きい!)
内蔵フラッシュなし (外部 QSPI 接続, 最大 16MB)
PIO (Programmable IO): 8つのステートマシン, 任意のプロトコルをエミュレート可能!
小売価格 ~$1
特徴:
✓ 極めて安価
✓ PIO が非常に柔軟 (VGA 出力 / DVI / カスタムプロトコル)
✓ ドキュメントとコミュニティが非常に良い
✓ 大容量 SRAM
✗ WiFi/BLE なし (外部接続が必要)
✗ 内蔵フラッシュなし (BOM コスト増加)
✗ M0+ のパフォーマンスは普通
✗ DAC なし, ADC は普通
RP2040 を選ぶべきシナリオ:
- I/O の柔軟性が必要 (PIO で各種プロトコルをエミュレート)
- 低コスト・大量生産
- 教育・授業用
- Raspberry Pi エコシステムとの連携
ATmega / ATtiny (Microchip) — Arduino の魂
ATmega328P: Arduino Uno の心臓部, 8bit AVR @16MHz
ATmega32U4: USB 内蔵, Arduino Leonardo/Micro
ATtiny85: 8pin, 極めて小規模なプロジェクト向け
特徴:
✓ Arduino エコシステム (膨大なライブラリとチュートリアル)
✓ 5V 許容 (3.3V 時代の清流)
✓ シンプルで、習得障壁がゼロ
✗ 性能が極めて低い (8bit, 16MHz, RAM 2KB)
✗ 割高 (性能に対して)
現在の位置づけ: 極めて単純なプロジェクト / 5V システム / 教育
実際のプロジェクト: 基本的に ESP32/STM32/RP2040 に置き換えられている
選定意思決定木
開発ボード推奨
| チップ | 開発ボード | 価格 | デバッガ |
|---|---|---|---|
| STM32F4 | STM32F407G-DISC1 | ~$25 | 基板搭載 ST-Link |
| STM32F1 | Blue Pill (STM32F103C8T6) | ~$2 | ST-Link が必要 |
| STM32G0 | Nucleo-G0B1RE | ~$15 | 基板搭載 ST-Link |
| ESP32 | ESP32-DevKitC / NodeMCU | ~$5 | 内蔵 USB-UART |
| ESP32-C3 | ESP32-C3-DevKitM-1 | ~$8 | 内蔵 USB-JTAG |
| nRF52840 | nRF52840-DK | ~$40 | 基板搭載 J-Link |
| nRF52840 | Seeed XIAO nRF52840 | ~$10 | 内蔵 |
| RP2040 | Raspberry Pi Pico | ~$4 | デバッガが必要、または USB ドラッグ&ドロップ |
| ATmega | Arduino Uno R3 | ~$25 | 内蔵ブートローダ |
ツールチェーン早見表
| チップ | IDE | デバッグ | 書き込み |
|---|---|---|---|
| STM32 | STM32CubeIDE / PlatformIO | ST-Link + OpenOCD | ST-Link / DFU |
| ESP32 | PlatformIO / Arduino / ESP-IDF | 内蔵 USB-JTAG (C3/S3) | USB UART |
| nRF52 | VS Code + nRF Connect | J-Link / DAP-Link | J-Link / DFU |
| RP2040 | VS Code + Pico SDK | Picoprobe / USB ドラッグ&ドロップ | USB ドラッグ&ドロップ |
| ATmega | Arduino IDE / PlatformIO | デバッガが必要 | USB ブートローダ |
推奨入門ルート
キーワード: STM32, ESP32, nRF52, RP2040, ATmega, Arduino, Cortex-M, RISC-V, 選定, 開発ボード