本文へスキップ
takushio2525

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 日時点)

ほかのもの

公開しているものの一覧へ戻る