6 分で読了 #hardware #embedded-systems
このページの目次

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 に置き換えられている

選定意思決定木

MCU 選定意思決定木: 要件に基づき段階的にフィルタリング WiFi が必要? Yes ESP32 (C3/S3 を要件に合わせて選択) No BLE + 究極の低消費電力が必要? Yes nRF52840 No 高性能 / 豊富な周辺機器? Yes STM32F4 / H7 No 超低コスト + I/O の柔軟性? Yes RP2040 No 究極のシンプルさ / 5V / 教育? Yes ATmega328P (Arduino) No 具体的なプロジェクト要件による 意思決定の順序は優先順位である: まず WiFi を確認し、次に BLE 低消費電力、その後パフォーマンスと周辺機器、さらにコストと I/O、 最後にシンプルさと使いやすさを確認する——上から下へ段階的にフィルタリングし、条件に合致した時点で終了。

開発ボード推奨

チップ開発ボード価格デバッガ
STM32F4STM32F407G-DISC1~$25基板搭載 ST-Link
STM32F1Blue Pill (STM32F103C8T6)~$2ST-Link が必要
STM32G0Nucleo-G0B1RE~$15基板搭載 ST-Link
ESP32ESP32-DevKitC / NodeMCU~$5内蔵 USB-UART
ESP32-C3ESP32-C3-DevKitM-1~$8内蔵 USB-JTAG
nRF52840nRF52840-DK~$40基板搭載 J-Link
nRF52840Seeed XIAO nRF52840~$10内蔵
RP2040Raspberry Pi Pico~$4デバッガが必要、または USB ドラッグ&ドロップ
ATmegaArduino Uno R3~$25内蔵ブートローダ

ツールチェーン早見表

チップIDEデバッグ書き込み
STM32STM32CubeIDE / PlatformIOST-Link + OpenOCDST-Link / DFU
ESP32PlatformIO / Arduino / ESP-IDF内蔵 USB-JTAG (C3/S3)USB UART
nRF52VS Code + nRF ConnectJ-Link / DAP-LinkJ-Link / DFU
RP2040VS Code + Pico SDKPicoprobe / USB ドラッグ&ドロップUSB ドラッグ&ドロップ
ATmegaArduino IDE / PlatformIOデバッガが必要USB ブートローダ

推奨入門ルート

推奨入門ルート: 3つの出発点、それぞれの学習パス 完全初心者 Arduino Uno 最も早く結果が見える ESP32 WiFi/BLE を追加 STM32 基礎を理解する プログラミング経験あり ESP32 + PlatformIO STM32 HAL 周辺機器レジスタを理解する 深い内部理解を追求 STM32 Blue Pill ボトムアップ レジスタプログラミング リンカスクリプトを自作 3つのルートは最終的に同じ地点へ向かう: 初心者は Arduino で自信をつけ、プログラミング経験者は ESP32 から直接始め、 深い内部理解を追求する人が初めてボトムアップ レジスタプログラミングとリンカスクリプトを学ぶ必要がある。

キーワード: STM32, ESP32, nRF52, RP2040, ATmega, Arduino, Cortex-M, RISC-V, 選定, 開発ボード