Embedded Module Architecture
マイコンのコードを、機能ごとに切って組み立てる
- 組み込み
- 設計パターン
どんなもの
Arduino フレームワークが動くマイコン(ESP32・STM32・AVR など)で使える、モジュール設計パターンのリファレンス実装です。カメラ・センサー・LED・LCD・モーターといったハードウェアを、共通インターフェース IModule で同じように扱えるようにします。
IModule によるライフサイクルの統一、SystemData でのデータ連携、Config での設定の外部注入、3 フェーズ実行モデル、通信バスの一元管理、の 5 つを設計要素として定義しています。
使った技術
- 言語
- C++
- 対象
- Arduino フレームワーク(ESP32 / STM32 / AVR)
- ドキュメント
- LaTeX(教科書・実装ガイド・設計仕様書)
開発の記録
リポジトリのコミット履歴から出した数字です(2026 年 9 月 23 日時点)。
- 開発期間
- 2026 年 3 月 〜 2026 年 4 月
- コミット数
- 125
作った背景と、工夫したところ
教科書・実装ガイド・設計仕様書の 3 冊を LaTeX で書き、C++ のクラスに不安がある人でも順に読めるようにしました。
コードを読むだけでは伝わらない「なぜその分け方にするのか」を、文章の側に置いてあります。
このページにまとめたリポジトリ
hackathon-template
ハッカソンやチーム開発を始めるときの土台を一式そろえたテンプレートリポジトリです(MIT ライセンス)。フォルダの分け方、Git の進め方、書き始める前に決めておくことの記入用の表、評価と検証の型が入っていて、規格ではなく一例として、使わないフォルダは消して使う前提で書いています。
このページにまとめたのは、マイコンのコードを置く firmware/ が EMA を土台にしているからです。全ノード共通の common/lib/ に EMA の骨格とサンプルのモジュールを置き、複数のマイコンで分担する例として node_01 から node_05 までを並べています。
2026 年 4 月 15〜16 日に作り、8 月 23〜24 日にまとめて手を入れています。8 月には EMA の骨格を firmware/ に戻し、CI の PlatformIO のビルドを platformio.ini のあるフォルダを探して回す形に変えて、フォルダを足してもビルドから漏れないようにしました。同じ日に、公開してよいものと別の private のリポジトリへ分けるものの線引きを README に置き、push と PR のたびにメールアドレスや API キー、手元の絶対パスなどが混ざっていないかを調べるスキャンを CI に足しています。
開発期間 2026 年 4 月 〜 2026 年 8 月・コミット 38(2026 年 10 月 23 日時点)
ほかのもの
mcr_camera_2026base
マイコンカーを走らせる土台を、そのまま配れる形に
tako
AI エージェントの群れを 1 タブで見張るターミナル